diff --git a/dist/flexio.js b/dist/flexio.js index 8809936..101a52a 100644 --- a/dist/flexio.js +++ b/dist/flexio.js @@ -1,5 +1,5 @@ /*! - * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * Flex.io Javascript SDK v1.21.0 (https://github.com/flexiodata/flexio-sdk-js) * (c) 2018 Gold Prairie LLC */ (function webpackUniversalModuleDefinition(root, factory) { @@ -275,7 +275,7 @@ var Flexio = { this.pipes = __webpack_require__(30).getPipesObject(this); this.util = __webpack_require__(1).getUtilObject(this); this._http = null; - this.version = this.util.isNodeJs() ? __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"../package.json\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).version : "1.20.2"; + this.version = this.util.isNodeJs() ? __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"../package.json\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).version : "1.21.0"; var getPipeConstructor = __webpack_require__(31).getPipeConstructor; this.pipe = getPipeConstructor(this); diff --git a/dist/flexio.min.js b/dist/flexio.min.js index 1427e4e..016d041 100644 --- a/dist/flexio.min.js +++ b/dist/flexio.min.js @@ -1,5 +1,5 @@ /*! - * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * Flex.io Javascript SDK v1.21.0 (https://github.com/flexiodata/flexio-sdk-js) * (c) 2018 Gold Prairie LLC */ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Flexio=e():t.Flexio=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=2)}([function(t,e,n){"use strict";function r(t){return"[object Object]"===Object.prototype.toString.call(t)}function i(t,e,n){var o=Array.isArray(e)?e:e.replace(/(\[(\d)\])/g,".$2").split(".").filter(function(t){return t.length});return o.length?r(t)?i(t[o.shift()],o,n):n:void 0===t?n:t}function o(t,e){var n=Array.from(arguments);n.shift();for(var r=0;r<n.length;++r)for(var i in n[r])n[r].hasOwnProperty(i)&&(t[i]=n[r][i]);return t}function s(t,e){if(null==t||!Array.isArray(e))return{};for(var n,r={},i=0;i<e.length;++i)n=e[i],t.hasOwnProperty(n)&&(r[n]=t[n]);return r}t.exports={isPlainObject:r,assign:o,pick:s,get:i,isString:function(t){return"string"==typeof t||t instanceof String},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},isNil:function(t){return null==t},defaultTo:function(t,e){return null==t||t!==t?e:t},last:function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0},isFunction:function(t){return t instanceof Function}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i={};t.exports=i,i.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},i.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},i.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)},i.arrayBufferToString=function(t){if(this.isNodeJs())return t instanceof Buffer?t.toString("utf-8"):Buffer.from(t).toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var e,n=new Uint8Array(t),r="",i=n.length;for(e=0;e<i;++e)r+=String.fromCharCode(n[e]);return decodeURIComponent(escape(r))},i.callbackAdapter=function(t,e,n,r,i){"function"==typeof i?i(t,e):t?r(t):n(e)},t.exports.getUtilObject=function(t){return new function(){for(var e in i)i.hasOwnProperty(e)&&(this[e]=i[e]);this.debug=function(e){if(t.getConfig().debug){var e="flexio-sdk-js: "+e;console.log(e)}return this}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3);e.default=r},function(t,e,n){"use strict";var r=n(0),i=n(4),o={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},s={_init:function(){this.connections=n(29).getConnectionsObject(this),this.pipes=n(30).getPipesObject(this),this.util=n(1).getUtilObject(this),this._http=null,this.version=this.util.isNodeJs()?n(!function(){var t=new Error('Cannot find module "../package.json"');throw t.code="MODULE_NOT_FOUND",t}()).version:"1.20.2";var t=n(31).getPipeConstructor;this.pipe=t(this);var e=n(32).getConnectionConstructor;this.connection=e(this)},setup:function(t,e){return o=r.assign(o,{token:t},e),this._http=null,this._createHttp(),this},getConfig:function(){return r.assign({},o)},http:function(){return this._http||this._createHttp(),this._http},task:i,_createHttp:function(){var t={baseURL:o.baseUrl,headers:{Authorization:"Bearer "+o.token},insecure:!0===o.insecure};this._http=n(33).create(t)}};s._init(),t.exports=s},function(t,e,n){"use strict";var r=n(0),i=n(5),o=n(6),s=n(7),a=n(8),u=n(9),c=n(10),p=n(11),f=n(12),l=n(13),d=n(14),h=n(15),g=n(16),y=n(17),m=n(18),v=n(19),b=n(20),O=n(21),S=n(22),x=n(23),C=n(24),P=n(25),w=n(26),j=n(27),k=n(28),A=function(t,e){switch(r.get(t,"op","")){default:return w.toCode(t);case"create":return i.toCode(t,e);case"convert":return o.toCode(t,e);case"copy":return s.toCode(t,e);case"dump":return a.toCode(t,e);case"echo":return u.toCode(t,e);case"email":return c.toCode(t,e);case"execute":return p.toCode(t,e);case"filter":return f.toCode(t,e);case"foreach":return l.toCode(t,e);case"insert":return d.toCode(t,e);case"limit":return h.toCode(t,e);case"list":return m.toCode(t,e);case"merge":return g.toCode(t,e);case"mkdir":return y.toCode(t,e);case"read":return v.toCode(t,e);case"render":return b.toCode(t,e);case"request":return O.toCode(t,e);case"select":return S.toCode(t,e);case"sequence":return x.toCode(t,e);case"set":return C.toCode(t,e);case"sleep":return P.toCode(t,e);case"transform":return j.toCode(t,e);case"write":return k.toCode(t,e)}};t.exports={create:i,convert:o,copy:s,dump:a,echo:u,email:c,execute:p.execute,insert:d,filter:f,foreach:l,javascript:p.javascript,limit:h,list:m,merge:g,mkdir:y,python:p.python,read:v,render:b,request:O,select:S,sequence:x,set:C,sleep:P,task:w,transform:j,write:k,toCode:A}},function(t,e,n){"use strict";var r=n(0),i=function(t,e){if(Array.isArray(t))return{op:"create",params:{content_type:"application/vnd.flexio.table",columns:t}};var n={op:"create",params:{path:t}};return void 0!==e&&(Array.isArray(e)?n.params.columns=e:n.params.content_type=e),n};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.path)||void 0,o=JSON.stringify(n.content_type)||void 0,s=JSON.stringify(n.columns)||void 0;return void 0!==i?void 0!==s?"create("+i+", "+s+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==s?"create("+s+")":void 0!==o?"":void 0},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){return{op:"convert",params:{input:t,output:e}}};i.toCode=function(t,e){var n=r.get(t,"params.input",{}),i=r.get(t,"params.output",{});return"convert("+JSON.stringify(n)+", "+JSON.stringify(i)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e,n){var i={op:"copy",params:{from:t,to:e}};return r.isPlainObject(n)&&(i.params.options=n),i};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.from)||'""',o=JSON.stringify(n.to)||'""',s=n.hasOwnProperty("options")&&r.isPlainObject(n.options)?JSON.stringify(n.options):null,a="copy("+i+", "+o;return null!==s&&(a+=", "+s),a+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"dump",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"dump("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"echo",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"echo("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(!r.isPlainObject(t))throw"The first function parameter must be an object";if(!t.hasOwnProperty("to"))throw"The `to` parameter is required";if(!t.hasOwnProperty("body_text"))throw"The `body_text` parameter is required";return{op:"email",params:t}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"email("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){return"undefined"!=typeof process},o=function(t){try{return i()?Buffer(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},s=function(t){try{return i()?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},a=function(t){var e;try{e=t.toString(),e=e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))}catch(t){e=""}return e},u=function(t){if(r.isString(t))return t;if(r.isFunction(t)){var e;if(0==t.length)return"exports.flexio_handler = function(context) "+(e=a(t));if(e=t.toString(),"function"==e.substring(0,8))e=e.slice(8);else{var n=e.indexOf("=>"),i=e.indexOf("{");n>=0&&n<i&&(e=e.replace("=>s*{","{"))}return"exports.flexio_handler = function"+e}},c=function(){var t,e,n,i=Array.from(arguments),s=r.get(i,"[0]",null),a=r.get(i,"[1]",null),c=r.get(i,"[2]",null),p={};"python"==s||"javascript"==s?(t=s,e=a,null!==e&&void 0!==e||(e=""),n=c):(t="javascript",e=s,n=a),"javascript"==t&&(e=u(e)),p.lang=t;var f=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return e.match(f)?p.path=e:p.code=o(e),null!==n&&(p.integrity=n),{op:"execute",params:p}},p=function(){var t=Array.from(arguments);return t.unshift("javascript"),c.apply(this,t)},f=function(){var t=Array.from(arguments);return t.unshift("python"),c.apply(this,t)},l=function(t){var e=r.get(t,"params",{}),n=e.lang||"",i=s(e.code||"");switch(n){case"javascript":return-1!=i.indexOf("exports.flexio_handler")?(i=i.replace("exports.flexio_handler =",""),"javascript("+i.trim()+")"):"javascript("+JSON.stringify(i.trim())+")";case"python":return"python(`\n"+i+"\n`)";default:return"execute("+JSON.stringify(n)+", `\n"+i+"\n`)"}};t.exports={execute:c,javascript:p,python:f,toCode:l}},function(t,e,n){"use strict";var r=n(0),i=function(t){if(r.isNil(t))throw"The `filter` parameter is required";return{op:"filter",params:{where:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"filter("+(JSON.stringify(n.where)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(1),o=function(t,e){var n={op:"foreach",params:{}};return("string"==typeof t||t instanceof String)&&(n.params.spec=t),i.isPipeObject(t)?n.params.run=t.pipe.task:i.isPipeObject(e)&&(n.params.run=e.pipe.task),n};o.toCode=function(t,e){var n=r.get(t,"params",{}),i=[];return n.hasOwnProperty("spec")&&i.push(JSON.stringify(n.spec)),n.hasOwnProperty("run")&&i.push(e.task.toCode(n.run,e)),"foreach("+i.join(", ")+")"},t.exports=o},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n;return n=Array.isArray(e)?e:[e],{op:"insert",params:{path:t,values:n}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"path",void 0),o=r.get(n,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"limit",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"limit("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(Array.isArray(t))var e=t;else for(var e=[],n=0;n<arguments.length;++n)e.push(arguments[n]);return{op:"merge",params:{files:e}}};i.toCode=function(t,e){for(var n=r.get(t,"params",{}),i=r.get(n,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=e.merge.toCode(i[o],e);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"mkdir",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"mkdir("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"list",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"list("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"read",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"read("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n={};return r.isPlainObject(t)?n=t:r.isString(t)&&(n.url=t),r.isPlainObject(e)&&r.assign(n,e),{op:"render",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.url)||"";return delete n.url,0==Object.keys(n).length?"render("+i+")":"render("+i+", "+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments),e=r.get(t,"[0]",""),n=r.get(t,"[1]",{});return n=r.isPlainObject(r.get(t,"[0]",{}))?r.get(t,"[0]",{}):r.assign({},{url:e},n),{op:"request",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"url",""),o=Object.keys(n);return 1==o.length&&"url"==o[0]?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments);return 1==t.length&&Array.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[])),{op:"select",params:{columns:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return{op:"sequence",params:{steps:t}}});r.toCode=function(t,e){for(var n=[],r=0;r<t.params.items.length;++r){var i=t.params.items[r],o=e.task.toCode(i,e);i.hasOwnProperty("params")&&i.params.hasOwnProperty("lang")&&"python"!=i.params.lang&&(o=o.replace(/\n/g,"\n ")),n.push(o)}var n=["Flexio.pipe()"].concat(n);return n.join("\n .")},t.exports=r},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0),o=n(1),s=function(t,e){return o.isPipeObject(e)&&(e=e.pipe.task),{op:"set",params:{var:t,value:e}}};s.toCode=function(t,e){var n=i.get(t,"params",{}),o=i.get(n,"variable",""),s=i.get(n,"value","");return o=JSON.stringify(o),s="object"===(void 0===s?"undefined":r(s))&&null!==s&&s.hasOwnProperty("op")?e.task.toCode(s,e):JSON.stringify(s),"set("+o+", "+s+")"},t.exports=s},function(t,e,n){"use strict";var r=n(0),i=function(t){return t=r.defaultTo(t,10),{op:"sleep",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"sleep("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return t});r.toCode=function(t,e){return"task("+JSON.stringify(t,null,2)+")"},t.exports=r},function(t,e,n){"use strict";var r=n(0),i=function(t){var e=Array.from(arguments),n={operations:[]},i={},o=[],s=r.get(e,"[0]");return r.isPlainObject(s)?(1==e.length&&r.has(s,"operations")?(i=r.pick(s,["columns","operations"]),i=r.assign(n,i)):(o=[].concat(e),i={operations:o}),{op:"transform",params:i}):{op:"transform",params:{columns:void 0,operations:o}}};i.toCode=function(t,e){var n=t.hasOwnProperty("params")?t.params:{};return!n.hasOwnProperty("columns")&&n.hasOwnProperty("operations")&&Array.isArray(n.operations)&&1==n.operations.length?"transform("+JSON.stringify(n.operations[0])+")":"transform("+JSON.stringify(n)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"write",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"write("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0);n(1);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.connection))throw"Unknown connection object type";i=e.connection}return new Promise(function(e,r){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var s=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,s,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})}}}},function(t,e,n){"use strict";var r=n(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.pipe))throw"Unknown pipe object type";i=e.pipe}return new Promise(function(e,r){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var s=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,s,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})},this.run=function(){var e=Array.from(arguments);e.push(null,null,null);var n,i,o={},s=null;e[0]instanceof t.pipe?(i=r.get(e[0],"pipe.eid",""),s=r.get(e[0],"pipe.task","")):Array.isArray(e[0])?(i="",s=e[0]):i=e[0],r.isPlainObject(e[1])&&(o=e[1]),n=r.isFunction(e[1])?e[1]:r.isFunction(e[2])?e[2]:null;var a=function(e,n){return{contentType:n,buffer:e,get blob(){return new Blob([this.buffer],{type:n})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(e,u){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var c={name:"SDK Pipe",description:"SDK Pipe",task:s,process_mode:"R"};t.http().post("/processes",c).then(function(i){var s=r.get(i,"data",{}),c=r.get(s,"eid","");t.util.debug("Created Process.");var p={method:"post",url:"/processes/"+c+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(p.data=o.data),o.hasOwnProperty("query")&&(p.params=o.query),t.http().request(p).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),s=a(i.data,o);t.util.callbackAdapter(null,s,e,u,n)}).catch(function(r){t.util.debug("Process Run Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}).catch(function(r){t.util.debug("Process Create Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}else{var p={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(p.data=o.data),o.hasOwnProperty("query")&&(p.params=o.query),o.hasOwnProperty("contentType")?p.headers={"Content-Type":o.contentType}:p.hasOwnProperty("data")&&(r.isPlainObject(p.data)||(r.isString(p.data)?p.headers={"Content-Type":"text/plain"}:p.headers={"Content-Type":"application/octet-stream"}));t.http()(p).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),s=a(i.data,o);t.util.callbackAdapter(null,s,e,u,n)}).catch(function(r){t.util.debug("Pipe Run Call Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}})}}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(e){if(!(this instanceof t.pipe))return new t.pipe(e);var n=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),s=i.get(r,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof s&&s.call(e,null,r)}).catch(function(n){e.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof s&&s.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),s=i.get(r,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),s=i.get(r,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof s&&s.call(e,null,e.pipe)}).catch(function(n){e.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},run:function(){var e=Array.from(arguments);return e.unshift(this),t.pipes.run.apply(null,e)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},getParams:function(){return i.assign({},this._params)},toCode:function(e){return t.task.toCode(this.pipe.task,t)}});return function(e){for(var n in t.task)t.task.hasOwnProperty(n)&&"toCode"!=n&&e(n,t.task[n])}(function(t,e){n[t]=function(){return n.addTask(e.apply(n,arguments))}}),void 0!==e&&("string"==typeof e||e instanceof String?n.pipe.eid=e:"object"===(void 0===e?"undefined":r(e))&&(e.hasOwnProperty("pipe")?n.pipe=JSON.parse(JSON.stringify(e.pipe)):e.hasOwnProperty("task")?n.pipe=JSON.parse(JSON.stringify(e)):e.hasOwnProperty("op")&&(n.pipe.task=e))),n}}},function(t,e,n){"use strict";var r=n(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?r.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return r.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty method";if(-1==i.indexOf(e))throw"Invalid method";return this._setInfo("method",e)},url:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("url",e):this},auth:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty auth";if(-1==o.indexOf(e))throw"Invalid auth";return"none"==e&&(e=""),this._setInfo("auth",e)},username:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("username",e):this},password:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("password",e):this},token:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("token",e):this},accessToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("access_token",e):this},refreshToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("refresh_token",e):this},expires:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isNumber(e)&&(e=""+e),r.isString(e)?this._setInfo("expires",e):this},data:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("data",{});return e=r.assign({},n,e),this._setInfo("data",e)},headers:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("headers",{});return e=r.assign({},n,e),this._setInfo("headers",e)},load:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),s=r.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):r.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof s&&s.call(e,null,i)}).catch(function(n){e.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),s=r.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(r.isPlainObject(o)&&(r.assign(this.connection,r.pick(o,["name","description","ename"])),s=r.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+r.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.saving=!1,t.util.debug("Connection Saved."),"function"==typeof s&&s.call(e,null,e.connection)}).catch(function(n){e.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},_getInfo:function(t,e){return r.get(this.connection,"connection_info."+t,e)},_setInfo:function(t,e){return this.connection.hasOwnProperty("connection_info")||(this.connection.connection_info={}),this.connection.connection_info[t]=e,this}}):new t.connection}}},function(t,e,n){"use strict";function r(t){this.options=i.isPlainObject(t)?t:{},this.post=function(t,e,n){return this.request(i.assign(n||{},{method:"POST",url:t,data:e}))},this.get=function(t,e){return this.request(i.assign(e||{},{method:"GET",url:t}))},this.request=function(t){var e=i.get(this.options,"baseURL",""),r=i.get(t,"url","");return-1!=r.indexOf("://")?e=r:(r="/"==r.substr(0,1)?r.substr(1):r,"/"!=e.slice(-1)&&(e+="/"),e+=r),t=i.assign({},t,{url:e}),o.isNodeJs()?n(!function(){var t=new Error('Cannot find module "./http-node"');throw t.code="MODULE_NOT_FOUND",t}()).apply(this,[t]):n(34).apply(this,[t])}}var i=n(0),o=n(1);t.exports={create:function(t){return new r(t)}}},function(t,e,n){"use strict";function r(t){function e(t){for(var e={},n=t?t.split("\r\n"):[],r=0,i=n.length;r<i;r++){var o=n[r].indexOf(":");o>0&&(e[n[r].substr(0,o).trim()]=n[r].substr(o+1).trim())}return e}var n=i.assign({},i.get(this.options,"headers",{}),i.get(t,"headers",{})),r=i.get(t,"data",null);return"undefined"!=typeof FormData&&r instanceof FormData?delete n["Content-Type"]:i.isPlainObject(r)&&(r=JSON.stringify(r),n["Content-Type"]="application/json"),new Promise(function(i,o){function s(e){var n=t.responseType&&"text"!==t.responseType?e.response:e.responseText;if("string"==typeof n)try{n=JSON.parse(n)}catch(t){}return n}var a=new XMLHttpRequest;if(a.open(t.method.toUpperCase(),t.url,!0),t.responseType&&(a.responseType=t.responseType),Object.keys(n).length>0)for(var u in n)n.hasOwnProperty(u)&&a.setRequestHeader(u,n[u]);a.onload=function(){var n=s(a),r={data:n,status:1223===a.status?204:a.status,statusText:1223===a.status?"No Content":a.statusText,headers:e(a.getAllResponseHeaders()),config:t,request:a};i(r),a=null},a.onerror=function(){var n=s(a),r={data:n,status:a.status,statusText:a.statusText,headers:e(a.getAllResponseHeaders()),config:t,request:a};o(r),a=null},a.send(r)})}var i=n(0);t.exports=r}]).default}); \ No newline at end of file +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Flexio=e():t.Flexio=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=2)}([function(t,e,n){"use strict";function r(t){return"[object Object]"===Object.prototype.toString.call(t)}function i(t,e,n){var o=Array.isArray(e)?e:e.replace(/(\[(\d)\])/g,".$2").split(".").filter(function(t){return t.length});return o.length?r(t)?i(t[o.shift()],o,n):n:void 0===t?n:t}function o(t,e){var n=Array.from(arguments);n.shift();for(var r=0;r<n.length;++r)for(var i in n[r])n[r].hasOwnProperty(i)&&(t[i]=n[r][i]);return t}function s(t,e){if(null==t||!Array.isArray(e))return{};for(var n,r={},i=0;i<e.length;++i)n=e[i],t.hasOwnProperty(n)&&(r[n]=t[n]);return r}t.exports={isPlainObject:r,assign:o,pick:s,get:i,isString:function(t){return"string"==typeof t||t instanceof String},isNumber:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},isNil:function(t){return null==t},defaultTo:function(t,e){return null==t||t!==t?e:t},last:function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0},isFunction:function(t){return t instanceof Function}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i={};t.exports=i,i.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},i.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},i.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)},i.arrayBufferToString=function(t){if(this.isNodeJs())return t instanceof Buffer?t.toString("utf-8"):Buffer.from(t).toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var e,n=new Uint8Array(t),r="",i=n.length;for(e=0;e<i;++e)r+=String.fromCharCode(n[e]);return decodeURIComponent(escape(r))},i.callbackAdapter=function(t,e,n,r,i){"function"==typeof i?i(t,e):t?r(t):n(e)},t.exports.getUtilObject=function(t){return new function(){for(var e in i)i.hasOwnProperty(e)&&(this[e]=i[e]);this.debug=function(e){if(t.getConfig().debug){var e="flexio-sdk-js: "+e;console.log(e)}return this}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3);e.default=r},function(t,e,n){"use strict";var r=n(0),i=n(4),o={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},s={_init:function(){this.connections=n(29).getConnectionsObject(this),this.pipes=n(30).getPipesObject(this),this.util=n(1).getUtilObject(this),this._http=null,this.version=this.util.isNodeJs()?n(!function(){var t=new Error('Cannot find module "../package.json"');throw t.code="MODULE_NOT_FOUND",t}()).version:"1.21.0";var t=n(31).getPipeConstructor;this.pipe=t(this);var e=n(32).getConnectionConstructor;this.connection=e(this)},setup:function(t,e){return o=r.assign(o,{token:t},e),this._http=null,this._createHttp(),this},getConfig:function(){return r.assign({},o)},http:function(){return this._http||this._createHttp(),this._http},task:i,_createHttp:function(){var t={baseURL:o.baseUrl,headers:{Authorization:"Bearer "+o.token},insecure:!0===o.insecure};this._http=n(33).create(t)}};s._init(),t.exports=s},function(t,e,n){"use strict";var r=n(0),i=n(5),o=n(6),s=n(7),a=n(8),u=n(9),c=n(10),p=n(11),f=n(12),l=n(13),d=n(14),h=n(15),g=n(16),y=n(17),m=n(18),v=n(19),b=n(20),O=n(21),S=n(22),x=n(23),C=n(24),P=n(25),w=n(26),j=n(27),k=n(28),A=function(t,e){switch(r.get(t,"op","")){default:return w.toCode(t);case"create":return i.toCode(t,e);case"convert":return o.toCode(t,e);case"copy":return s.toCode(t,e);case"dump":return a.toCode(t,e);case"echo":return u.toCode(t,e);case"email":return c.toCode(t,e);case"execute":return p.toCode(t,e);case"filter":return f.toCode(t,e);case"foreach":return l.toCode(t,e);case"insert":return d.toCode(t,e);case"limit":return h.toCode(t,e);case"list":return m.toCode(t,e);case"merge":return g.toCode(t,e);case"mkdir":return y.toCode(t,e);case"read":return v.toCode(t,e);case"render":return b.toCode(t,e);case"request":return O.toCode(t,e);case"select":return S.toCode(t,e);case"sequence":return x.toCode(t,e);case"set":return C.toCode(t,e);case"sleep":return P.toCode(t,e);case"transform":return j.toCode(t,e);case"write":return k.toCode(t,e)}};t.exports={create:i,convert:o,copy:s,dump:a,echo:u,email:c,execute:p.execute,insert:d,filter:f,foreach:l,javascript:p.javascript,limit:h,list:m,merge:g,mkdir:y,python:p.python,read:v,render:b,request:O,select:S,sequence:x,set:C,sleep:P,task:w,transform:j,write:k,toCode:A}},function(t,e,n){"use strict";var r=n(0),i=function(t,e){if(Array.isArray(t))return{op:"create",params:{content_type:"application/vnd.flexio.table",columns:t}};var n={op:"create",params:{path:t}};return void 0!==e&&(Array.isArray(e)?n.params.columns=e:n.params.content_type=e),n};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.path)||void 0,o=JSON.stringify(n.content_type)||void 0,s=JSON.stringify(n.columns)||void 0;return void 0!==i?void 0!==s?"create("+i+", "+s+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==s?"create("+s+")":void 0!==o?"":void 0},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){return{op:"convert",params:{input:t,output:e}}};i.toCode=function(t,e){var n=r.get(t,"params.input",{}),i=r.get(t,"params.output",{});return"convert("+JSON.stringify(n)+", "+JSON.stringify(i)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e,n){var i={op:"copy",params:{from:t,to:e}};return r.isPlainObject(n)&&(i.params.options=n),i};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.from)||'""',o=JSON.stringify(n.to)||'""',s=n.hasOwnProperty("options")&&r.isPlainObject(n.options)?JSON.stringify(n.options):null,a="copy("+i+", "+o;return null!==s&&(a+=", "+s),a+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"dump",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"dump("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"echo",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"echo("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(!r.isPlainObject(t))throw"The first function parameter must be an object";if(!t.hasOwnProperty("to"))throw"The `to` parameter is required";if(!t.hasOwnProperty("body_text"))throw"The `body_text` parameter is required";return{op:"email",params:t}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"email("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){return"undefined"!=typeof process},o=function(t){try{return i()?Buffer(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},s=function(t){try{return i()?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},a=function(t){var e;try{e=t.toString(),e=e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))}catch(t){e=""}return e},u=function(t){if(r.isString(t))return t;if(r.isFunction(t)){var e;if(0==t.length)return"exports.flexio_handler = function(context) "+(e=a(t));if(e=t.toString(),"function"==e.substring(0,8))e=e.slice(8);else{var n=e.indexOf("=>"),i=e.indexOf("{");n>=0&&n<i&&(e=e.replace("=>s*{","{"))}return"exports.flexio_handler = function"+e}},c=function(){var t,e,n,i=Array.from(arguments),s=r.get(i,"[0]",null),a=r.get(i,"[1]",null),c=r.get(i,"[2]",null),p={};"python"==s||"javascript"==s?(t=s,e=a,null!==e&&void 0!==e||(e=""),n=c):(t="javascript",e=s,n=a),"javascript"==t&&(e=u(e)),p.lang=t;var f=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return e.match(f)?p.path=e:p.code=o(e),null!==n&&(p.integrity=n),{op:"execute",params:p}},p=function(){var t=Array.from(arguments);return t.unshift("javascript"),c.apply(this,t)},f=function(){var t=Array.from(arguments);return t.unshift("python"),c.apply(this,t)},l=function(t){var e=r.get(t,"params",{}),n=e.lang||"",i=s(e.code||"");switch(n){case"javascript":return-1!=i.indexOf("exports.flexio_handler")?(i=i.replace("exports.flexio_handler =",""),"javascript("+i.trim()+")"):"javascript("+JSON.stringify(i.trim())+")";case"python":return"python(`\n"+i+"\n`)";default:return"execute("+JSON.stringify(n)+", `\n"+i+"\n`)"}};t.exports={execute:c,javascript:p,python:f,toCode:l}},function(t,e,n){"use strict";var r=n(0),i=function(t){if(r.isNil(t))throw"The `filter` parameter is required";return{op:"filter",params:{where:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"filter("+(JSON.stringify(n.where)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(1),o=function(t,e){var n={op:"foreach",params:{}};return("string"==typeof t||t instanceof String)&&(n.params.spec=t),i.isPipeObject(t)?n.params.run=t.pipe.task:i.isPipeObject(e)&&(n.params.run=e.pipe.task),n};o.toCode=function(t,e){var n=r.get(t,"params",{}),i=[];return n.hasOwnProperty("spec")&&i.push(JSON.stringify(n.spec)),n.hasOwnProperty("run")&&i.push(e.task.toCode(n.run,e)),"foreach("+i.join(", ")+")"},t.exports=o},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n;return n=Array.isArray(e)?e:[e],{op:"insert",params:{path:t,values:n}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"path",void 0),o=r.get(n,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"limit",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"limit("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(Array.isArray(t))var e=t;else for(var e=[],n=0;n<arguments.length;++n)e.push(arguments[n]);return{op:"merge",params:{files:e}}};i.toCode=function(t,e){for(var n=r.get(t,"params",{}),i=r.get(n,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=e.merge.toCode(i[o],e);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"mkdir",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"mkdir("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"list",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"list("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"read",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"read("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n={};return r.isPlainObject(t)?n=t:r.isString(t)&&(n.url=t),r.isPlainObject(e)&&r.assign(n,e),{op:"render",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.url)||"";return delete n.url,0==Object.keys(n).length?"render("+i+")":"render("+i+", "+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments),e=r.get(t,"[0]",""),n=r.get(t,"[1]",{});return n=r.isPlainObject(r.get(t,"[0]",{}))?r.get(t,"[0]",{}):r.assign({},{url:e},n),{op:"request",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"url",""),o=Object.keys(n);return 1==o.length&&"url"==o[0]?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments);return 1==t.length&&Array.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[])),{op:"select",params:{columns:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return{op:"sequence",params:{steps:t}}});r.toCode=function(t,e){for(var n=[],r=0;r<t.params.items.length;++r){var i=t.params.items[r],o=e.task.toCode(i,e);i.hasOwnProperty("params")&&i.params.hasOwnProperty("lang")&&"python"!=i.params.lang&&(o=o.replace(/\n/g,"\n ")),n.push(o)}var n=["Flexio.pipe()"].concat(n);return n.join("\n .")},t.exports=r},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0),o=n(1),s=function(t,e){return o.isPipeObject(e)&&(e=e.pipe.task),{op:"set",params:{var:t,value:e}}};s.toCode=function(t,e){var n=i.get(t,"params",{}),o=i.get(n,"variable",""),s=i.get(n,"value","");return o=JSON.stringify(o),s="object"===(void 0===s?"undefined":r(s))&&null!==s&&s.hasOwnProperty("op")?e.task.toCode(s,e):JSON.stringify(s),"set("+o+", "+s+")"},t.exports=s},function(t,e,n){"use strict";var r=n(0),i=function(t){return t=r.defaultTo(t,10),{op:"sleep",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"sleep("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return t});r.toCode=function(t,e){return"task("+JSON.stringify(t,null,2)+")"},t.exports=r},function(t,e,n){"use strict";var r=n(0),i=function(t){var e=Array.from(arguments),n={operations:[]},i={},o=[],s=r.get(e,"[0]");return r.isPlainObject(s)?(1==e.length&&r.has(s,"operations")?(i=r.pick(s,["columns","operations"]),i=r.assign(n,i)):(o=[].concat(e),i={operations:o}),{op:"transform",params:i}):{op:"transform",params:{columns:void 0,operations:o}}};i.toCode=function(t,e){var n=t.hasOwnProperty("params")?t.params:{};return!n.hasOwnProperty("columns")&&n.hasOwnProperty("operations")&&Array.isArray(n.operations)&&1==n.operations.length?"transform("+JSON.stringify(n.operations[0])+")":"transform("+JSON.stringify(n)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"write",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"write("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0);n(1);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.connection))throw"Unknown connection object type";i=e.connection}return new Promise(function(e,r){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var s=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,s,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})}}}},function(t,e,n){"use strict";var r=n(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.pipe))throw"Unknown pipe object type";i=e.pipe}return new Promise(function(e,r){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var s=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,s,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})},this.run=function(){var e=Array.from(arguments);e.push(null,null,null);var n,i,o={},s=null;e[0]instanceof t.pipe?(i=r.get(e[0],"pipe.eid",""),s=r.get(e[0],"pipe.task","")):Array.isArray(e[0])?(i="",s=e[0]):i=e[0],r.isPlainObject(e[1])&&(o=e[1]),n=r.isFunction(e[1])?e[1]:r.isFunction(e[2])?e[2]:null;var a=function(e,n){return{contentType:n,buffer:e,get blob(){return new Blob([this.buffer],{type:n})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(e,u){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var c={name:"SDK Pipe",description:"SDK Pipe",task:s,process_mode:"R"};t.http().post("/processes",c).then(function(i){var s=r.get(i,"data",{}),c=r.get(s,"eid","");t.util.debug("Created Process.");var p={method:"post",url:"/processes/"+c+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(p.data=o.data),o.hasOwnProperty("query")&&(p.params=o.query),t.http().request(p).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),s=a(i.data,o);t.util.callbackAdapter(null,s,e,u,n)}).catch(function(r){t.util.debug("Process Run Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}).catch(function(r){t.util.debug("Process Create Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}else{var p={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(p.data=o.data),o.hasOwnProperty("query")&&(p.params=o.query),o.hasOwnProperty("contentType")?p.headers={"Content-Type":o.contentType}:p.hasOwnProperty("data")&&(r.isPlainObject(p.data)||(r.isString(p.data)?p.headers={"Content-Type":"text/plain"}:p.headers={"Content-Type":"application/octet-stream"}));t.http()(p).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),s=a(i.data,o);t.util.callbackAdapter(null,s,e,u,n)}).catch(function(r){t.util.debug("Pipe Run Call Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}})}}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(e){if(!(this instanceof t.pipe))return new t.pipe(e);var n=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),s=i.get(r,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof s&&s.call(e,null,r)}).catch(function(n){e.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof s&&s.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),s=i.get(r,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),s=i.get(r,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof s&&s.call(e,null,e.pipe)}).catch(function(n){e.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},run:function(){var e=Array.from(arguments);return e.unshift(this),t.pipes.run.apply(null,e)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},getParams:function(){return i.assign({},this._params)},toCode:function(e){return t.task.toCode(this.pipe.task,t)}});return function(e){for(var n in t.task)t.task.hasOwnProperty(n)&&"toCode"!=n&&e(n,t.task[n])}(function(t,e){n[t]=function(){return n.addTask(e.apply(n,arguments))}}),void 0!==e&&("string"==typeof e||e instanceof String?n.pipe.eid=e:"object"===(void 0===e?"undefined":r(e))&&(e.hasOwnProperty("pipe")?n.pipe=JSON.parse(JSON.stringify(e.pipe)):e.hasOwnProperty("task")?n.pipe=JSON.parse(JSON.stringify(e)):e.hasOwnProperty("op")&&(n.pipe.task=e))),n}}},function(t,e,n){"use strict";var r=n(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?r.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return r.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty method";if(-1==i.indexOf(e))throw"Invalid method";return this._setInfo("method",e)},url:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("url",e):this},auth:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty auth";if(-1==o.indexOf(e))throw"Invalid auth";return"none"==e&&(e=""),this._setInfo("auth",e)},username:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("username",e):this},password:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("password",e):this},token:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("token",e):this},accessToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("access_token",e):this},refreshToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("refresh_token",e):this},expires:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isNumber(e)&&(e=""+e),r.isString(e)?this._setInfo("expires",e):this},data:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("data",{});return e=r.assign({},n,e),this._setInfo("data",e)},headers:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("headers",{});return e=r.assign({},n,e),this._setInfo("headers",e)},load:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),s=r.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):r.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof s&&s.call(e,null,i)}).catch(function(n){e.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),s=r.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(r.isPlainObject(o)&&(r.assign(this.connection,r.pick(o,["name","description","ename"])),s=r.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+r.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.saving=!1,t.util.debug("Connection Saved."),"function"==typeof s&&s.call(e,null,e.connection)}).catch(function(n){e.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof s&&s.call(e,n,null)}),this)},_getInfo:function(t,e){return r.get(this.connection,"connection_info."+t,e)},_setInfo:function(t,e){return this.connection.hasOwnProperty("connection_info")||(this.connection.connection_info={}),this.connection.connection_info[t]=e,this}}):new t.connection}}},function(t,e,n){"use strict";function r(t){this.options=i.isPlainObject(t)?t:{},this.post=function(t,e,n){return this.request(i.assign(n||{},{method:"POST",url:t,data:e}))},this.get=function(t,e){return this.request(i.assign(e||{},{method:"GET",url:t}))},this.request=function(t){var e=i.get(this.options,"baseURL",""),r=i.get(t,"url","");return-1!=r.indexOf("://")?e=r:(r="/"==r.substr(0,1)?r.substr(1):r,"/"!=e.slice(-1)&&(e+="/"),e+=r),t=i.assign({},t,{url:e}),o.isNodeJs()?n(!function(){var t=new Error('Cannot find module "./http-node"');throw t.code="MODULE_NOT_FOUND",t}()).apply(this,[t]):n(34).apply(this,[t])}}var i=n(0),o=n(1);t.exports={create:function(t){return new r(t)}}},function(t,e,n){"use strict";function r(t){function e(t){for(var e={},n=t?t.split("\r\n"):[],r=0,i=n.length;r<i;r++){var o=n[r].indexOf(":");o>0&&(e[n[r].substr(0,o).trim()]=n[r].substr(o+1).trim())}return e}var n=i.assign({},i.get(this.options,"headers",{}),i.get(t,"headers",{})),r=i.get(t,"data",null);return"undefined"!=typeof FormData&&r instanceof FormData?delete n["Content-Type"]:i.isPlainObject(r)&&(r=JSON.stringify(r),n["Content-Type"]="application/json"),new Promise(function(i,o){function s(e){var n=t.responseType&&"text"!==t.responseType?e.response:e.responseText;if("string"==typeof n)try{n=JSON.parse(n)}catch(t){}return n}var a=new XMLHttpRequest;if(a.open(t.method.toUpperCase(),t.url,!0),t.responseType&&(a.responseType=t.responseType),Object.keys(n).length>0)for(var u in n)n.hasOwnProperty(u)&&a.setRequestHeader(u,n[u]);a.onload=function(){var n=s(a),r={data:n,status:1223===a.status?204:a.status,statusText:1223===a.status?"No Content":a.statusText,headers:e(a.getAllResponseHeaders()),config:t,request:a};i(r),a=null},a.onerror=function(){var n=s(a),r={data:n,status:a.status,statusText:a.statusText,headers:e(a.getAllResponseHeaders()),config:t,request:a};o(r),a=null},a.send(r)})}var i=n(0);t.exports=r}]).default}); \ No newline at end of file diff --git a/dist/orig/flexio-node.js b/dist/orig/flexio-node.js new file mode 100644 index 0000000..36f4e2c --- /dev/null +++ b/dist/orig/flexio-node.js @@ -0,0 +1,22232 @@ +/*! + * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * (c) 2018 Gold Prairie LLC + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(require("http"), require("https"), require("url"), require("assert"), require("stream"), require("tty"), require("util"), require("fs"), require("net"), require("zlib")); + else if(typeof define === 'function' && define.amd) + define(["http", "https", "url", "assert", "stream", "tty", "util", "fs", "net", "zlib"], factory); + else if(typeof exports === 'object') + exports["Flexio"] = factory(require("http"), require("https"), require("url"), require("assert"), require("stream"), require("tty"), require("util"), require("fs"), require("net"), require("zlib")); + else + root["Flexio"] = factory(root["http"], root["https"], root["url"], root["assert"], root["stream"], root["tty"], root["util"], root["fs"], root["net"], root["zlib"]); +})(this, function(__WEBPACK_EXTERNAL_MODULE_10__, __WEBPACK_EXTERNAL_MODULE_11__, __WEBPACK_EXTERNAL_MODULE_13__, __WEBPACK_EXTERNAL_MODULE_31__, __WEBPACK_EXTERNAL_MODULE_32__, __WEBPACK_EXTERNAL_MODULE_37__, __WEBPACK_EXTERNAL_MODULE_38__, __WEBPACK_EXTERNAL_MODULE_39__, __WEBPACK_EXTERNAL_MODULE_40__, __WEBPACK_EXTERNAL_MODULE_41__) { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 17); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** + * @license + * Lodash <https://lodash.com/> + * Copyright JS Foundation and other contributors <https://js.foundation/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.4'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g, + reTrimStart = /^\s+/, + reTrimEnd = /\s+$/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)', + rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * Adds the key-value `pair` to `map`. + * + * @private + * @param {Object} map The map to modify. + * @param {Array} pair The key-value pair to add. + * @returns {Object} Returns `map`. + */ + function addMapEntry(map, pair) { + // Don't return `map.set` because it's not chainable in IE 11. + map.set(pair[0], pair[1]); + return map; + } + + /** + * Adds `value` to `set`. + * + * @private + * @param {Object} set The set to modify. + * @param {*} value The value to add. + * @returns {Object} Returns `set`. + */ + function addSetEntry(set, value) { + // Don't return `set.add` because it's not chainable in IE 11. + set.add(value); + return set; + } + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + if (isObject(srcValue)) { + stack || (stack = new Stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(object[key], srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = object[key], + srcValue = source[key], + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + var index = -1; + iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array == null ? 0 : array.length, + valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `map`. + * + * @private + * @param {Object} map The map to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned map. + */ + function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of `set`. + * + * @private + * @param {Object} set The set to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned set. + */ + function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + result = wait - timeSinceLastCall; + + return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '<p>' + func(text) + '</p>'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '<p>fred, barney, & pebbles</p>' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement('<body>'); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(args) { + args.push(undefined, customDefaultsAssignIn); + return apply(assignInWith, undefined, args); + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<b><%- value %></b>'); + * compiled({ 'value': '<script>' }); + * // => '<b><script></b>' + * + * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. + * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the internal `print` function in "evaluate" delimiters. + * var compiled = _.template('<% print("hello " + user); %>!'); + * compiled({ 'user': 'barney' }); + * // => 'hello barney!' + * + * // Use the ES template literal delimiter as an "interpolate" delimiter. + * // Disable support by replacing the "interpolate" delimiter. + * var compiled = _.template('hello ${ user }!'); + * compiled({ 'user': 'pebbles' }); + * // => 'hello pebbles!' + * + * // Use backslashes to treat delimiters as plain text. + * var compiled = _.template('<%= "\\<%- value %\\>" %>'); + * compiled({ 'value': 'ignored' }); + * // => '<%- value %>' + * + * // Use the `imports` option to import `jQuery` as `jq`. + * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; + * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the `sourceURL` option to specify a custom sourceURL for the template. + * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. + * + * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. + * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * // var __t, __p = ''; + * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; + * // return __p; + * // } + * + * // Use custom template delimiters. + * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; + * var compiled = _.template('hello {{ user }}!'); + * compiled({ 'user': 'mustache' }); + * // => 'hello mustache!' + * + * // Use the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and stack traces. + * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ + function template(string, options, guard) { + // Based on John Resig's `tmpl` implementation + // (http://ejohn.org/blog/javascript-micro-templating/) + // and Laura Doktorova's doT.js (https://github.com/olado/doT). + var settings = lodash.templateSettings; + + if (guard && isIterateeCall(string, options, guard)) { + options = undefined; + } + string = toString(string); + options = assignInWith({}, options, settings, customDefaultsAssignIn); + + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), + importsKeys = keys(imports), + importsValues = baseValues(imports, importsKeys); + + var isEscaping, + isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // Compile the regexp to match each delimiter. + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + // Use a sourceURL for easier debugging. + var sourceURL = '//# sourceURL=' + + ('sourceURL' in options + ? options.sourceURL + : ('lodash.templateSources[' + (++templateCounter) + ']') + ) + '\n'; + + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // Escape characters that can't be included in string literals. + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // Replace delimiters with snippets. + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // The JS engine embedded in Adobe products needs `match` returned in + // order to produce the correct `offset` value. + return match; + }); + + source += "';\n"; + + // If `variable` is not specified wrap a with-statement around the generated + // code to add the data object to the top of the scope chain. + var variable = options.variable; + if (!variable) { + source = 'with (obj) {\n' + source + '\n}\n'; + } + // Cleanup code by stripping empty strings. + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // Frame code as the function body. + source = 'function(' + (variable || 'obj') + ') {\n' + + (variable + ? '' + : 'obj || (obj = {});\n' + ) + + "var __t, __p = ''" + + (isEscaping + ? ', __e = _.escape' + : '' + ) + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + var result = attempt(function() { + return Function(importsKeys, sourceURL + 'return ' + source) + .apply(undefined, importsValues); + }); + + // Provide the compiled function's source by its `toString` method or + // the `source` property as a convenience for inlining compiled templates. + result.source = source; + if (isError(result)) { + throw result; + } + return result; + } + + /** + * Converts `string`, as a whole, to lower case just like + * [String#toLowerCase](https://mdn.io/toLowerCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.toLower('--Foo-Bar--'); + * // => '--foo-bar--' + * + * _.toLower('fooBar'); + * // => 'foobar' + * + * _.toLower('__FOO_BAR__'); + * // => '__foo_bar__' + */ + function toLower(value) { + return toString(value).toLowerCase(); + } + + /** + * Converts `string`, as a whole, to upper case just like + * [String#toUpperCase](https://mdn.io/toUpperCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.toUpper('--foo-bar--'); + * // => '--FOO-BAR--' + * + * _.toUpper('fooBar'); + * // => 'FOOBAR' + * + * _.toUpper('__foo_bar__'); + * // => '__FOO_BAR__' + */ + function toUpper(value) { + return toString(value).toUpperCase(); + } + + /** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ + function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrim, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); + } + + /** + * Removes trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimEnd(' abc '); + * // => ' abc' + * + * _.trimEnd('-_-abc-_-', '_-'); + * // => '-_-abc' + */ + function trimEnd(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrimEnd, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + + return castSlice(strSymbols, 0, end).join(''); + } + + /** + * Removes leading whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimStart(' abc '); + * // => 'abc ' + * + * _.trimStart('-_-abc-_-', '_-'); + * // => 'abc-_-' + */ + function trimStart(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrimStart, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + start = charsStartIndex(strSymbols, stringToArray(chars)); + + return castSlice(strSymbols, start).join(''); + } + + /** + * Truncates `string` if it's longer than the given maximum string length. + * The last characters of the truncated string are replaced with the omission + * string which defaults to "...". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to truncate. + * @param {Object} [options={}] The options object. + * @param {number} [options.length=30] The maximum string length. + * @param {string} [options.omission='...'] The string to indicate text is omitted. + * @param {RegExp|string} [options.separator] The separator pattern to truncate to. + * @returns {string} Returns the truncated string. + * @example + * + * _.truncate('hi-diddly-ho there, neighborino'); + * // => 'hi-diddly-ho there, neighbo...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': ' ' + * }); + * // => 'hi-diddly-ho there,...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': /,? +/ + * }); + * // => 'hi-diddly-ho there...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'omission': ' [...]' + * }); + * // => 'hi-diddly-ho there, neig [...]' + */ + function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, + omission = DEFAULT_TRUNC_OMISSION; + + if (isObject(options)) { + var separator = 'separator' in options ? options.separator : separator; + length = 'length' in options ? toInteger(options.length) : length; + omission = 'omission' in options ? baseToString(options.omission) : omission; + } + string = toString(string); + + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result = strSymbols + ? castSlice(strSymbols, 0, end).join('') + : string.slice(0, end); + + if (separator === undefined) { + return result + omission; + } + if (strSymbols) { + end += (result.length - end); + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, + substring = result; + + if (!separator.global) { + separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); + } + separator.lastIndex = 0; + while ((match = separator.exec(substring))) { + var newEnd = match.index; + } + result = result.slice(0, newEnd === undefined ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result.lastIndexOf(separator); + if (index > -1) { + result = result.slice(0, index); + } + } + return result + omission; + } + + /** + * The inverse of `_.escape`; this method converts the HTML entities + * `&`, `<`, `>`, `"`, and `'` in `string` to + * their corresponding characters. + * + * **Note:** No other HTML entities are unescaped. To unescape additional + * HTML entities use a third-party library like [_he_](https://mths.be/he). + * + * @static + * @memberOf _ + * @since 0.6.0 + * @category String + * @param {string} [string=''] The string to unescape. + * @returns {string} Returns the unescaped string. + * @example + * + * _.unescape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function unescape(string) { + string = toString(string); + return (string && reHasEscapedHtml.test(string)) + ? string.replace(reEscapedHtml, unescapeHtmlChar) + : string; + } + + /** + * Converts `string`, as space separated words, to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.upperCase('--foo-bar'); + * // => 'FOO BAR' + * + * _.upperCase('fooBar'); + * // => 'FOO BAR' + * + * _.upperCase('__foo_bar__'); + * // => 'FOO BAR' + */ + var upperCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toUpperCase(); + }); + + /** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ + var upperFirst = createCaseFirst('toUpperCase'); + + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined : pattern; + + if (pattern === undefined) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + + /*------------------------------------------------------------------------*/ + + /** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Function} func The function to attempt. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // Avoid throwing errors for invalid selectors. + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ + var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined, args); + } catch (e) { + return isError(e) ? e : new Error(e); + } + }); + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. + * + * **Note:** This method doesn't set the "length" property of bound functions. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'click': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view, ['click']); + * jQuery(element).on('click', view.click); + * // => Logs 'clicked docs' when clicked. + */ + var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; + }); + + /** + * Creates a function that iterates over `pairs` and invokes the corresponding + * function of the first predicate to return truthy. The predicate-function + * pairs are invoked with the `this` binding and arguments of the created + * function. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Array} pairs The predicate-function pairs. + * @returns {Function} Returns the new composite function. + * @example + * + * var func = _.cond([ + * [_.matches({ 'a': 1 }), _.constant('matches A')], + * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], + * [_.stubTrue, _.constant('no match')] + * ]); + * + * func({ 'a': 1, 'b': 2 }); + * // => 'matches A' + * + * func({ 'a': 0, 'b': 1 }); + * // => 'matches B' + * + * func({ 'a': '1', 'b': '2' }); + * // => 'no match' + */ + function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, + toIteratee = getIteratee(); + + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); + } + + /** + * Creates a function that invokes the predicate properties of `source` with + * the corresponding property values of a given object, returning `true` if + * all predicates return truthy, else `false`. + * + * **Note:** The created function is equivalent to `_.conformsTo` with + * `source` partially applied. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 2, 'b': 1 }, + * { 'a': 1, 'b': 2 } + * ]; + * + * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); + * // => [{ 'a': 1, 'b': 2 }] + */ + function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + + /** + * Checks `value` to determine whether a default value should be returned in + * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, + * or `undefined`. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Util + * @param {*} value The value to check. + * @param {*} defaultValue The default value. + * @returns {*} Returns the resolved value. + * @example + * + * _.defaultTo(1, 10); + * // => 1 + * + * _.defaultTo(undefined, 10); + * // => 10 + */ + function defaultTo(value, defaultValue) { + return (value == null || value !== value) ? defaultValue : value; + } + + /** + * Creates a function that returns the result of invoking the given functions + * with the `this` binding of the created function, where each successive + * invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flowRight + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow([_.add, square]); + * addSquare(1, 2); + * // => 9 + */ + var flow = createFlow(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the given functions from right to left. + * + * @static + * @since 3.0.0 + * @memberOf _ + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flow + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight([square, _.add]); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createFlow(true); + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + + /** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ + function iteratee(func) { + return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between a given + * object and `source`, returning `true` if the given object has equivalent + * property values, else `false`. + * + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); + * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + */ + function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between the + * value at `path` of a given object to `srcValue`, returning `true` if the + * object value is equivalent, else `false`. + * + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.find(objects, _.matchesProperty('a', 4)); + * // => { 'a': 4, 'b': 5, 'c': 6 } + */ + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that invokes the method at `path` of a given object. + * Any additional arguments are provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var objects = [ + * { 'a': { 'b': _.constant(2) } }, + * { 'a': { 'b': _.constant(1) } } + * ]; + * + * _.map(objects, _.method('a.b')); + * // => [2, 1] + * + * _.map(objects, _.method(['a', 'b'])); + * // => [2, 1] + */ + var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; + }); + + /** + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path of `object`. Any additional arguments are + * provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var array = _.times(3, _.constant), + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.methodOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); + * // => [2, 0] + */ + var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; + }); + + /** + * Adds all own enumerable string keyed function properties of a source + * object to the destination object. If `object` is a function, then methods + * are added to its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.chain=true] Specify whether mixins are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ + function mixin(object, source, options) { + var props = keys(source), + methodNames = baseFunctions(source, props); + + if (options == null && + !(isObject(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys(source)); + } + var chain = !(isObject(options) && 'chain' in options) || !!options.chain, + isFunc = isFunction(object); + + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = copyArray(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + + return object; + } + + /** + * Reverts the `_` variable to its previous value and returns a reference to + * the `lodash` function. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @returns {Function} Returns the `lodash` function. + * @example + * + * var lodash = _.noConflict(); + */ + function noConflict() { + if (root._ === this) { + root._ = oldDash; + } + return this; + } + + /** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() { + // No operation performed. + } + + /** + * Creates a function that gets the argument at index `n`. If `n` is negative, + * the nth argument from the end is returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [n=0] The index of the argument to return. + * @returns {Function} Returns the new pass-thru function. + * @example + * + * var func = _.nthArg(1); + * func('a', 'b', 'c', 'd'); + * // => 'b' + * + * var func = _.nthArg(-2); + * func('a', 'b', 'c', 'd'); + * // => 'c' + */ + function nthArg(n) { + n = toInteger(n); + return baseRest(function(args) { + return baseNth(args, n); + }); + } + + /** + * Creates a function that invokes `iteratees` with the arguments it receives + * and returns their results. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to invoke. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.over([Math.max, Math.min]); + * + * func(1, 2, 3, 4); + * // => [4, 1] + */ + var over = createOver(arrayMap); + + /** + * Creates a function that checks if **all** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overEvery([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => false + * + * func(NaN); + * // => false + */ + var overEvery = createOver(arrayEvery); + + /** + * Creates a function that checks if **any** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overSome([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => true + * + * func(NaN); + * // => false + */ + var overSome = createOver(arraySome); + + /** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + + /** + * The opposite of `_.property`; this method creates a function that returns + * the value at a given path of `object`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + * @example + * + * var array = [0, 1, 2], + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); + * // => [2, 0] + */ + function propertyOf(object) { + return function(path) { + return object == null ? undefined : baseGet(object, path); + }; + } + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + var range = createRange(); + + /** + * This method is like `_.range` except that it populates values in + * descending order. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.range + * @example + * + * _.rangeRight(4); + * // => [3, 2, 1, 0] + * + * _.rangeRight(-4); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 5); + * // => [4, 3, 2, 1] + * + * _.rangeRight(0, 20, 5); + * // => [15, 10, 5, 0] + * + * _.rangeRight(0, -4, -1); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 4, 0); + * // => [1, 1, 1] + * + * _.rangeRight(0); + * // => [] + */ + var rangeRight = createRange(true); + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + /** + * This method returns a new empty object. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Object} Returns the new empty object. + * @example + * + * var objects = _.times(2, _.stubObject); + * + * console.log(objects); + * // => [{}, {}] + * + * console.log(objects[0] === objects[1]); + * // => false + */ + function stubObject() { + return {}; + } + + /** + * This method returns an empty string. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {string} Returns the empty string. + * @example + * + * _.times(2, _.stubString); + * // => ['', ''] + */ + function stubString() { + return ''; + } + + /** + * This method returns `true`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `true`. + * @example + * + * _.times(2, _.stubTrue); + * // => [true, true] + */ + function stubTrue() { + return true; + } + + /** + * Invokes the iteratee `n` times, returning an array of the results of + * each invocation. The iteratee is invoked with one argument; (index). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of results. + * @example + * + * _.times(3, String); + * // => ['0', '1', '2'] + * + * _.times(4, _.constant(0)); + * // => [0, 0, 0, 0] + */ + function times(n, iteratee) { + n = toInteger(n); + if (n < 1 || n > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, + length = nativeMin(n, MAX_ARRAY_LENGTH); + + iteratee = getIteratee(iteratee); + n -= MAX_ARRAY_LENGTH; + + var result = baseTimes(length, iteratee); + while (++index < n) { + iteratee(index); + } + return result; + } + + /** + * Converts `value` to a property path array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {*} value The value to convert. + * @returns {Array} Returns the new property path array. + * @example + * + * _.toPath('a.b.c'); + * // => ['a', 'b', 'c'] + * + * _.toPath('a[0].b.c'); + * // => ['a', '0', 'b', 'c'] + */ + function toPath(value) { + if (isArray(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); + } + + /** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; + } + + /*------------------------------------------------------------------------*/ + + /** + * Adds two numbers. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {number} augend The first number in an addition. + * @param {number} addend The second number in an addition. + * @returns {number} Returns the total. + * @example + * + * _.add(6, 4); + * // => 10 + */ + var add = createMathOperation(function(augend, addend) { + return augend + addend; + }, 0); + + /** + * Computes `number` rounded up to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ + var ceil = createRound('ceil'); + + /** + * Divide two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} dividend The first number in a division. + * @param {number} divisor The second number in a division. + * @returns {number} Returns the quotient. + * @example + * + * _.divide(6, 4); + * // => 1.5 + */ + var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; + }, 1); + + /** + * Computes `number` rounded down to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ + var floor = createRound('floor'); + + /** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ + function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; + } + + /** + * This method is like `_.max` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the maximum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.maxBy(objects, function(o) { return o.n; }); + * // => { 'n': 2 } + * + * // The `_.property` iteratee shorthand. + * _.maxBy(objects, 'n'); + * // => { 'n': 2 } + */ + function maxBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) + : undefined; + } + + /** + * Computes the mean of the values in `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the mean. + * @example + * + * _.mean([4, 2, 8, 6]); + * // => 5 + */ + function mean(array) { + return baseMean(array, identity); + } + + /** + * This method is like `_.mean` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be averaged. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the mean. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.meanBy(objects, function(o) { return o.n; }); + * // => 5 + * + * // The `_.property` iteratee shorthand. + * _.meanBy(objects, 'n'); + * // => 5 + */ + function meanBy(array, iteratee) { + return baseMean(array, getIteratee(iteratee, 2)); + } + + /** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ + function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; + } + + /** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ + function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) + : undefined; + } + + /** + * Multiply two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} multiplier The first number in a multiplication. + * @param {number} multiplicand The second number in a multiplication. + * @returns {number} Returns the product. + * @example + * + * _.multiply(6, 4); + * // => 24 + */ + var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; + }, 1); + + /** + * Computes `number` rounded to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round. + * @param {number} [precision=0] The precision to round to. + * @returns {number} Returns the rounded number. + * @example + * + * _.round(4.006); + * // => 4 + * + * _.round(4.006, 2); + * // => 4.01 + * + * _.round(4060, -2); + * // => 4100 + */ + var round = createRound('round'); + + /** + * Subtract two numbers. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {number} minuend The first number in a subtraction. + * @param {number} subtrahend The second number in a subtraction. + * @returns {number} Returns the difference. + * @example + * + * _.subtract(6, 4); + * // => 2 + */ + var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; + }, 0); + + /** + * Computes the sum of the values in `array`. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 2, 8, 6]); + * // => 20 + */ + function sum(array) { + return (array && array.length) + ? baseSum(array, identity) + : 0; + } + + /** + * This method is like `_.sum` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be summed. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the sum. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.sumBy(objects, function(o) { return o.n; }); + * // => 20 + * + * // The `_.property` iteratee shorthand. + * _.sumBy(objects, 'n'); + * // => 20 + */ + function sumBy(array, iteratee) { + return (array && array.length) + ? baseSum(array, getIteratee(iteratee, 2)) + : 0; + } + + /*------------------------------------------------------------------------*/ + + // Add methods that return wrapped values in chain sequences. + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign; + lodash.assignIn = assignIn; + lodash.assignInWith = assignInWith; + lodash.assignWith = assignWith; + lodash.at = at; + lodash.before = before; + lodash.bind = bind; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.castArray = castArray; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.concat = concat; + lodash.cond = cond; + lodash.conforms = conforms; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference; + lodash.differenceBy = differenceBy; + lodash.differenceWith = differenceWith; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter; + lodash.flatMap = flatMap; + lodash.flatMapDeep = flatMapDeep; + lodash.flatMapDepth = flatMapDepth; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.flattenDepth = flattenDepth; + lodash.flip = flip; + lodash.flow = flow; + lodash.flowRight = flowRight; + lodash.fromPairs = fromPairs; + lodash.functions = functions; + lodash.functionsIn = functionsIn; + lodash.groupBy = groupBy; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.intersectionBy = intersectionBy; + lodash.intersectionWith = intersectionWith; + lodash.invert = invert; + lodash.invertBy = invertBy; + lodash.invokeMap = invokeMap; + lodash.iteratee = iteratee; + lodash.keyBy = keyBy; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.map = map; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge; + lodash.mergeWith = mergeWith; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.nthArg = nthArg; + lodash.omit = omit; + lodash.omitBy = omitBy; + lodash.once = once; + lodash.orderBy = orderBy; + lodash.over = over; + lodash.overArgs = overArgs; + lodash.overEvery = overEvery; + lodash.overSome = overSome; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition; + lodash.pick = pick; + lodash.pickBy = pickBy; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAll = pullAll; + lodash.pullAllBy = pullAllBy; + lodash.pullAllWith = pullAllWith; + lodash.pullAt = pullAt; + lodash.range = range; + lodash.rangeRight = rangeRight; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove; + lodash.rest = rest; + lodash.reverse = reverse; + lodash.sampleSize = sampleSize; + lodash.set = set; + lodash.setWith = setWith; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.sortedUniq = sortedUniq; + lodash.sortedUniqBy = sortedUniqBy; + lodash.split = split; + lodash.spread = spread; + lodash.tail = tail; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.toPairs = toPairs; + lodash.toPairsIn = toPairsIn; + lodash.toPath = toPath; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform; + lodash.unary = unary; + lodash.union = union; + lodash.unionBy = unionBy; + lodash.unionWith = unionWith; + lodash.uniq = uniq; + lodash.uniqBy = uniqBy; + lodash.uniqWith = uniqWith; + lodash.unset = unset; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.update = update; + lodash.updateWith = updateWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.without = without; + lodash.words = words; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.xorBy = xorBy; + lodash.xorWith = xorWith; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipObjectDeep = zipObjectDeep; + lodash.zipWith = zipWith; + + // Add aliases. + lodash.entries = toPairs; + lodash.entriesIn = toPairsIn; + lodash.extend = assignIn; + lodash.extendWith = assignInWith; + + // Add methods to `lodash.prototype`. + mixin(lodash, lodash); + + /*------------------------------------------------------------------------*/ + + // Add methods that return unwrapped values in chain sequences. + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil; + lodash.clamp = clamp; + lodash.clone = clone; + lodash.cloneDeep = cloneDeep; + lodash.cloneDeepWith = cloneDeepWith; + lodash.cloneWith = cloneWith; + lodash.conformsTo = conformsTo; + lodash.deburr = deburr; + lodash.defaultTo = defaultTo; + lodash.divide = divide; + lodash.endsWith = endsWith; + lodash.eq = eq; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.floor = floor; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.get = get; + lodash.gt = gt; + lodash.gte = gte; + lodash.has = has; + lodash.hasIn = hasIn; + lodash.head = head; + lodash.identity = identity; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.invoke = invoke; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isArrayBuffer = isArrayBuffer; + lodash.isArrayLike = isArrayLike; + lodash.isArrayLikeObject = isArrayLikeObject; + lodash.isBoolean = isBoolean; + lodash.isBuffer = isBuffer; + lodash.isDate = isDate; + lodash.isElement = isElement; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isEqualWith = isEqualWith; + lodash.isError = isError; + lodash.isFinite = isFinite; + lodash.isFunction = isFunction; + lodash.isInteger = isInteger; + lodash.isLength = isLength; + lodash.isMap = isMap; + lodash.isMatch = isMatch; + lodash.isMatchWith = isMatchWith; + lodash.isNaN = isNaN; + lodash.isNative = isNative; + lodash.isNil = isNil; + lodash.isNull = isNull; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isObjectLike = isObjectLike; + lodash.isPlainObject = isPlainObject; + lodash.isRegExp = isRegExp; + lodash.isSafeInteger = isSafeInteger; + lodash.isSet = isSet; + lodash.isString = isString; + lodash.isSymbol = isSymbol; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined; + lodash.isWeakMap = isWeakMap; + lodash.isWeakSet = isWeakSet; + lodash.join = join; + lodash.kebabCase = kebabCase; + lodash.last = last; + lodash.lastIndexOf = lastIndexOf; + lodash.lowerCase = lowerCase; + lodash.lowerFirst = lowerFirst; + lodash.lt = lt; + lodash.lte = lte; + lodash.max = max; + lodash.maxBy = maxBy; + lodash.mean = mean; + lodash.meanBy = meanBy; + lodash.min = min; + lodash.minBy = minBy; + lodash.stubArray = stubArray; + lodash.stubFalse = stubFalse; + lodash.stubObject = stubObject; + lodash.stubString = stubString; + lodash.stubTrue = stubTrue; + lodash.multiply = multiply; + lodash.nth = nth; + lodash.noConflict = noConflict; + lodash.noop = noop; + lodash.now = now; + lodash.pad = pad; + lodash.padEnd = padEnd; + lodash.padStart = padStart; + lodash.parseInt = parseInt; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.replace = replace; + lodash.result = result; + lodash.round = round; + lodash.runInContext = runInContext; + lodash.sample = sample; + lodash.size = size; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedIndexBy = sortedIndexBy; + lodash.sortedIndexOf = sortedIndexOf; + lodash.sortedLastIndex = sortedLastIndex; + lodash.sortedLastIndexBy = sortedLastIndexBy; + lodash.sortedLastIndexOf = sortedLastIndexOf; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.subtract = subtract; + lodash.sum = sum; + lodash.sumBy = sumBy; + lodash.template = template; + lodash.times = times; + lodash.toFinite = toFinite; + lodash.toInteger = toInteger; + lodash.toLength = toLength; + lodash.toLower = toLower; + lodash.toNumber = toNumber; + lodash.toSafeInteger = toSafeInteger; + lodash.toString = toString; + lodash.toUpper = toUpper; + lodash.trim = trim; + lodash.trimEnd = trimEnd; + lodash.trimStart = trimStart; + lodash.truncate = truncate; + lodash.unescape = unescape; + lodash.uniqueId = uniqueId; + lodash.upperCase = upperCase; + lodash.upperFirst = upperFirst; + + // Add aliases. + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.first = head; + + mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }()), { 'chain': false }); + + /*------------------------------------------------------------------------*/ + + /** + * The semantic version number. + * + * @static + * @memberOf _ + * @type {string} + */ + lodash.VERSION = VERSION; + + // Assign default placeholders. + arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + + // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. + arrayEach(['drop', 'take'], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n) { + n = n === undefined ? 1 : nativeMax(toInteger(n), 0); + + var result = (this.__filtered__ && !index) + ? new LazyWrapper(this) + : this.clone(); + + if (result.__filtered__) { + result.__takeCount__ = nativeMin(n, result.__takeCount__); + } else { + result.__views__.push({ + 'size': nativeMin(n, MAX_ARRAY_LENGTH), + 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') + }); + } + return result; + }; + + LazyWrapper.prototype[methodName + 'Right'] = function(n) { + return this.reverse()[methodName](n).reverse(); + }; + }); + + // Add `LazyWrapper` methods that accept an `iteratee` value. + arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { + var type = index + 1, + isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + + LazyWrapper.prototype[methodName] = function(iteratee) { + var result = this.clone(); + result.__iteratees__.push({ + 'iteratee': getIteratee(iteratee, 3), + 'type': type + }); + result.__filtered__ = result.__filtered__ || isFilter; + return result; + }; + }); + + // Add `LazyWrapper` methods for `_.head` and `_.last`. + arrayEach(['head', 'last'], function(methodName, index) { + var takeName = 'take' + (index ? 'Right' : ''); + + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + + // Add `LazyWrapper` methods for `_.initial` and `_.tail`. + arrayEach(['initial', 'tail'], function(methodName, index) { + var dropName = 'drop' + (index ? '' : 'Right'); + + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + + LazyWrapper.prototype.compact = function() { + return this.filter(identity); + }; + + LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); + }; + + LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); + }; + + LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == 'function') { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); + }); + + LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(getIteratee(predicate))); + }; + + LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + + var result = this; + if (result.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result); + } + if (start < 0) { + result = result.takeRight(-start); + } else if (start) { + result = result.drop(start); + } + if (end !== undefined) { + end = toInteger(end); + result = end < 0 ? result.dropRight(-end) : result.take(end - start); + } + return result; + }; + + LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); + }; + + LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); + }; + + // Add `LazyWrapper` methods to `lodash.prototype`. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), + isTaker = /^(?:head|last)$/.test(methodName), + lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], + retUnwrapped = isTaker || /^find/.test(methodName); + + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, + args = isTaker ? [1] : arguments, + isLazy = value instanceof LazyWrapper, + iteratee = args[0], + useLazy = isLazy || isArray(value); + + var interceptor = function(value) { + var result = lodashFunc.apply(lodash, arrayPush([value], args)); + return (isTaker && chainAll) ? result[0] : result; + }; + + if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { + // Avoid lazy use if the iteratee has a "length" value other than `1`. + isLazy = useLazy = false; + } + var chainAll = this.__chain__, + isHybrid = !!this.__actions__.length, + isUnwrapped = retUnwrapped && !chainAll, + onlyLazy = isLazy && !isHybrid; + + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result = func.apply(value, args); + result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); + return new LodashWrapper(result, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result = this.thru(interceptor); + return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; + }; + }); + + // Add `Array` methods to `lodash.prototype`. + arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { + var func = arrayProto[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:pop|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value) { + return func.apply(isArray(value) ? value : [], args); + }); + }; + }); + + // Map minified method names to their real names. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = (lodashFunc.name + ''), + names = realNames[key] || (realNames[key] = []); + + names.push({ 'name': methodName, 'func': lodashFunc }); + } + }); + + realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{ + 'name': 'wrapper', + 'func': undefined + }]; + + // Add methods to `LazyWrapper`. + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + + // Add chain sequence methods to the `lodash` wrapper. + lodash.prototype.at = wrapperAt; + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.next = wrapperNext; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + + // Add lazy aliases. + lodash.prototype.first = lodash.prototype.head; + + if (symIterator) { + lodash.prototype[symIterator] = wrapperToIterator; + } + return lodash; + }); + + /*--------------------------------------------------------------------------*/ + + // Export lodash. + var _ = runInContext(); + + // Some AMD build optimizers, like r.js, check for condition patterns like: + if (true) { + // Expose Lodash on the global object to prevent errors when Lodash is + // loaded by a script tag in the presence of an AMD loader. + // See http://requirejs.org/docs/errors.html#mismatch for more details. + // Use `_.noConflict` to remove Lodash from the global object. + root._ = _; + + // Define as an anonymous module so, through path mapping, it can be + // referenced as the "underscore" module. + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return _; + }.call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } + // Check for `exports` after `define` in case a build optimizer adds it. + else if (freeModule) { + // Export for Node.js. + (freeModule.exports = _)._ = _; + // Export for CommonJS support. + freeExports._ = _; + } + else { + // Export to the global object. + root._ = _; + } +}.call(this)); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19)(module))) + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var util = {}; +module.exports = util; + +util.isPipeObject = function (obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.hasOwnProperty('pipe') && _typeof(obj.pipe) === 'object'; +}; + +util.isPipeJson = function (obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.hasOwnProperty('op') && obj.hasOwnProperty('params'); +}; + +util.isNodeJs = function () { + return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; +}; + +util.arrayBufferToString = function (buf) { + + if (this.isNodeJs()) { + return buf.toString('utf-8'); + } else { + + if ("TextDecoder" in window) { + return new TextDecoder('utf-8').decode(buf); + } else { + var uint8arr = new Uint8Array(buf); + var utf8str = ''; + var i, + len = uint8arr.length; + for (i = 0; i < len; ++i) { + utf8str += String.fromCharCode(uint8arr[i]); + } + return decodeURIComponent(escape(utf8str)); + } + } +}; + +util.callbackAdapter = function (err, response, resolve, reject, callback) { + if (typeof callback == 'function') { + callback(err, response); + } else { + if (err) { + reject(err); + } else { + resolve(response); + } + } +}; + +module.exports.getUtilObject = function (Flexio) { + + return new function () { + + for (var method in util) { + if (util.hasOwnProperty(method)) { + this[method] = util[method]; + } + } + + this.debug = function (msg) { + var cfg = Flexio.getConfig(); + if (cfg.debug) { + var msg = 'flexio-sdk-js: ' + msg; + + console.log(msg); + } + return this; + }; + }(); +}; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + TASK_OP_CALC: 'calc', + TASK_OP_COMMENT: 'comment', + TASK_OP_CONVERT: 'convert', + TASK_OP_COPY: 'copy', + TASK_OP_CREATE: 'create', + TASK_OP_CUSTOM: 'custom', + TASK_OP_DISTINCT: 'distinct', + TASK_OP_DUMP: 'dump', + TASK_OP_DUPLICATE: 'duplicate', + TASK_OP_ECHO: 'echo', + TASK_OP_EMAIL_SEND: 'email', + TASK_OP_EXECUTE: 'execute', + TASK_OP_FIND_REPLACE: 'replace', + TASK_OP_FILTER: 'filter', + TASK_OP_FOREACH: 'foreach', + TASK_OP_GROUP: 'group', + TASK_OP_INSERT: 'insert', + TASK_OP_LIMIT: 'limit', + TASK_OP_LIST: 'list', + TASK_OP_MERGE: 'merge', + TASK_OP_MKDIR: 'mkdir', + TASK_OP_NOP: 'nop', + TASK_OP_PROMPT: 'prompt', + TASK_OP_R: 'r', + TASK_OP_READ: 'read', + TASK_OP_RENAME: 'rename', + TASK_OP_RENDER: 'render', + TASK_OP_REQUEST: 'request', + TASK_OP_SEARCH: 'search', + TASK_OP_SELECT: 'select', + TASK_OP_SEQUENCE: 'sequence', + TASK_OP_SET: 'set', + TASK_OP_SLEEP: 'sleep', + TASK_OP_SORT: 'sort', + TASK_OP_TRANSFORM: 'transform', + TASK_OP_WRITE: 'write' +}; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(6); +var isBuffer = __webpack_require__(22); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object' && !isArray(obj)) { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = merge(result[key], val); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim +}; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var normalizeHeaderName = __webpack_require__(24); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(25); + } else if (typeof process !== 'undefined') { + // For node use HTTP adapter + adapter = __webpack_require__(30); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var enhanceError = __webpack_require__(8); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createError = __webpack_require__(5); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + // Note: status is not exposed by XDomainRequest + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + error.request = request; + error.response = response; + return error; +}; + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +function encode(val) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } + + if (!utils.isArray(val)) { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +module.exports = require("http"); + +/***/ }), +/* 11 */ +/***/ (function(module, exports) { + +module.exports = require("https"); + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var url = __webpack_require__(13); +var assert = __webpack_require__(31); +var http = __webpack_require__(10); +var https = __webpack_require__(11); +var Writable = __webpack_require__(32).Writable; +var debug = __webpack_require__(33)('follow-redirects'); + +var nativeProtocols = {'http:': http, 'https:': https}; +var schemes = {}; +var exports = module.exports = { + maxRedirects: 21 +}; +// RFC7231§4.2.1: Of the request methods defined by this specification, +// the GET, HEAD, OPTIONS, and TRACE methods are defined to be safe. +var safeMethods = {GET: true, HEAD: true, OPTIONS: true, TRACE: true}; + +// Create handlers that pass events from native requests +var eventHandlers = Object.create(null); +['abort', 'aborted', 'error', 'socket'].forEach(function (event) { + eventHandlers[event] = function (arg) { + this._redirectable.emit(event, arg); + }; +}); + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._options = options; + this._redirectCount = 0; + this._bufferedWrites = []; + + // Attach a callback if passed + if (responseCallback) { + this.on('response', responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + self._processResponse(response); + }; + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf('?'); + if (searchPos < 0) { + options.pathname = options.path; + } else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + var protocol = this._options.protocol; + if (this._options.agents) { + this._options.agent = this._options.agents[schemes[protocol]]; + } + + // Create the native request + var nativeProtocol = nativeProtocols[protocol]; + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + this._currentUrl = url.format(this._options); + + // Set up event handlers + request._redirectable = this; + for (var event in eventHandlers) { + /* istanbul ignore else */ + if (event) { + request.on(event, eventHandlers[event]); + } + } + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // If the request doesn't have en entity, end directly. + var bufferedWrites = this._bufferedWrites; + if (bufferedWrites.length === 0) { + request.end(); + // Otherwise, write the request entity and end afterwards. + } else { + var i = 0; + (function writeNext() { + if (i < bufferedWrites.length) { + var bufferedWrite = bufferedWrites[i++]; + request.write(bufferedWrite.data, bufferedWrite.encoding, writeNext); + } else { + request.end(); + } + })(); + } + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + var location = response.headers.location; + if (location && this._options.followRedirects !== false && + response.statusCode >= 300 && response.statusCode < 400) { + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + return this.emit('error', new Error('Max redirects exceeded.')); + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe […], + // since the user might not wish to redirect an unsafe request. + // RFC7231§6.4.7: The 307 (Temporary Redirect) status code indicates + // that the target resource resides temporarily under a different URI + // and the user agent MUST NOT change the request method + // if it performs an automatic redirection to that URI. + var header; + var headers = this._options.headers; + if (response.statusCode !== 307 && !(this._options.method in safeMethods)) { + this._options.method = 'GET'; + // Drop a possible entity and headers related to it + this._bufferedWrites = []; + for (header in headers) { + if (/^content-/i.test(header)) { + delete headers[header]; + } + } + } + + // Drop the Host header, as the redirect might lead to a different host + if (!this._isRedirect) { + for (header in headers) { + if (/^host$/i.test(header)) { + delete headers[header]; + } + } + } + + // Perform the redirected request + var redirectUrl = url.resolve(this._currentUrl, location); + debug('redirecting to', redirectUrl); + Object.assign(this._options, url.parse(redirectUrl)); + this._isRedirect = true; + this._performRequest(); + } else { + // The response is not a redirect; return it as-is + response.responseUrl = this._currentUrl; + this.emit('response', response); + + // Clean up + delete this._options; + delete this._bufferedWrites; + } +}; + +// Aborts the current native request +RedirectableRequest.prototype.abort = function () { + this._currentRequest.abort(); +}; + +// Flushes the headers of the current native request +RedirectableRequest.prototype.flushHeaders = function () { + this._currentRequest.flushHeaders(); +}; + +// Sets the noDelay option of the current native request +RedirectableRequest.prototype.setNoDelay = function (noDelay) { + this._currentRequest.setNoDelay(noDelay); +}; + +// Sets the socketKeepAlive option of the current native request +RedirectableRequest.prototype.setSocketKeepAlive = function (enable, initialDelay) { + this._currentRequest.setSocketKeepAlive(enable, initialDelay); +}; + +// Sets the timeout option of the current native request +RedirectableRequest.prototype.setTimeout = function (timeout, callback) { + this._currentRequest.setTimeout(timeout, callback); +}; + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + this._currentRequest.write(data, encoding, callback); + this._bufferedWrites.push({data: data, encoding: encoding}); +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + this._currentRequest.end(data, encoding, callback); + if (data) { + this._bufferedWrites.push({data: data, encoding: encoding}); + } +}; + +// Export a redirecting wrapper for each native protocol +Object.keys(nativeProtocols).forEach(function (protocol) { + var scheme = schemes[protocol] = protocol.substr(0, protocol.length - 1); + var nativeProtocol = nativeProtocols[protocol]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes an HTTP request, following redirects + wrappedProtocol.request = function (options, callback) { + if (typeof options === 'string') { + options = url.parse(options); + options.maxRedirects = exports.maxRedirects; + } else { + options = Object.assign({ + maxRedirects: exports.maxRedirects, + protocol: protocol + }, options); + } + assert.equal(options.protocol, protocol, 'protocol mismatch'); + debug('options', options); + + return new RedirectableRequest(options, callback); + }; + + // Executes a GET request, following redirects + wrappedProtocol.get = function (options, callback) { + var request = wrappedProtocol.request(options, callback); + request.end(); + return request; + }; +}); + + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +module.exports = require("url"); + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__(35); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + + +var Flexio = __webpack_require__(18); + +exports.default = Flexio; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var axios = __webpack_require__(20); +var task = __webpack_require__(50); + +var base_url = 'https://www.flex.io/api/v1'; + +var cfg = { + token: '', + baseUrl: 'https://www.flex.io/api/v1', + insecure: false, + debug: false +}; + +var pipeToCode = function pipeToCode(task_arr) { + var retval = _.map(task_arr, function (t) { + var cmd_str = Flexio.task.toCode(t); + + if (_.get(t, 'params.lang', '') != 'python') cmd_str = cmd_str.replace(/\n/g, '\n '); + + return cmd_str; + }); + + var retval = ['Flexio.pipe()'].concat(retval); + + return retval.join('\n .'); +}; + +var Flexio = { + version: __webpack_require__(75).version, + + _init: function _init() { + this.connections = __webpack_require__(76).getConnectionsObject(this); + this.pipes = __webpack_require__(77).getPipesObject(this); + this.util = __webpack_require__(1).getUtilObject(this); + this._http = null; + + var getPipeConstructor = __webpack_require__(78).getPipeConstructor; + this.pipe = getPipeConstructor(this); + + + var getConnectionConstructor = __webpack_require__(79).getConnectionConstructor; + this.connection = getConnectionConstructor(this); + }, + setup: function setup(token, params) { + cfg = _.assign(cfg, { token: token }, params); + this._http = null; + this._createHttp(); + return this; + }, + getConfig: function getConfig() { + return _.assign({}, cfg); + }, + http: function http() { + if (!this._http) this._createHttp(); + + return this._http; + }, + + + task: task, + + _createHttp: function _createHttp() { + var axios_opts = { + baseURL: cfg.baseUrl, + headers: { 'Authorization': 'Bearer ' + cfg.token } + }; + + if (cfg.insecure === true) process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; + + this._http = axios.create(axios_opts); + } +}; + +Flexio._init(); + +module.exports = Flexio; + +/***/ }), +/* 19 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(21); + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var bind = __webpack_require__(6); +var Axios = __webpack_require__(23); +var defaults = __webpack_require__(4); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(utils.merge(defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(16); +axios.CancelToken = __webpack_require__(48); +axios.isCancel = __webpack_require__(15); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(49); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + + +/***/ }), +/* 22 */ +/***/ (function(module, exports) { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var defaults = __webpack_require__(4); +var utils = __webpack_require__(3); +var InterceptorManager = __webpack_require__(43); +var dispatchRequest = __webpack_require__(44); +var isAbsoluteURL = __webpack_require__(46); +var combineURLs = __webpack_require__(47); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = utils.merge({ + url: arguments[0] + }, arguments[1]); + } + + config = utils.merge(defaults, this.defaults, { method: 'get' }, config); + config.method = config.method.toLowerCase(); + + // Support baseURL config + if (config.baseURL && !isAbsoluteURL(config.url)) { + config.url = combineURLs(config.baseURL, config.url); + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var settle = __webpack_require__(7); +var buildURL = __webpack_require__(9); +var parseHeaders = __webpack_require__(26); +var isURLSameOrigin = __webpack_require__(27); +var createError = __webpack_require__(5); +var btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(28); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + var loadEvent = 'onreadystatechange'; + var xDomain = false; + + // For IE 8/9 CORS support + // Only supports POST and GET calls and doesn't returns the response headers. + // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest. + if (process.env.NODE_ENV !== 'test' && + typeof window !== 'undefined' && + window.XDomainRequest && !('withCredentials' in request) && + !isURLSameOrigin(config.url)) { + request = new window.XDomainRequest(); + loadEvent = 'onload'; + xDomain = true; + request.onprogress = function handleProgress() {}; + request.ontimeout = function handleTimeout() {}; + } + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request[loadEvent] = function handleLoad() { + if (!request || (request.readyState !== 4 && !xDomain)) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) + status: request.status === 1223 ? 204 : request.status, + statusText: request.status === 1223 ? 'No Content' : request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + var cookies = __webpack_require__(29); + + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (config.withCredentials) { + request.withCredentials = true; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (requestData === undefined) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js + +var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + +function E() { + this.message = 'String contains an invalid character'; +} +E.prototype = new Error; +E.prototype.code = 5; +E.prototype.name = 'InvalidCharacterError'; + +function btoa(input) { + var str = String(input); + var output = ''; + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3 / 4); + if (charCode > 0xFF) { + throw new E(); + } + block = block << 8 | charCode; + } + return output; +} + +module.exports = btoa; + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var settle = __webpack_require__(7); +var buildURL = __webpack_require__(9); +var http = __webpack_require__(10); +var https = __webpack_require__(11); +var httpFollow = __webpack_require__(12).http; +var httpsFollow = __webpack_require__(12).https; +var url = __webpack_require__(13); +var zlib = __webpack_require__(41); +var pkg = __webpack_require__(42); +var createError = __webpack_require__(5); +var enhanceError = __webpack_require__(8); + +/*eslint consistent-return:0*/ +module.exports = function httpAdapter(config) { + return new Promise(function dispatchHttpRequest(resolve, reject) { + var data = config.data; + var headers = config.headers; + var timer; + var aborted = false; + + // Set User-Agent (required by some servers) + // Only set header if it hasn't been set in config + // See https://github.com/mzabriskie/axios/issues/69 + if (!headers['User-Agent'] && !headers['user-agent']) { + headers['User-Agent'] = 'axios/' + pkg.version; + } + + if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = new Buffer(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = new Buffer(data, 'utf-8'); + } else { + return reject(createError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + config + )); + } + + // Add Content-Length header if data exists + headers['Content-Length'] = data.length; + } + + // HTTP basic authentication + var auth = undefined; + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + auth = username + ':' + password; + } + + // Parse url + var parsed = url.parse(config.url); + var protocol = parsed.protocol || 'http:'; + + if (!auth && parsed.auth) { + var urlAuth = parsed.auth.split(':'); + var urlUsername = urlAuth[0] || ''; + var urlPassword = urlAuth[1] || ''; + auth = urlUsername + ':' + urlPassword; + } + + if (auth) { + delete headers.Authorization; + } + + var isHttps = protocol === 'https:'; + var agent = isHttps ? config.httpsAgent : config.httpAgent; + + var options = { + hostname: parsed.hostname, + port: parsed.port, + path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''), + method: config.method, + headers: headers, + agent: agent, + auth: auth + }; + + var proxy = config.proxy; + if (!proxy) { + var proxyEnv = protocol.slice(0, -1) + '_proxy'; + var proxyUrl = process.env[proxyEnv] || process.env[proxyEnv.toUpperCase()]; + if (proxyUrl) { + var parsedProxyUrl = url.parse(proxyUrl); + proxy = { + host: parsedProxyUrl.hostname, + port: parsedProxyUrl.port + }; + + if (parsedProxyUrl.auth) { + var proxyUrlAuth = parsedProxyUrl.auth.split(':'); + proxy.auth = { + username: proxyUrlAuth[0], + password: proxyUrlAuth[1] + }; + } + } + } + + if (proxy) { + options.hostname = proxy.host; + options.host = proxy.host; + options.headers.host = parsed.hostname + (parsed.port ? ':' + parsed.port : ''); + options.port = proxy.port; + options.path = protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path; + + // Basic proxy authorization + if (proxy.auth) { + var base64 = new Buffer(proxy.auth.username + ':' + proxy.auth.password, 'utf8').toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + } + + var transport; + if (config.maxRedirects === 0) { + transport = isHttps ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + transport = isHttps ? httpsFollow : httpFollow; + } + + // Create the request + var req = transport.request(options, function handleResponse(res) { + if (aborted) return; + + // Response has been received so kill timer that handles request timeout + clearTimeout(timer); + timer = null; + + // uncompress the response body transparently if required + var stream = res; + switch (res.headers['content-encoding']) { + /*eslint default-case:0*/ + case 'gzip': + case 'compress': + case 'deflate': + // add the unzipper to the body stream processing pipeline + stream = stream.pipe(zlib.createUnzip()); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + } + + // return the last request in case of redirects + var lastRequest = res.req || req; + + var response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: res.headers, + config: config, + request: lastRequest + }; + + if (config.responseType === 'stream') { + response.data = stream; + settle(resolve, reject, response); + } else { + var responseBuffer = []; + stream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) { + reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + config, null, lastRequest)); + } + }); + + stream.on('error', function handleStreamError(err) { + if (aborted) return; + reject(enhanceError(err, config, null, lastRequest)); + }); + + stream.on('end', function handleStreamEnd() { + var responseData = Buffer.concat(responseBuffer); + if (config.responseType !== 'arraybuffer') { + responseData = responseData.toString('utf8'); + } + + response.data = responseData; + settle(resolve, reject, response); + }); + } + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + if (aborted) return; + reject(enhanceError(err, config, null, req)); + }); + + // Handle request timeout + if (config.timeout && !timer) { + timer = setTimeout(function handleRequestTimeout() { + req.abort(); + reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req)); + aborted = true; + }, config.timeout); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (aborted) { + return; + } + + req.abort(); + reject(cancel); + aborted = true; + }); + } + + // Send the request + if (utils.isStream(data)) { + data.pipe(req); + } else { + req.end(data); + } + }); +}; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports) { + +module.exports = require("assert"); + +/***/ }), +/* 32 */ +/***/ (function(module, exports) { + +module.exports = require("stream"); + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process !== 'undefined' && process.type === 'renderer') { + module.exports = __webpack_require__(34); +} else { + module.exports = __webpack_require__(36); +} + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(14); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} + + +/***/ }), +/* 35 */ +/***/ (function(module, exports) { + +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} + + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Module dependencies. + */ + +var tty = __webpack_require__(37); +var util = __webpack_require__(38); + +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(14); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); + + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); + + obj[prop] = val; + return obj; +}, {}); + +/** + * The file descriptor to write the `debug()` calls to. + * Set the `DEBUG_FD` env variable to override with another value. i.e.: + * + * $ DEBUG_FD=3 node script.js 3>debug.log + */ + +var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + +if (1 !== fd && 2 !== fd) { + util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() +} + +var stream = 1 === fd ? process.stdout : + 2 === fd ? process.stderr : + createWritableStdioStream(fd); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(fd); +} + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; + +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ + +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; + + if (useColors) { + var c = this.color; + var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = new Date().toUTCString() + + ' ' + name + ' ' + args[0]; + } +} + +/** + * Invokes `util.format()` with the specified arguments and writes to `stream`. + */ + +function log() { + return stream.write(util.format.apply(util, arguments) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Copied from `node/src/node.js`. + * + * XXX: It's lame that node doesn't expose this API out-of-the-box. It also + * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. + */ + +function createWritableStdioStream (fd) { + var stream; + var tty_wrap = process.binding('tty_wrap'); + + // Note stream._type is used for test-module-load-list.js + + switch (tty_wrap.guessHandleType(fd)) { + case 'TTY': + stream = new tty.WriteStream(fd); + stream._type = 'tty'; + + // Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + case 'FILE': + var fs = __webpack_require__(39); + stream = new fs.SyncWriteStream(fd, { autoClose: false }); + stream._type = 'fs'; + break; + + case 'PIPE': + case 'TCP': + var net = __webpack_require__(40); + stream = new net.Socket({ + fd: fd, + readable: false, + writable: true + }); + + // FIXME Should probably have an option in net.Socket to create a + // stream from an existing fd which is writable only. But for now + // we'll just add this hack and set the `readable` member to false. + // Test: ./node test/fixtures/echo.js < /etc/passwd + stream.readable = false; + stream.read = null; + stream._type = 'pipe'; + + // FIXME Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + default: + // Probably an error on in uv_guess_handle() + throw new Error('Implement me. Unknown stream file type!'); + } + + // For supporting legacy API we put the FD here. + stream.fd = fd; + + stream._isStdio = true; + + return stream; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init (debug) { + debug.inspectOpts = {}; + + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ + +exports.enable(load()); + + +/***/ }), +/* 37 */ +/***/ (function(module, exports) { + +module.exports = require("tty"); + +/***/ }), +/* 38 */ +/***/ (function(module, exports) { + +module.exports = require("util"); + +/***/ }), +/* 39 */ +/***/ (function(module, exports) { + +module.exports = require("fs"); + +/***/ }), +/* 40 */ +/***/ (function(module, exports) { + +module.exports = require("net"); + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + +module.exports = require("zlib"); + +/***/ }), +/* 42 */ +/***/ (function(module, exports) { + +module.exports = {"_args":[["axios@0.16.2","C:\\src\\flexio-sdk-js"]],"_from":"axios@0.16.2","_id":"axios@0.16.2","_inBundle":false,"_integrity":"sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=","_location":"/axios","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"axios@0.16.2","name":"axios","escapedName":"axios","rawSpec":"0.16.2","saveSpec":null,"fetchSpec":"0.16.2"},"_requiredBy":["/"],"_resolved":"https://registry.npmjs.org/axios/-/axios-0.16.2.tgz","_spec":"0.16.2","_where":"C:\\src\\flexio-sdk-js","author":{"name":"Matt Zabriskie"},"browser":{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},"bugs":{"url":"https://github.com/mzabriskie/axios/issues"},"dependencies":{"follow-redirects":"^1.2.3","is-buffer":"^1.1.5"},"description":"Promise based HTTP client for the browser and node.js","devDependencies":{"coveralls":"^2.11.9","es6-promise":"^4.0.5","grunt":"^1.0.1","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-nodeunit":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^19.0.0","grunt-karma":"^2.0.0","grunt-ts":"^6.0.0-beta.3","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1","karma":"^1.3.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-firefox-launcher":"^1.0.0","karma-jasmine":"^1.0.2","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-phantomjs-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2","minimist":"^1.2.0","phantomjs-prebuilt":"^2.1.7","sinon":"^1.17.4","typescript":"^2.0.3","url-search-params":"^0.6.1","webpack":"^1.13.1","webpack-dev-server":"^1.14.1"},"homepage":"https://github.com/mzabriskie/axios","keywords":["xhr","http","ajax","promise","node"],"license":"MIT","main":"index.js","name":"axios","repository":{"type":"git","url":"git+https://github.com/mzabriskie/axios.git"},"scripts":{"build":"NODE_ENV=production grunt build","coveralls":"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js","examples":"node ./examples/server.js","postversion":"git push && git push --tags","preversion":"npm test","start":"node ./sandbox/server.js","test":"grunt test","version":"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},"typings":"./index.d.ts","version":"0.16.2"} + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var transformData = __webpack_require__(45); +var isCancel = __webpack_require__(15); +var defaults = __webpack_require__(4); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers || {} + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Cancel = __webpack_require__(16); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var taskOps = __webpack_require__(2); + +var createFn = __webpack_require__(51); +var convertFn = __webpack_require__(52); +var copyFn = __webpack_require__(53); +var dumpFn = __webpack_require__(54); +var echoFn = __webpack_require__(55); +var emailFn = __webpack_require__(56); +var executeFn = __webpack_require__(57); +var filterFn = __webpack_require__(58); +var foreachFn = __webpack_require__(59); +var insertFn = __webpack_require__(60); +var limitFn = __webpack_require__(61); +var mergeFn = __webpack_require__(62); +var mkdirFn = __webpack_require__(63); +var listFn = __webpack_require__(64); +var readFn = __webpack_require__(65); +var renderFn = __webpack_require__(66); +var requestFn = __webpack_require__(67); +var selectFn = __webpack_require__(68); +var sequenceFn = __webpack_require__(69); +var setFn = __webpack_require__(70); +var sleepFn = __webpack_require__(71); +var taskFn = __webpack_require__(72); +var transformFn = __webpack_require__(73); +var writeFn = __webpack_require__(74); + +var toCode = function toCode(json, Flexio) { + var op = _.get(json, 'op', ''); + + switch (op) { + default: + return taskFn.toCode(json); + + case taskOps.TASK_OP_CREATE: + return createFn.toCode(json, Flexio); + case taskOps.TASK_OP_CONVERT: + return convertFn.toCode(json, Flexio); + case taskOps.TASK_OP_COPY: + return copyFn.toCode(json, Flexio); + case taskOps.TASK_OP_DUMP: + return dumpFn.toCode(json, Flexio); + case taskOps.TASK_OP_ECHO: + return echoFn.toCode(json, Flexio); + case taskOps.TASK_OP_EMAIL_SEND: + return emailFn.toCode(json, Flexio); + case taskOps.TASK_OP_EXECUTE: + return executeFn.toCode(json, Flexio); + case taskOps.TASK_OP_FILTER: + return filterFn.toCode(json, Flexio); + case taskOps.TASK_OP_FOREACH: + return foreachFn.toCode(json, Flexio); + case taskOps.TASK_OP_INSERT: + return insertFn.toCode(json, Flexio); + case taskOps.TASK_OP_LIMIT: + return limitFn.toCode(json, Flexio); + case taskOps.TASK_OP_LIST: + return listFn.toCode(json, Flexio); + case taskOps.TASK_OP_MERGE: + return mergeFn.toCode(json, Flexio); + case taskOps.TASK_OP_MKDIR: + return mkdirFn.toCode(json, Flexio); + case taskOps.TASK_OP_READ: + return readFn.toCode(json, Flexio); + case taskOps.TASK_OP_RENDER: + return renderFn.toCode(json, Flexio); + case taskOps.TASK_OP_REQUEST: + return requestFn.toCode(json, Flexio); + case taskOps.TASK_OP_SELECT: + return selectFn.toCode(json, Flexio); + case taskOps.TASK_OP_SEQUENCE: + return sequenceFn.toCode(json, Flexio); + case taskOps.TASK_OP_SET: + return setFn.toCode(json, Flexio); + case taskOps.TASK_OP_SLEEP: + return sleepFn.toCode(json, Flexio); + case taskOps.TASK_OP_TRANSFORM: + return transformFn.toCode(json, Flexio); + case taskOps.TASK_OP_WRITE: + return writeFn.toCode(json, Flexio); + } +}; + +module.exports = { + create: createFn, + convert: convertFn, + copy: copyFn, + dump: dumpFn, + echo: echoFn, + email: emailFn, + execute: executeFn.execute, + insert: insertFn, + filter: filterFn, + + foreach: foreachFn, + javascript: executeFn.javascript, + limit: limitFn, + list: listFn, + merge: mergeFn, + mkdir: mkdirFn, + python: executeFn.python, + read: readFn, + render: renderFn, + request: requestFn, + select: selectFn, + sequence: sequenceFn, + set: setFn, + sleep: sleepFn, + task: taskFn, + transform: transformFn, + write: writeFn, + + toCode: toCode +}; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var create = function create(p0, p1) { + + if (Array.isArray(p0)) { + return { + op: taskOps.TASK_OP_CREATE, + params: { + content_type: "application/vnd.flexio.table", + columns: p0 + } + }; + } else { + var ret = { + op: taskOps.TASK_OP_CREATE, + params: { + path: p0 + } + }; + + if (p1 !== undefined) { + if (Array.isArray(p1)) { + ret.params.columns = p1; + } else { + ret.params.content_type = p1; + } + } + + return ret; + } +}; + +create.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || undefined; + var content_type = JSON.stringify(params.content_type) || undefined; + var columns = JSON.stringify(params.columns) || undefined; + + if (path !== undefined) { + + if (columns !== undefined) { + return 'create(' + path + ', ' + columns + ')'; + } else if (content_type !== undefined) { + return 'create(' + path + ', ' + content_type + ')'; + } else { + return 'create(' + path + ')'; + } + } else { + + if (columns !== undefined) { + return 'create(' + columns + ')'; + } else if (content_type !== undefined) { + return ''; + } + } +}; + +module.exports = create; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var DELIMITER_NONE = '{none}'; +var DELIMITER_COMMA = '{comma}'; +var DELIMITER_SEMICOLON = '{semicolon}'; +var DELIMITER_PIPE = '{pipe}'; +var DELIMITER_TAB = '{tab}'; +var DELIMITER_SPACE = '{space}'; + +var TEXT_QUALIFIER_NONE = '{none}'; +var TEXT_QUALIFIER_SINGLE_QUOTE = '{single-quote}'; +var TEXT_QUALIFIER_DOUBLE_QUOTE = '{double-quote}'; + +var FORMAT_DELIMITED_TEXT = 'delimited'; +var FORMAT_FIXED_LENGTH = 'fixed'; +var FORMAT_JSON = 'json'; +var FORMAT_RSS = 'rss'; +var FORMAT_PDF = 'pdf'; +var FORMAT_TABLE = 'table'; + +var SHORTHAND_CSV = 'csv'; +var SHORTHAND_TSV = 'tsv'; + +var FORMAT_CSV = { + format: FORMAT_DELIMITED_TEXT, + delimiter: DELIMITER_COMMA, + header: true, + qualifier: TEXT_QUALIFIER_DOUBLE_QUOTE +}; + +var FORMAT_TSV = { + format: FORMAT_DELIMITED_TEXT, + delimiter: DELIMITER_TAB, + header: true, + qualifier: TEXT_QUALIFIER_NONE +}; + +var convert = function convert(input, output) { + + var task = { + op: taskOps.TASK_OP_CONVERT, + params: {} + }; + + if (_.isString(input)) { + if (input == SHORTHAND_CSV) _.set(task, 'params.input', FORMAT_CSV);else if (input == SHORTHAND_TSV) _.set(task, 'params.input', FORMAT_TSV);else _.set(task, 'params.input.format', input); + } else if (_.isPlainObject(input)) { + _.set(task, 'params.input', input); + } + + if (_.isString(output)) { + if (output == SHORTHAND_CSV) _.set(task, 'params.output', FORMAT_CSV);else if (output == SHORTHAND_TSV) _.set(task, 'params.output', FORMAT_TSV);else _.set(task, 'params.output.format', output); + } else if (_.isPlainObject(output)) { + _.set(task, 'params.output', output); + } + + return task; +}; + +convert.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var input = _.get(params, 'input', {}); + var output = _.get(params, 'output', {}); + + var p1; + var p2; + + if (_.isEqual(input, FORMAT_CSV)) p1 = SHORTHAND_CSV; + if (_.isEqual(output, FORMAT_CSV)) p2 = SHORTHAND_CSV; + + if (_.isEqual(input, FORMAT_TSV)) p1 = SHORTHAND_TSV; + if (_.isEqual(output, FORMAT_TSV)) p2 = SHORTHAND_TSV; + + if (_.isEmpty(_.omit(input, ['format']))) p1 = _.get(input, 'format', ''); + if (_.isEmpty(_.omit(output, ['format']))) p2 = _.get(output, 'format', ''); + + if (!p1) p1 = input; + if (!p2) p2 = output; + + return 'convert(' + JSON.stringify(p1) + ', ' + JSON.stringify(p2) + ')'; +}; + +module.exports = convert; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var copy = function copy(from, to, options) { + var ret = { + op: taskOps.TASK_OP_COPY, + params: { + from: from, + to: to + } + }; + + if (_.isPlainObject(options)) { + ret.params.options = options; + } + return ret; +}; + +copy.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var from = JSON.stringify(params.from) || '""'; + var to = JSON.stringify(params.to) || '""'; + var options = params.hasOwnProperty('options') && _.isPlainObject(params.options) ? JSON.stringify(params.options) : null; + + var ret = 'copy(' + from + ', ' + to; + if (options !== null) { + ret += ', ' + options; + } + return ret + ')'; +}; + +module.exports = copy; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var dump = function dump(msg) { + return { + op: taskOps.TASK_OP_DUMP, + params: { + msg: msg + } + }; +}; + +dump.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var msg = JSON.stringify(params.msg) || '""'; + return 'dump(' + msg + ')'; +}; + +module.exports = dump; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var echo = function echo(msg) { + return { + op: taskOps.TASK_OP_ECHO, + params: { + msg: msg + } + }; +}; + +echo.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var msg = JSON.stringify(params.msg) || '""'; + return 'echo(' + msg + ')'; +}; + +module.exports = echo; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var email = function email(params) { + if (!_.isPlainObject(params)) throw 'The first function parameter must be an object'; + + if (!_.has(params, 'to')) throw 'The `to` parameter is required'; + + if (!_.has(params, 'body_text')) throw 'The `body_text` parameter is required'; + + return { + op: taskOps.TASK_OP_EMAIL_SEND, + params: params + }; +}; + +email.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + return 'email(' + JSON.stringify(params, null, 2) + ')'; +}; + +module.exports = email; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); + +var isNodeJs = function isNodeJs() { + return typeof process !== 'undefined'; +}; + +var toBase64 = function toBase64(str) { + try { + if (isNodeJs()) { + return Buffer(str, 'utf8').toString('base64'); + } else { + return btoa(unescape(encodeURIComponent(str))); + } + } catch (e) { + return e; + } +}; + +var fromBase64 = function fromBase64(str) { + try { + if (isNodeJs()) { + return Buffer.from(str, 'base64').toString('utf8'); + } else { + return decodeURIComponent(escape(atob(str))); + } + } catch (e) { + return e; + } +}; + +var getJsFunctionBody = function getJsFunctionBody(f) { + var body; + + try { + body = f.toString(); + + body = body.substring(body.indexOf('{') + 1, body.lastIndexOf('}')); + } catch (e) { + body = ''; + } + + return body; +}; + +var getJsExport = function getJsExport(f) { + if (_.isString(f)) return f; + + if (_.isFunction(f)) { + var body; + + if (f.length == 0) { + body = getJsFunctionBody(f); + return 'exports.flexio_handler = function(context) ' + body; + } else { + body = f.toString(); + if (body.substring(0, 8) == 'function') { + body = body.slice(8); + } else { + var arrow = body.indexOf('=>'); + var brace = body.indexOf('{'); + + if (arrow >= 0 && arrow < brace) { + body = body.replace('=>\s*{', '{'); + } + } + return 'exports.flexio_handler = function' + body; + } + } +}; + +var execute = function execute() { + var args = Array.from(arguments); + var param0 = _.get(args, '[0]', null); + var param1 = _.get(args, '[1]', null); + var param2 = _.get(args, '[2]', null); + var lang, code, check; + + var task = { + op: taskOps.TASK_OP_EXECUTE, + params: {} + }; + + if (param0 == 'python' || param0 == 'javascript') { + lang = param0; + code = param1; + if (code === null || code === undefined) { + code = ''; + } + check = param2; + } else { + lang = 'javascript'; + code = param0; + check = param1; + } + + if (lang == 'javascript') { + code = getJsExport(code); + } + + _.set(task, 'params.lang', lang); + + var http_regex = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/; + if (code.match(http_regex)) { + _.set(task, 'params.path', code); + } else { + _.set(task, 'params.code', toBase64(code)); + } + + if (check !== null) { + _.set(task, 'params.integrity', check); + } + + return task; +}; + +var javascript = function javascript() { + var args = Array.from(arguments); + args.unshift('javascript'); + return execute.apply(this, args); +}; + +var python = function python() { + var args = Array.from(arguments); + args.unshift('python'); + return execute.apply(this, args); +}; + +var toCode = function toCode(json) { + var params = _.get(json, 'params', {}); + var lang = params.lang || ''; + var code = fromBase64(params.code || ''); + + switch (lang) { + case 'javascript': + code = code.replace('exports.flexio_handler =', ''); + return 'javascript(' + code.trim() + ')'; + case 'python': + return 'python(`\n' + code + '\n`)'; + default: + return 'execute(' + JSON.stringify(lang) + ', `\n' + code + '\n`)'; + } +}; + +module.exports = { + execute: execute, + javascript: javascript, + python: python, + toCode: toCode +}; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var filter = function filter(where) { + + if (_.isNil(where)) throw 'The `filter` parameter is required'; + + return { + op: taskOps.TASK_OP_FILTER, + params: { + where: where + } + }; +}; + +filter.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var where = JSON.stringify(params.where) || '""'; + return 'filter(' + where + ')'; +}; + +module.exports = filter; + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var foreach = function foreach(p0, p1) { + + var res = { + op: taskOps.TASK_OP_FOREACH, + params: {} + }; + + if (typeof p0 === 'string' || p0 instanceof String) { + res.params.spec = p0; + } + + if (util.isPipeObject(p0)) { + res.params.run = p0.pipe.task; + } else if (util.isPipeObject(p1)) { + res.params.run = p1.pipe.task; + } + + return res; +}; + +foreach.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}), + p = []; + if (params.hasOwnProperty('spec')) { + p.push(JSON.stringify(params.spec)); + } + if (params.hasOwnProperty('run')) { + p.push(Flexio.task.toCode(params.run, Flexio)); + } + + return 'foreach(' + p.join(', ') + ')'; +}; + +module.exports = foreach; + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var insert = function insert(path, values) { + + var data; + if (Array.isArray(values)) data = values;else data = [values]; + + return { + op: taskOps.TASK_OP_INSERT, + params: { + path: path, + values: data + } + }; +}; + +insert.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = _.get(params, 'path', undefined); + var values = _.get(params, 'values', undefined); + + if (!Array.isArray(values)) values = [values]; + + path = JSON.stringify(path); + values = JSON.stringify(values); + + return 'insert(' + path + ', ' + values + ')'; +}; + +module.exports = insert; + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var limit = function limit(value) { + value = _.defaultTo(value, 10); + + return { + op: taskOps.TASK_OP_LIMIT, + params: { + value: value + } + }; +}; + +limit.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var val = JSON.stringify(params.value) || ''; + return 'limit(' + val + ')'; +}; + +module.exports = limit; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var merge = function merge(path) { + + if (Array.isArray(path)) { + var files = path; + } else { + var files = []; + for (var i = 0; i < arguments.length; ++i) { + files.push(arguments[i]); + } + } + + return { + op: taskOps.TASK_OP_MERGE, + params: { + files: files + } + }; +}; + +merge.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var files = _.get(params, 'files', []); + for (var i = 0; i < files.length; ++i) { + if (typeof files[i] === 'string' || files[i] instanceof String) { + files[i] = JSON.stringify(files[i]); + } else { + files[i] = Flexio.merge.toCode(files[i], Flexio); + } + } + + var param = files.length >= 10 ? '[' + files.join(', ') + ']' : files.join(', '); + return 'merge(' + param + ')'; +}; + +module.exports = merge; + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var mkdir = function mkdir(path) { + return { + op: taskOps.TASK_OP_MKDIR, + params: { + path: path + } + }; +}; + +mkdir.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'mkdir(' + path + ')'; +}; + +module.exports = mkdir; + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var list = function list(path) { + return { + op: taskOps.TASK_OP_LIST, + params: { + path: path + } + }; +}; + +list.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'list(' + path + ')'; +}; + +module.exports = list; + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var read = function read(path) { + return { + op: taskOps.TASK_OP_READ, + params: { + path: path + } + }; +}; + +read.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'read(' + path + ')'; +}; + +module.exports = read; + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); + +var defaults = { + format: 'png', + width: 800, + height: 600, + scrollbars: false +}; + +var render = function render(url, options) { + var args = Array.from(arguments); + var url = _.get(args, '[0]', ''); + var params = _.get(args, '[1]', {}); + + if (_.isNil(url)) throw 'The `url` parameter is required'; + + if (_.isPlainObject(_.get(args, '[0]', {}))) { + var params = _.get(args, '[0]', {}); + } else { + var params = _.assign({}, defaults, options, { url: url }); + } + + return { + op: taskOps.TASK_OP_RENDER, + params: params + }; +}; + +render.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var url = JSON.stringify(params.url) || ''; + var opts = _.omit(params, ['url']); + + if (_.isEqual(opts, defaults)) return 'render(' + url + ')';else return 'render(' + url + ', ' + JSON.stringify(opts, null, 2) + ')'; +}; + +module.exports = render; + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var request = function request() { + var args = Array.from(arguments); + var url = _.get(args, '[0]', ''); + var params = _.get(args, '[1]', {}); + + if (_.isPlainObject(_.get(args, '[0]', {}))) { + params = _.get(args, '[0]', {}); + } else { + params = _.assign({}, { url: url }, params); + } + + params = _.assign({ method: 'GET' }, params); + + return { + op: taskOps.TASK_OP_REQUEST, + params: params + }; +}; + +request.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var url = _.get(params, 'url', ''); + var opts = _.omit(params, ['url']); + if (_.get(opts, 'method', '') == 'GET') opts = _.omit(opts, ['method']); + + if (_.isEmpty(opts)) return 'request(' + JSON.stringify(url) + ')';else return 'request(' + JSON.stringify(url) + ', ' + JSON.stringify(opts, null, 2) + ')'; +}; + +module.exports = request; + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var select = function select() { + var columns = Array.from(arguments); + + if (columns.length == 1 && _.isArray(_.get(columns, '[0]'))) columns = _.get(columns, '[0]', []); + + return { + op: taskOps.TASK_OP_SELECT, + params: { + columns: columns + } + }; +}; + +select.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var cols = JSON.stringify(params.columns) || ''; + if (cols.indexOf('[') != -1 && cols.indexOf(']') != -1) cols = cols.substring(1, cols.length - 1); + return 'select(' + cols + ')'; +}; + +module.exports = select; + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var sequence = function sequence(steps) { + + return { + op: taskOps.TASK_OP_SEQUENCE, + params: { + steps: steps + } + }; +}; + +sequence.toCode = function (json, Flexio) { + var retval = _.map(json.params.items, function (t) { + + var cmd_str = Flexio.task.toCode(t, Flexio); + + if (_.get(t, 'params.lang', '') != 'python') cmd_str = cmd_str.replace(/\n/g, '\n '); + + return cmd_str; + }); + + var retval = ['Flexio.pipe()'].concat(retval); + + return retval.join('\n .'); +}; + +module.exports = sequence; + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var set = function set(variable, value) { + + if (util.isPipeObject(value)) value = value.pipe.task; + + return { + op: taskOps.TASK_OP_SET, + params: { + "var": variable, + "value": value + } + }; +}; + +set.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var variable = _.get(params, 'variable', ''); + var value = _.get(params, 'value', ''); + + variable = JSON.stringify(variable); + + if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null && value.hasOwnProperty('op')) { + value = Flexio.task.toCode(value, Flexio); + } else { + value = JSON.stringify(value); + } + + return 'set(' + variable + ', ' + value + ')'; +}; + +module.exports = set; + +/***/ }), +/* 71 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var sleep = function sleep(value) { + value = _.defaultTo(value, 10); + + return { + op: taskOps.TASK_OP_SLEEP, + params: { + value: value + } + }; +}; + +sleep.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var val = JSON.stringify(params.value) || ''; + return 'sleep(' + val + ')'; +}; + +module.exports = sleep; + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var task = function task(json) { + return json; +}; + +task.toCode = function (json, Flexio) { + return 'task(' + JSON.stringify(json, null, 2) + ')'; +}; + +module.exports = task; + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var transform = function transform(value) { + var args = Array.from(arguments); + + var default_params = { operations: [] }; + var params = {}; + var columns = undefined; + var operations = []; + + var arg1 = _.get(args, '[0]'); + + if (_.isPlainObject(arg1)) { + if (args.length == 1 && _.has(arg1, 'operations')) { + params = _.pick(arg1, ['columns', 'operations']); + params = _.assign(default_params, params); + } else { + operations = [].concat(args); + params = { operations: operations }; + } + + return { + op: taskOps.TASK_OP_TRANSFORM, + params: params + }; + } + + return { + op: taskOps.TASK_OP_TRANSFORM, + params: { + columns: columns, + operations: operations + } + }; +}; + +transform.toCode = function (json, Flexio) { + var params = json.hasOwnProperty('params') ? json.params : {}; + if (!params.hasOwnProperty('columns') && params.hasOwnProperty('operations') && Array.isArray(params.operations) && params.operations.length == 1) return "transform(" + JSON.stringify(params.operations[0]) + ")"; + return "transform(" + JSON.stringify(params) + ")"; +}; + +module.exports = transform; + +/***/ }), +/* 74 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var write = function write(path) { + return { + op: taskOps.TASK_OP_WRITE, + params: { + path: path + } + }; +}; + +write.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'write(' + path + ')'; +}; + +module.exports = write; + +/***/ }), +/* 75 */ +/***/ (function(module, exports) { + +module.exports = {"name":"flexio-sdk-js","version":"1.20.2","description":"Javascript SDK for managing Flex.io resources and services","author":"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js","main":"src/main.js","--browser":"src/main.js","browser":"dist/flexio.min.js","scripts":{"dev":"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js","build":"npm run build:debug && npm run build:release && npm run build:examples","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/flexiodata/flexio-sdk-js.git"},"keywords":[],"license":"Apache-2.0","bugs":{"url":"https://github.com/flexiodata/flexio-sdk-js/issues"},"homepage":"https://github.com/flexiodata/flexio-sdk-js/","dependencies":{"axios":"^0.16.2","lodash":"^4.17.4","vue-highlightjs":"^1.3.3"},"devDependencies":{"autoprefixer":"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-lodash":"^3.2.11","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0","vue":"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4","webpack":"^3.5.5","webpack-dev-server":"^2.8.2"}} + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); + +module.exports = {}; +module.exports.getConnectionsObject = function (Flexio) { + + return new function () { + + this.create = function (conn, callback) { + + var data; + if (_.isPlainObject(conn)) { + data = conn; + } else if (conn instanceof Flexio.connection) { + data = conn.connection; + } else { + throw "Unknown connection object type"; + } + + return new Promise(function (resolve, reject) { + Flexio.http().post('/connections', data).then(function (response) { + Flexio.util.callbackAdapter(null, response.data, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Flexio.connections.create(): Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.list = function (callback) { + var args = Array.from(arguments); + var callback = _.get(args, '[0]'); + + return new Promise(function (resolve, reject) { + Flexio.util.debug('Requesting Connections...'); + Flexio.http().get('/connections').then(function (response) { + var items = _.get(response, 'data', []); + Flexio.util.debug('Success!'); + Flexio.util.callbackAdapter(null, items, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + }(); +}; + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); + +module.exports = {}; +module.exports.getPipesObject = function (Flexio) { + + return new function () { + + this.create = function (pipe, callback) { + + var data; + if (_.isPlainObject(pipe)) { + data = pipe; + } else if (pipe instanceof Flexio.pipe) { + data = pipe.pipe; + } else { + throw "Unknown pipe object type"; + } + + return new Promise(function (resolve, reject) { + Flexio.http().post('/pipes', data).then(function (response) { + Flexio.util.callbackAdapter(null, response.data, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Flexio.pipes.create(): Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.list = function (callback) { + var args = Array.from(arguments); + var callback = _.get(args, '[0]'); + + return new Promise(function (resolve, reject) { + Flexio.util.debug('Requesting Pipes...'); + + Flexio.http().get('/pipes').then(function (response) { + var items = _.get(response, 'data', []); + Flexio.util.debug('Success!'); + Flexio.util.callbackAdapter(null, items, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.run = function () { + var args = Array.from(arguments); + args.push(null, null, null); + + var run_params = {}; + var callback; + var pipe_identifier; + var tasks_array = null; + + if (args[0] instanceof Flexio.pipe) { + pipe_identifier = _.get(args[0], 'pipe.eid', ''); + tasks_array = _.get(args[0], 'pipe.task', ''); + } else if (Array.isArray(args[0])) { + pipe_identifier = ''; + tasks_array = args[0]; + } else { + pipe_identifier = args[0]; + } + + if (_.isPlainObject(args[1])) { + run_params = args[1]; + } + + if (_.isFunction(args[1])) { + callback = args[1]; + } else if (_.isFunction(args[2])) { + callback = args[2]; + } else { + callback = null; + } + + var getResponseObjectFromArrayBuffer = function getResponseObjectFromArrayBuffer(arraybuffer, content_type) { + return { + contentType: content_type, + buffer: arraybuffer, + get blob() { + return new Blob([this.buffer], { "type": content_type }); + }, + get text() { + return Flexio.util.arrayBufferToString(this.buffer); + }, + get data() { + try { + return JSON.parse(Flexio.util.arrayBufferToString(this.buffer)); + } catch (e) { + return null; + } + } + }; + }; + + return new Promise(function (resolve, reject) { + + Flexio.util.debug('Running Pipe `' + (pipe_identifier.length == 0 ? '[Pipe Object/Task Array]' : pipe_identifier) + '`...'); + + if (pipe_identifier.length == 0) { + + var create_params = { + name: 'SDK Pipe', + description: 'SDK Pipe', + task: tasks_array, + + process_mode: 'R' + }; + + Flexio.http().post('/processes', create_params).then(function (response) { + var obj = _.get(response, 'data', {}); + var process_eid = _.get(obj, 'eid', ''); + Flexio.util.debug('Created Process.'); + + var http_config = { + method: 'post', + url: '/processes/' + process_eid + '/run', + responseType: 'arraybuffer' + }; + + if (run_params.hasOwnProperty('data')) { + http_config.data = run_params.data; + } + + if (run_params.hasOwnProperty('query')) { + http_config.params = run_params.query; + } + + var http = Flexio.http(); + http(http_config).then(function (response) { + Flexio.util.debug('Process Complete.'); + var content_type = _.get(response, 'headers.content-type', 'text/plain'); + var response_object = getResponseObjectFromArrayBuffer(response.data, content_type); + Flexio.util.callbackAdapter(null, response_object, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Process Run Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }).catch(function (error) { + Flexio.util.debug('Process Create Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + } else { + + var http_config = { + method: 'post', + url: '/pipes/' + pipe_identifier + '/run', + responseType: 'arraybuffer' + }; + + if (run_params.hasOwnProperty('data')) { + http_config.data = run_params.data; + } + + if (run_params.hasOwnProperty('query')) { + http_config.params = run_params.query; + } + + if (run_params.hasOwnProperty('contentType')) { + http_config.headers = { 'Content-Type': run_params.contentType }; + } else { + if (http_config.hasOwnProperty('data')) { + if (_.isPlainObject(http_config.data)) {} else if (_.isString(http_config.data)) { + http_config.headers = { 'Content-Type': 'text/plain' }; + } else { + http_config.headers = { 'Content-Type': 'application/octet-stream' }; + } + } + } + + var http = Flexio.http(); + http(http_config).then(function (response) { + Flexio.util.debug('Process Complete.'); + var content_type = _.get(response, 'headers.content-type', 'text/plain'); + var response_object = getResponseObjectFromArrayBuffer(response.data, content_type); + Flexio.util.callbackAdapter(null, response_object, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Pipe Run Call Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + } + }); + }; + }(); +}; + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _ = __webpack_require__(0); + +module.exports = {}; +module.exports.getPipeConstructor = function (Flexio) { + + return function (pipeconstruct_param) { + + if (!(this instanceof Flexio.pipe)) { + return new Flexio.pipe(pipeconstruct_param); + } + + var pipeobj = _.assign(this, { + + pipe: { + name: 'Untitled', + description: '', + task: { op: 'sequence', params: { items: [] } } + }, + processes: [], + _params: {}, + loading: false, + saving: false, + running: false, + + getJSON: function getJSON() { + return _.assign({}, this.pipe); + }, + getProcesses: function getProcesses() { + return [].concat(this.processes); + }, + getLastProcess: function getLastProcess() { + return _.last(this.processes); + }, + addTask: function addTask(task) { + this.pipe.task.params.items.push(task); + return this; + }, + clearTasks: function clearTasks() { + this.pipe.task.params.items = []; + return this; + }, + getTasks: function getTasks() { + return this.pipe.task.params.items; + }, + load: function load() { + var _this = this, + _arguments = arguments; + + var args = Array.from(arguments); + var identifier = _.get(args, '[0]'); + var callback = _.get(args, '[1]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this.load.apply(_this, _arguments); + }, 50); + return this; + } + + if (_.isNil(identifier)) return Flexio.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."); + + this.loading = true; + Flexio.util.debug('Loading Pipe `' + identifier + '`...'); + + Flexio.http().get('/pipes/' + identifier).then(function (response) { + var obj = _.get(response, 'data', {}); + _this.pipe = _.assign({}, obj); + _this.loading = false; + Flexio.util.debug('Pipe Loaded.'); + + if (typeof callback == 'function') callback.call(_this, null, obj); + }).catch(function (error) { + _this.loading = false; + Flexio.util.debug('Pipe Load Failed. '); + + if (typeof callback == 'function') callback.call(_this, error, null); + }); + + return this; + }, + save: function save() { + var _this2 = this, + _arguments2 = arguments; + + var args = Array.from(arguments); + var params = _.get(args, '[0]'); + var callback = _.get(args, '[0]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this2.save.apply(_this2, _arguments2); + }, 50); + return this; + } + + if (_.isPlainObject(params)) { + _.assign(this.pipe, _.pick(params, ['name', 'description', 'ename'])); + callback = _.get(args, '[1]'); + } + + this.saving = true; + Flexio.util.debug('Saving Pipe `' + _.get(this.pipe, 'name', 'Untitled Pipe') + '`...'); + + Flexio.http().post('/pipes', this.pipe).then(function (response) { + var pipe = _.get(response, 'data', {}); + _this2.pipe = _.assign({}, pipe); + _this2.saving = false; + Flexio.util.debug('Pipe Saved.'); + + if (typeof callback == 'function') callback.call(_this2, null, _this2.pipe); + }).catch(function (error) { + _this2.saving = false; + Flexio.util.debug('Pipe Save Failed.'); + + if (typeof callback == 'function') callback.call(_this2, error, null); + }); + + return this; + }, + run: function run() { + var args = Array.from(arguments); + args.unshift(this); + return Flexio.pipes.run.apply(null, args); + }, + params: function params(_params) { + this._params = _.assign({}, this.getParams(), _params); + return this; + }, + clearParams: function clearParams(keys) { + if (_.isArray(keys)) this._params = _.omit(this._params, keys);else if (_.isNil(keys)) this._params = {}; + + return this; + }, + getParams: function getParams() { + return _.assign({}, this._params); + }, + toCode: function toCode(p) { + return Flexio.task.toCode(this.pipe.task, Flexio); + } + }); + + _.each(Flexio.task, function (taskFn, task_name) { + if (task_name != 'toCode') { + pipeobj[task_name] = function () { + return pipeobj.addTask(taskFn.apply(pipeobj, arguments)); + }; + } + }); + + if (pipeconstruct_param !== undefined) { + if (typeof pipeconstruct_param === 'string' || pipeconstruct_param instanceof String) { + pipeobj.pipe.eid = pipeconstruct_param; + } else if ((typeof pipeconstruct_param === 'undefined' ? 'undefined' : _typeof(pipeconstruct_param)) === 'object') { + if (pipeconstruct_param.hasOwnProperty('pipe')) { + pipeobj.pipe = JSON.parse(JSON.stringify(pipeconstruct_param.pipe)); + } else if (pipeconstruct_param.hasOwnProperty('task')) { + pipeobj.pipe = JSON.parse(JSON.stringify(pipeconstruct_param)); + } else if (pipeconstruct_param.hasOwnProperty('op')) { + pipeobj.pipe.task = pipeconstruct_param; + } + } + } + + return pipeobj; + }; +}; + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); + +var method_types = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']; +var allowed_auth = ['', 'basic', 'bearer', 'oauth2']; + +function toBase64(str) { + try { + return btoa(unescape(encodeURIComponent(str))); + } catch (e) { + return ''; + } +} + +function fromBase64(str) { + try { + return decodeURIComponent(escape(atob(str))); + } catch (e) { + return ''; + } +} + +module.exports = {}; +module.exports.getConnectionConstructor = function (Flexio) { + + return function () { + + if (!(this instanceof Flexio.connection)) { + return new Flexio.connection(); + } + + var retval = _.assign(this, { + + connection: { + name: 'Untitled', + description: '', + connection_type: "http", + connection_info: { + method: '', + url: '', + auth: '', + username: '', + password: '', + token: '', + access_token: '', + refresh_token: '', + expires: '', + data: {}, + headers: {} } + }, + loading: false, + saving: false, + running: false, + + getJSON: function getJSON() { + return _.assign({}, this.connection); + }, + name: function name(value) { + this.connection.name = value; + return this; + }, + description: function description(value) { + this.connection.description = value; + return this; + }, + method: function method() { + var args = Array.from(arguments); + var method = _.get(args, '[0]'); + + if (!_.isString(method)) return this; + + if (!_.includes(method_types, method)) return this; + + return this._setInfo('method', method); + }, + url: function url() { + var args = Array.from(arguments); + var url = _.get(args, '[0]'); + + if (!_.isString(url)) return this; + + return this._setInfo('url', url); + }, + auth: function auth() { + var args = Array.from(arguments); + var auth = _.get(args, '[0]'); + + if (!_.isString(auth)) return this; + + if (!_.includes(allowed_auth, auth)) return this; + + if (auth == 'none') auth = ''; + + return this._setInfo('auth', auth); + }, + username: function username() { + var args = Array.from(arguments); + var username = _.get(args, '[0]'); + + if (!_.isString(username)) return this; + + return this._setInfo('username', username); + }, + password: function password() { + var args = Array.from(arguments); + var password = _.get(args, '[0]'); + + if (!_.isString(password)) return this; + + return this._setInfo('password', password); + }, + token: function token() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('token', token); + }, + accessToken: function accessToken() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('access_token', token); + }, + refreshToken: function refreshToken() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('refresh_token', token); + }, + expires: function expires() { + var args = Array.from(arguments); + var expires = _.get(args, '[0]'); + + if (_.isNumber(expires)) expires = '' + expires; + + if (!_.isString(expires)) return this; + + return this._setInfo('expires', expires); + }, + data: function data() { + var args = Array.from(arguments); + var data = _.get(args, '[0]'); + + if (!_.isPlainObject(data)) return this; + + var existing_data = this._getInfo('data', {}); + data = _.assign({}, existing_data, data); + + return this._setInfo('data', data); + }, + clearData: function clearData() { + var keys = Array.from(arguments); + + if (keys.length == 0) return this._setInfo('data', {}); + + if (keys.length == 1 && _.isArray(_.get(keys, '[0]'))) keys = _.get(keys, '[0]', []); + + var existing_data = this._getInfo('data', {}); + var data = _.omit(existing_data, keys); + + return this._setInfo('data', data); + }, + headers: function headers() { + var args = Array.from(arguments); + var headers = _.get(args, '[0]'); + + if (!_.isPlainObject(headers)) return this; + + var existing_headers = this._getInfo('headers', {}); + headers = _.assign({}, existing_headers, headers); + + return this._setInfo('headers', headers); + }, + clearHeaders: function clearHeaders() { + var keys = Array.from(arguments); + + if (keys.length == 0) return this._setInfo('headers', {}); + + if (keys.length == 1 && _.isArray(_.get(keys, '[0]'))) keys = _.get(keys, '[0]', []); + + var existing_headers = this._getInfo('headers', {}); + var headers = _.omit(existing_headers, keys); + + return this._setInfo('headers', headers); + }, + load: function load() { + var _this = this, + _arguments = arguments; + + var args = Array.from(arguments); + var identifier = _.get(args, '[0]'); + var callback = _.get(args, '[1]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this.load.apply(_this, _arguments); + }, 50); + return this; + } + + if (_.isNil(identifier)) return Flexio.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."); + + this.loading = true; + Flexio.util.debug('Loading Connection `' + identifier + '`...'); + + Flexio.http().get('/connections/' + identifier).then(function (response) { + var connection = _.get(response, 'data', {}); + _this.connection = _.assign({}, connection); + _this.loading = false; + Flexio.util.debug('Connection Loaded.'); + + if (typeof callback == 'function') callback.call(_this, null, connection); + }).catch(function (error) { + _this.loading = false; + Flexio.util.debug('Connection Load Failed.'); + + if (typeof callback == 'function') callback.call(_this, error, null); + }); + + return this; + }, + save: function save() { + var _this2 = this, + _arguments2 = arguments; + + var args = Array.from(arguments); + var params = _.get(args, '[0]'); + var callback = _.get(args, '[0]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this2.save.apply(_this2, _arguments2); + }, 50); + return this; + } + + if (_.isPlainObject(params)) { + _.assign(this.connection, _.pick(params, ['name', 'description', 'ename'])); + callback = _.get(args, '[1]'); + } + + this.saving = true; + Flexio.util.debug('Saving Connection `' + _.get(this.connection, 'name', 'Untitled Connection') + '`...'); + + Flexio.http().post('/connections', this.connection).then(function (response) { + var connection = _.get(response, 'data', {}); + _this2.connection = _.assign({}, connection); + _this2.saving = false; + Flexio.util.debug('Connection Saved.'); + + if (typeof callback == 'function') callback.call(_this2, null, _this2.connection); + }).catch(function (error) { + _this2.saving = false; + Flexio.util.debug('Connection Save Failed.'); + + if (typeof callback == 'function') callback.call(_this2, error, null); + }); + + return this; + }, + _getInfo: function _getInfo(key, default_val) { + return _.get(this.connection, 'connection_info.' + key, default_val); + }, + _setInfo: function _setInfo(key, val) { + _.set(this.connection, 'connection_info.' + key, val); + return this; + } + }); + + return retval; + }; +}; + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/dist/orig/flexio-node.min.js b/dist/orig/flexio-node.min.js new file mode 100644 index 0000000..3c39a5f --- /dev/null +++ b/dist/orig/flexio-node.min.js @@ -0,0 +1,11 @@ +/*! + * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * (c) 2018 Gold Prairie LLC + */ +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("http"),require("https"),require("url"),require("assert"),require("stream"),require("tty"),require("util"),require("fs"),require("net"),require("zlib")):"function"==typeof define&&define.amd?define(["http","https","url","assert","stream","tty","util","fs","net","zlib"],n):"object"==typeof exports?exports.Flexio=n(require("http"),require("https"),require("url"),require("assert"),require("stream"),require("tty"),require("util"),require("fs"),require("net"),require("zlib")):t.Flexio=n(t.http,t.https,t.url,t.assert,t.stream,t.tty,t.util,t.fs,t.net,t.zlib)}(this,function(t,n,e,r,i,o,u,a,s,c){return function(t){function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=17)}([function(t,n,e){(function(t){var r;(function(){function i(t,n){return t.set(n[0],n[1]),t}function o(t,n){return t.add(n),t}function u(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}function a(t,n,e,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var u=t[i];n(r,u,e(u),t)}return r}function s(t,n){for(var e=-1,r=null==t?0:t.length;++e<r&&!1!==n(t[e],e,t););return t}function c(t,n){for(var e=null==t?0:t.length;e--&&!1!==n(t[e],e,t););return t}function f(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(!n(t[e],e,t))return!1;return!0}function l(t,n){for(var e=-1,r=null==t?0:t.length,i=0,o=[];++e<r;){var u=t[e];n(u,e,t)&&(o[i++]=u)}return o}function p(t,n){return!!(null==t?0:t.length)&&O(t,n,0)>-1}function h(t,n,e){for(var r=-1,i=null==t?0:t.length;++r<i;)if(e(n,t[r]))return!0;return!1}function d(t,n){for(var e=-1,r=null==t?0:t.length,i=Array(r);++e<r;)i[e]=n(t[e],e,t);return i}function g(t,n){for(var e=-1,r=n.length,i=t.length;++e<r;)t[i+e]=n[e];return t}function v(t,n,e,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(e=t[++i]);++i<o;)e=n(e,t[i],i,t);return e}function _(t,n,e,r){var i=null==t?0:t.length;for(r&&i&&(e=t[--i]);i--;)e=n(e,t[i],i,t);return e}function y(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(n(t[e],e,t))return!0;return!1}function m(t){return t.split("")}function b(t){return t.match(Bn)||[]}function w(t,n,e){var r;return e(t,function(t,e,i){if(n(t,e,i))return r=e,!1}),r}function x(t,n,e,r){for(var i=t.length,o=e+(r?1:-1);r?o--:++o<i;)if(n(t[o],o,t))return o;return-1}function O(t,n,e){return n===n?Z(t,n,e):x(t,A,e)}function S(t,n,e,r){for(var i=e-1,o=t.length;++i<o;)if(r(t[i],n))return i;return-1}function A(t){return t!==t}function T(t,n){var e=null==t?0:t.length;return e?k(t,n)/e:It}function E(t){return function(n){return null==n?rt:n[t]}}function C(t){return function(n){return null==t?rt:t[n]}}function P(t,n,e,r,i){return i(t,function(t,i,o){e=r?(r=!1,t):n(e,t,i,o)}),e}function j(t,n){var e=t.length;for(t.sort(n);e--;)t[e]=t[e].value;return t}function k(t,n){for(var e,r=-1,i=t.length;++r<i;){var o=n(t[r]);o!==rt&&(e=e===rt?o:e+o)}return e}function R(t,n){for(var e=-1,r=Array(t);++e<t;)r[e]=n(e);return r}function N(t,n){return d(n,function(n){return[n,t[n]]})}function I(t){return function(n){return t(n)}}function q(t,n){return d(n,function(n){return t[n]})}function U(t,n){return t.has(n)}function K(t,n){for(var e=-1,r=t.length;++e<r&&O(n,t[e],0)>-1;);return e}function L(t,n){for(var e=t.length;e--&&O(n,t[e],0)>-1;);return e}function D(t,n){for(var e=t.length,r=0;e--;)t[e]===n&&++r;return r}function B(t){return"\\"+Ee[t]}function z(t,n){return null==t?rt:t[n]}function F(t){return ye.test(t)}function M(t){return me.test(t)}function J(t){for(var n,e=[];!(n=t.next()).done;)e.push(n.value);return e}function W(t){var n=-1,e=Array(t.size);return t.forEach(function(t,r){e[++n]=[r,t]}),e}function $(t,n){return function(e){return t(n(e))}}function H(t,n){for(var e=-1,r=t.length,i=0,o=[];++e<r;){var u=t[e];u!==n&&u!==ct||(t[e]=ct,o[i++]=e)}return o}function G(t){var n=-1,e=Array(t.size);return t.forEach(function(t){e[++n]=t}),e}function V(t){var n=-1,e=Array(t.size);return t.forEach(function(t){e[++n]=[t,t]}),e}function Z(t,n,e){for(var r=e-1,i=t.length;++r<i;)if(t[r]===n)return r;return-1}function X(t,n,e){for(var r=e+1;r--;)if(t[r]===n)return r;return r}function Y(t){return F(t)?tt(t):Je(t)}function Q(t){return F(t)?nt(t):m(t)}function tt(t){for(var n=ve.lastIndex=0;ve.test(t);)++n;return n}function nt(t){return t.match(ve)||[]}function et(t){return t.match(_e)||[]}var rt,it=200,ot="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",ut="Expected a function",at="__lodash_hash_undefined__",st=500,ct="__lodash_placeholder__",ft=1,lt=2,pt=4,ht=1,dt=2,gt=1,vt=2,_t=4,yt=8,mt=16,bt=32,wt=64,xt=128,Ot=256,St=512,At=30,Tt="...",Et=800,Ct=16,Pt=1,jt=2,kt=1/0,Rt=9007199254740991,Nt=1.7976931348623157e308,It=NaN,qt=4294967295,Ut=qt-1,Kt=qt>>>1,Lt=[["ary",xt],["bind",gt],["bindKey",vt],["curry",yt],["curryRight",mt],["flip",St],["partial",bt],["partialRight",wt],["rearg",Ot]],Dt="[object Arguments]",Bt="[object Array]",zt="[object AsyncFunction]",Ft="[object Boolean]",Mt="[object Date]",Jt="[object DOMException]",Wt="[object Error]",$t="[object Function]",Ht="[object GeneratorFunction]",Gt="[object Map]",Vt="[object Number]",Zt="[object Null]",Xt="[object Object]",Yt="[object Proxy]",Qt="[object RegExp]",tn="[object Set]",nn="[object String]",en="[object Symbol]",rn="[object Undefined]",on="[object WeakMap]",un="[object WeakSet]",an="[object ArrayBuffer]",sn="[object DataView]",cn="[object Float32Array]",fn="[object Float64Array]",ln="[object Int8Array]",pn="[object Int16Array]",hn="[object Int32Array]",dn="[object Uint8Array]",gn="[object Uint8ClampedArray]",vn="[object Uint16Array]",_n="[object Uint32Array]",yn=/\b__p \+= '';/g,mn=/\b(__p \+=) '' \+/g,bn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wn=/&(?:amp|lt|gt|quot|#39);/g,xn=/[&<>"']/g,On=RegExp(wn.source),Sn=RegExp(xn.source),An=/<%-([\s\S]+?)%>/g,Tn=/<%([\s\S]+?)%>/g,En=/<%=([\s\S]+?)%>/g,Cn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Pn=/^\w*$/,jn=/^\./,kn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Rn=/[\\^$.*+?()[\]{}|]/g,Nn=RegExp(Rn.source),In=/^\s+|\s+$/g,qn=/^\s+/,Un=/\s+$/,Kn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ln=/\{\n\/\* \[wrapped with (.+)\] \*/,Dn=/,? & /,Bn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zn=/\\(\\)?/g,Fn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Mn=/\w*$/,Jn=/^[-+]0x[0-9a-f]+$/i,Wn=/^0b[01]+$/i,$n=/^\[object .+?Constructor\]$/,Hn=/^0o[0-7]+$/i,Gn=/^(?:0|[1-9]\d*)$/,Vn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Zn=/($^)/,Xn=/['\n\r\u2028\u2029\\]/g,Yn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",te="["+Qn+"]",ne="["+Yn+"]",ee="[a-z\\xdf-\\xf6\\xf8-\\xff]",re="[^\\ud800-\\udfff"+Qn+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ie="\\ud83c[\\udffb-\\udfff]",oe="(?:\\ud83c[\\udde6-\\uddff]){2}",ue="[\\ud800-\\udbff][\\udc00-\\udfff]",ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",se="(?:"+ee+"|"+re+")",ce="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",fe="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",oe,ue].join("|")+")[\\ufe0e\\ufe0f]?"+ce+")*",le="[\\ufe0e\\ufe0f]?"+ce+fe,pe="(?:"+["[\\u2700-\\u27bf]",oe,ue].join("|")+")"+le,he="(?:"+["[^\\ud800-\\udfff]"+ne+"?",ne,oe,ue,"[\\ud800-\\udfff]"].join("|")+")",de=RegExp("['’]","g"),ge=RegExp(ne,"g"),ve=RegExp(ie+"(?="+ie+")|"+he+le,"g"),_e=RegExp([ae+"?"+ee+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[te,ae,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[te,ae+se,"$"].join("|")+")",ae+"?"+se+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ae+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",pe].join("|"),"g"),ye=RegExp("[\\u200d\\ud800-\\udfff"+Yn+"\\ufe0e\\ufe0f]"),me=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,be=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],we=-1,xe={};xe[cn]=xe[fn]=xe[ln]=xe[pn]=xe[hn]=xe[dn]=xe[gn]=xe[vn]=xe[_n]=!0,xe[Dt]=xe[Bt]=xe[an]=xe[Ft]=xe[sn]=xe[Mt]=xe[Wt]=xe[$t]=xe[Gt]=xe[Vt]=xe[Xt]=xe[Qt]=xe[tn]=xe[nn]=xe[on]=!1;var Oe={};Oe[Dt]=Oe[Bt]=Oe[an]=Oe[sn]=Oe[Ft]=Oe[Mt]=Oe[cn]=Oe[fn]=Oe[ln]=Oe[pn]=Oe[hn]=Oe[Gt]=Oe[Vt]=Oe[Xt]=Oe[Qt]=Oe[tn]=Oe[nn]=Oe[en]=Oe[dn]=Oe[gn]=Oe[vn]=Oe[_n]=!0,Oe[Wt]=Oe[$t]=Oe[on]=!1;var Se={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Ae={"&":"&","<":"<",">":">",'"':""","'":"'"},Te={"&":"&","<":"<",">":">",""":'"',"'":"'"},Ee={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ce=parseFloat,Pe=parseInt,je="object"==typeof global&&global&&global.Object===Object&&global,ke="object"==typeof self&&self&&self.Object===Object&&self,Re=je||ke||Function("return this")(),Ne="object"==typeof n&&n&&!n.nodeType&&n,Ie=Ne&&"object"==typeof t&&t&&!t.nodeType&&t,qe=Ie&&Ie.exports===Ne,Ue=qe&&je.process,Ke=function(){try{return Ue&&Ue.binding&&Ue.binding("util")}catch(t){}}(),Le=Ke&&Ke.isArrayBuffer,De=Ke&&Ke.isDate,Be=Ke&&Ke.isMap,ze=Ke&&Ke.isRegExp,Fe=Ke&&Ke.isSet,Me=Ke&&Ke.isTypedArray,Je=E("length"),We=C(Se),$e=C(Ae),He=C(Te),Ge=function t(n){function e(t){if(os(t)&&!_p(t)&&!(t instanceof C)){if(t instanceof m)return t;if(_f.call(t,"__wrapped__"))return eu(t)}return new m(t)}function r(){}function m(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=rt}function C(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=qt,this.__views__=[]}function Z(){var t=new C(this.__wrapped__);return t.__actions__=Ki(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ki(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ki(this.__views__),t}function tt(){if(this.__filtered__){var t=new C(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function nt(){var t=this.__wrapped__.value(),n=this.__dir__,e=_p(t),r=n<0,i=e?t.length:0,o=Eo(0,i,this.__views__),u=o.start,a=o.end,s=a-u,c=r?a:u-1,f=this.__iteratees__,l=f.length,p=0,h=Hf(s,this.__takeCount__);if(!e||!r&&i==s&&h==s)return yi(t,this.__actions__);var d=[];t:for(;s--&&p<h;){c+=n;for(var g=-1,v=t[c];++g<l;){var _=f[g],y=_.iteratee,m=_.type,b=y(v);if(m==jt)v=b;else if(!b){if(m==Pt)continue t;break t}}d[p++]=v}return d}function Bn(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Yn(){this.__data__=rl?rl(null):{},this.size=0}function Qn(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n}function te(t){var n=this.__data__;if(rl){var e=n[t];return e===at?rt:e}return _f.call(n,t)?n[t]:rt}function ne(t){var n=this.__data__;return rl?n[t]!==rt:_f.call(n,t)}function ee(t,n){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=rl&&n===rt?at:n,this}function re(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function ie(){this.__data__=[],this.size=0}function oe(t){var n=this.__data__,e=Ze(n,t);return!(e<0)&&(e==n.length-1?n.pop():kf.call(n,e,1),--this.size,!0)}function ue(t){var n=this.__data__,e=Ze(n,t);return e<0?rt:n[e][1]}function ae(t){return Ze(this.__data__,t)>-1}function se(t,n){var e=this.__data__,r=Ze(e,t);return r<0?(++this.size,e.push([t,n])):e[r][1]=n,this}function ce(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function fe(){this.size=0,this.__data__={hash:new Bn,map:new(Qf||re),string:new Bn}}function le(t){var n=Oo(this,t).delete(t);return this.size-=n?1:0,n}function pe(t){return Oo(this,t).get(t)}function he(t){return Oo(this,t).has(t)}function ve(t,n){var e=Oo(this,t),r=e.size;return e.set(t,n),this.size+=e.size==r?0:1,this}function _e(t){var n=-1,e=null==t?0:t.length;for(this.__data__=new ce;++n<e;)this.add(t[n])}function ye(t){return this.__data__.set(t,at),this}function me(t){return this.__data__.has(t)}function Se(t){var n=this.__data__=new re(t);this.size=n.size}function Ae(){this.__data__=new re,this.size=0}function Te(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e}function Ee(t){return this.__data__.get(t)}function je(t){return this.__data__.has(t)}function ke(t,n){var e=this.__data__;if(e instanceof re){var r=e.__data__;if(!Qf||r.length<it-1)return r.push([t,n]),this.size=++e.size,this;e=this.__data__=new ce(r)}return e.set(t,n),this.size=e.size,this}function Ne(t,n){var e=_p(t),r=!e&&vp(t),i=!e&&!r&&mp(t),o=!e&&!r&&!i&&Sp(t),u=e||r||i||o,a=u?R(t.length,ff):[],s=a.length;for(var c in t)!n&&!_f.call(t,c)||u&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||qo(c,s))||a.push(c);return a}function Ie(t){var n=t.length;return n?t[Qr(0,n-1)]:rt}function Ue(t,n){return Yo(Ki(t),er(n,0,t.length))}function Ke(t){return Yo(Ki(t))}function Je(t,n,e){(e===rt||Wa(t[n],e))&&(e!==rt||n in t)||tr(t,n,e)}function Ve(t,n,e){var r=t[n];_f.call(t,n)&&Wa(r,e)&&(e!==rt||n in t)||tr(t,n,e)}function Ze(t,n){for(var e=t.length;e--;)if(Wa(t[e][0],n))return e;return-1}function Xe(t,n,e,r){return gl(t,function(t,i,o){n(r,t,e(t),o)}),r}function Ye(t,n){return t&&Li(n,Bs(n),t)}function Qe(t,n){return t&&Li(n,zs(n),t)}function tr(t,n,e){"__proto__"==n&&qf?qf(t,n,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[n]=e}function nr(t,n){for(var e=-1,r=n.length,i=ef(r),o=null==t;++e<r;)i[e]=o?rt:Ks(t,n[e]);return i}function er(t,n,e){return t===t&&(e!==rt&&(t=t<=e?t:e),n!==rt&&(t=t>=n?t:n)),t}function rr(t,n,e,r,i,o){var u,a=n&ft,c=n<,f=n&pt;if(e&&(u=i?e(t,r,i,o):e(t)),u!==rt)return u;if(!is(t))return t;var l=_p(t);if(l){if(u=jo(t),!a)return Ki(t,u)}else{var p=El(t),h=p==$t||p==Ht;if(mp(t))return Ai(t,a);if(p==Xt||p==Dt||h&&!i){if(u=c||h?{}:ko(t),!a)return c?Bi(t,Qe(u,t)):Di(t,Ye(u,t))}else{if(!Oe[p])return i?t:{};u=Ro(t,p,rr,a)}}o||(o=new Se);var d=o.get(t);if(d)return d;o.set(t,u);var g=f?c?mo:yo:c?zs:Bs,v=l?rt:g(t);return s(v||t,function(r,i){v&&(i=r,r=t[i]),Ve(u,i,rr(r,n,e,i,t,o))}),u}function ir(t){var n=Bs(t);return function(e){return or(e,t,n)}}function or(t,n,e){var r=e.length;if(null==t)return!r;for(t=sf(t);r--;){var i=e[r],o=n[i],u=t[i];if(u===rt&&!(i in t)||!o(u))return!1}return!0}function ur(t,n,e){if("function"!=typeof t)throw new lf(ut);return jl(function(){t.apply(rt,e)},n)}function ar(t,n,e,r){var i=-1,o=p,u=!0,a=t.length,s=[],c=n.length;if(!a)return s;e&&(n=d(n,I(e))),r?(o=h,u=!1):n.length>=it&&(o=U,u=!1,n=new _e(n));t:for(;++i<a;){var f=t[i],l=null==e?f:e(f);if(f=r||0!==f?f:0,u&&l===l){for(var g=c;g--;)if(n[g]===l)continue t;s.push(f)}else o(n,l,r)||s.push(f)}return s}function sr(t,n){var e=!0;return gl(t,function(t,r,i){return e=!!n(t,r,i)}),e}function cr(t,n,e){for(var r=-1,i=t.length;++r<i;){var o=t[r],u=n(o);if(null!=u&&(a===rt?u===u&&!vs(u):e(u,a)))var a=u,s=o}return s}function fr(t,n,e,r){var i=t.length;for(e=xs(e),e<0&&(e=-e>i?0:i+e),r=r===rt||r>i?i:xs(r),r<0&&(r+=i),r=e>r?0:Os(r);e<r;)t[e++]=n;return t}function lr(t,n){var e=[];return gl(t,function(t,r,i){n(t,r,i)&&e.push(t)}),e}function pr(t,n,e,r,i){var o=-1,u=t.length;for(e||(e=Io),i||(i=[]);++o<u;){var a=t[o];n>0&&e(a)?n>1?pr(a,n-1,e,r,i):g(i,a):r||(i[i.length]=a)}return i}function hr(t,n){return t&&_l(t,n,Bs)}function dr(t,n){return t&&yl(t,n,Bs)}function gr(t,n){return l(n,function(n){return ns(t[n])})}function vr(t,n){n=Oi(n,t);for(var e=0,r=n.length;null!=t&&e<r;)t=t[Qo(n[e++])];return e&&e==r?t:rt}function _r(t,n,e){var r=n(t);return _p(t)?r:g(r,e(t))}function yr(t){return null==t?t===rt?rn:Zt:If&&If in sf(t)?To(t):$o(t)}function mr(t,n){return t>n}function br(t,n){return null!=t&&_f.call(t,n)}function wr(t,n){return null!=t&&n in sf(t)}function xr(t,n,e){return t>=Hf(n,e)&&t<$f(n,e)}function Or(t,n,e){for(var r=e?h:p,i=t[0].length,o=t.length,u=o,a=ef(o),s=1/0,c=[];u--;){var f=t[u];u&&n&&(f=d(f,I(n))),s=Hf(f.length,s),a[u]=!e&&(n||i>=120&&f.length>=120)?new _e(u&&f):rt}f=t[0];var l=-1,g=a[0];t:for(;++l<i&&c.length<s;){var v=f[l],_=n?n(v):v;if(v=e||0!==v?v:0,!(g?U(g,_):r(c,_,e))){for(u=o;--u;){var y=a[u];if(!(y?U(y,_):r(t[u],_,e)))continue t}g&&g.push(_),c.push(v)}}return c}function Sr(t,n,e,r){return hr(t,function(t,i,o){n(r,e(t),i,o)}),r}function Ar(t,n,e){n=Oi(n,t),t=Go(t,n);var r=null==t?t:t[Qo(wu(n))];return null==r?rt:u(r,t,e)}function Tr(t){return os(t)&&yr(t)==Dt}function Er(t){return os(t)&&yr(t)==an}function Cr(t){return os(t)&&yr(t)==Mt}function Pr(t,n,e,r,i){return t===n||(null==t||null==n||!os(t)&&!os(n)?t!==t&&n!==n:jr(t,n,e,r,Pr,i))}function jr(t,n,e,r,i,o){var u=_p(t),a=_p(n),s=u?Bt:El(t),c=a?Bt:El(n);s=s==Dt?Xt:s,c=c==Dt?Xt:c;var f=s==Xt,l=c==Xt,p=s==c;if(p&&mp(t)){if(!mp(n))return!1;u=!0,f=!1}if(p&&!f)return o||(o=new Se),u||Sp(t)?ho(t,n,e,r,i,o):go(t,n,s,e,r,i,o);if(!(e&ht)){var h=f&&_f.call(t,"__wrapped__"),d=l&&_f.call(n,"__wrapped__");if(h||d){var g=h?t.value():t,v=d?n.value():n;return o||(o=new Se),i(g,v,e,r,o)}}return!!p&&(o||(o=new Se),vo(t,n,e,r,i,o))}function kr(t){return os(t)&&El(t)==Gt}function Rr(t,n,e,r){var i=e.length,o=i,u=!r;if(null==t)return!o;for(t=sf(t);i--;){var a=e[i];if(u&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++i<o;){a=e[i];var s=a[0],c=t[s],f=a[1];if(u&&a[2]){if(c===rt&&!(s in t))return!1}else{var l=new Se;if(r)var p=r(c,f,s,t,n,l);if(!(p===rt?Pr(f,c,ht|dt,r,l):p))return!1}}return!0}function Nr(t){return!(!is(t)||Bo(t))&&(ns(t)?Of:$n).test(tu(t))}function Ir(t){return os(t)&&yr(t)==Qt}function qr(t){return os(t)&&El(t)==tn}function Ur(t){return os(t)&&rs(t.length)&&!!xe[yr(t)]}function Kr(t){return"function"==typeof t?t:null==t?jc:"object"==typeof t?_p(t)?Mr(t[0],t[1]):Fr(t):Lc(t)}function Lr(t){if(!zo(t))return Wf(t);var n=[];for(var e in sf(t))_f.call(t,e)&&"constructor"!=e&&n.push(e);return n}function Dr(t){if(!is(t))return Wo(t);var n=zo(t),e=[];for(var r in t)("constructor"!=r||!n&&_f.call(t,r))&&e.push(r);return e}function Br(t,n){return t<n}function zr(t,n){var e=-1,r=$a(t)?ef(t.length):[];return gl(t,function(t,i,o){r[++e]=n(t,i,o)}),r}function Fr(t){var n=So(t);return 1==n.length&&n[0][2]?Mo(n[0][0],n[0][1]):function(e){return e===t||Rr(e,t,n)}}function Mr(t,n){return Ko(t)&&Fo(n)?Mo(Qo(t),n):function(e){var r=Ks(e,t);return r===rt&&r===n?Ds(e,t):Pr(n,r,ht|dt)}}function Jr(t,n,e,r,i){t!==n&&_l(n,function(o,u){if(is(o))i||(i=new Se),Wr(t,n,u,e,Jr,r,i);else{var a=r?r(t[u],o,u+"",t,n,i):rt;a===rt&&(a=o),Je(t,u,a)}},zs)}function Wr(t,n,e,r,i,o,u){var a=t[e],s=n[e],c=u.get(s);if(c)return void Je(t,e,c);var f=o?o(a,s,e+"",t,n,u):rt,l=f===rt;if(l){var p=_p(s),h=!p&&mp(s),d=!p&&!h&&Sp(s);f=s,p||h||d?_p(a)?f=a:Ha(a)?f=Ki(a):h?(l=!1,f=Ai(s,!0)):d?(l=!1,f=Ri(s,!0)):f=[]:hs(s)||vp(s)?(f=a,vp(a)?f=As(a):(!is(a)||r&&ns(a))&&(f=ko(s))):l=!1}l&&(u.set(s,f),i(f,s,r,o,u),u.delete(s)),Je(t,e,f)}function $r(t,n){var e=t.length;if(e)return n+=n<0?e:0,qo(n,e)?t[n]:rt}function Hr(t,n,e){var r=-1;return n=d(n.length?n:[jc],I(xo())),j(zr(t,function(t,e,i){return{criteria:d(n,function(n){return n(t)}),index:++r,value:t}}),function(t,n){return Ii(t,n,e)})}function Gr(t,n){return Vr(t,n,function(n,e){return Ds(t,e)})}function Vr(t,n,e){for(var r=-1,i=n.length,o={};++r<i;){var u=n[r],a=vr(t,u);e(a,u)&&oi(o,Oi(u,t),a)}return o}function Zr(t){return function(n){return vr(n,t)}}function Xr(t,n,e,r){var i=r?S:O,o=-1,u=n.length,a=t;for(t===n&&(n=Ki(n)),e&&(a=d(t,I(e)));++o<u;)for(var s=0,c=n[o],f=e?e(c):c;(s=i(a,f,s,r))>-1;)a!==t&&kf.call(a,s,1),kf.call(t,s,1);return t}function Yr(t,n){for(var e=t?n.length:0,r=e-1;e--;){var i=n[e];if(e==r||i!==o){var o=i;qo(i)?kf.call(t,i,1):gi(t,i)}}return t}function Qr(t,n){return t+Bf(Zf()*(n-t+1))}function ti(t,n,e,r){for(var i=-1,o=$f(Df((n-t)/(e||1)),0),u=ef(o);o--;)u[r?o:++i]=t,t+=e;return u}function ni(t,n){var e="";if(!t||n<1||n>Rt)return e;do{n%2&&(e+=t),(n=Bf(n/2))&&(t+=t)}while(n);return e}function ei(t,n){return kl(Ho(t,n,jc),t+"")}function ri(t){return Ie(Qs(t))}function ii(t,n){var e=Qs(t);return Yo(e,er(n,0,e.length))}function oi(t,n,e,r){if(!is(t))return t;n=Oi(n,t);for(var i=-1,o=n.length,u=o-1,a=t;null!=a&&++i<o;){var s=Qo(n[i]),c=e;if(i!=u){var f=a[s];c=r?r(f,s,a):rt,c===rt&&(c=is(f)?f:qo(n[i+1])?[]:{})}Ve(a,s,c),a=a[s]}return t}function ui(t){return Yo(Qs(t))}function ai(t,n,e){var r=-1,i=t.length;n<0&&(n=-n>i?0:i+n),e=e>i?i:e,e<0&&(e+=i),i=n>e?0:e-n>>>0,n>>>=0;for(var o=ef(i);++r<i;)o[r]=t[r+n];return o}function si(t,n){var e;return gl(t,function(t,r,i){return!(e=n(t,r,i))}),!!e}function ci(t,n,e){var r=0,i=null==t?r:t.length;if("number"==typeof n&&n===n&&i<=Kt){for(;r<i;){var o=r+i>>>1,u=t[o];null!==u&&!vs(u)&&(e?u<=n:u<n)?r=o+1:i=o}return i}return fi(t,n,jc,e)}function fi(t,n,e,r){n=e(n);for(var i=0,o=null==t?0:t.length,u=n!==n,a=null===n,s=vs(n),c=n===rt;i<o;){var f=Bf((i+o)/2),l=e(t[f]),p=l!==rt,h=null===l,d=l===l,g=vs(l);if(u)var v=r||d;else v=c?d&&(r||p):a?d&&p&&(r||!h):s?d&&p&&!h&&(r||!g):!h&&!g&&(r?l<=n:l<n);v?i=f+1:o=f}return Hf(o,Ut)}function li(t,n){for(var e=-1,r=t.length,i=0,o=[];++e<r;){var u=t[e],a=n?n(u):u;if(!e||!Wa(a,s)){var s=a;o[i++]=0===u?0:u}}return o}function pi(t){return"number"==typeof t?t:vs(t)?It:+t}function hi(t){if("string"==typeof t)return t;if(_p(t))return d(t,hi)+"";if(vs(t))return hl?hl.call(t):"";var n=t+"";return"0"==n&&1/t==-kt?"-0":n}function di(t,n,e){var r=-1,i=p,o=t.length,u=!0,a=[],s=a;if(e)u=!1,i=h;else if(o>=it){var c=n?null:Ol(t);if(c)return G(c);u=!1,i=U,s=new _e}else s=n?[]:a;t:for(;++r<o;){var f=t[r],l=n?n(f):f;if(f=e||0!==f?f:0,u&&l===l){for(var d=s.length;d--;)if(s[d]===l)continue t;n&&s.push(l),a.push(f)}else i(s,l,e)||(s!==a&&s.push(l),a.push(f))}return a}function gi(t,n){return n=Oi(n,t),null==(t=Go(t,n))||delete t[Qo(wu(n))]}function vi(t,n,e,r){return oi(t,n,e(vr(t,n)),r)}function _i(t,n,e,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&n(t[o],o,t););return e?ai(t,r?0:o,r?o+1:i):ai(t,r?o+1:0,r?i:o)}function yi(t,n){var e=t;return e instanceof C&&(e=e.value()),v(n,function(t,n){return n.func.apply(n.thisArg,g([t],n.args))},e)}function mi(t,n,e){var r=t.length;if(r<2)return r?di(t[0]):[];for(var i=-1,o=ef(r);++i<r;)for(var u=t[i],a=-1;++a<r;)a!=i&&(o[i]=ar(o[i]||u,t[a],n,e));return di(pr(o,1),n,e)}function bi(t,n,e){for(var r=-1,i=t.length,o=n.length,u={};++r<i;){var a=r<o?n[r]:rt;e(u,t[r],a)}return u}function wi(t){return Ha(t)?t:[]}function xi(t){return"function"==typeof t?t:jc}function Oi(t,n){return _p(t)?t:Ko(t,n)?[t]:Rl(Es(t))}function Si(t,n,e){var r=t.length;return e=e===rt?r:e,!n&&e>=r?t:ai(t,n,e)}function Ai(t,n){if(n)return t.slice();var e=t.length,r=Ef?Ef(e):new t.constructor(e);return t.copy(r),r}function Ti(t){var n=new t.constructor(t.byteLength);return new Tf(n).set(new Tf(t)),n}function Ei(t,n){var e=n?Ti(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}function Ci(t,n,e){return v(n?e(W(t),ft):W(t),i,new t.constructor)}function Pi(t){var n=new t.constructor(t.source,Mn.exec(t));return n.lastIndex=t.lastIndex,n}function ji(t,n,e){return v(n?e(G(t),ft):G(t),o,new t.constructor)}function ki(t){return pl?sf(pl.call(t)):{}}function Ri(t,n){var e=n?Ti(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function Ni(t,n){if(t!==n){var e=t!==rt,r=null===t,i=t===t,o=vs(t),u=n!==rt,a=null===n,s=n===n,c=vs(n);if(!a&&!c&&!o&&t>n||o&&u&&s&&!a&&!c||r&&u&&s||!e&&s||!i)return 1;if(!r&&!o&&!c&&t<n||c&&e&&i&&!r&&!o||a&&e&&i||!u&&i||!s)return-1}return 0}function Ii(t,n,e){for(var r=-1,i=t.criteria,o=n.criteria,u=i.length,a=e.length;++r<u;){var s=Ni(i[r],o[r]);if(s){if(r>=a)return s;return s*("desc"==e[r]?-1:1)}}return t.index-n.index}function qi(t,n,e,r){for(var i=-1,o=t.length,u=e.length,a=-1,s=n.length,c=$f(o-u,0),f=ef(s+c),l=!r;++a<s;)f[a]=n[a];for(;++i<u;)(l||i<o)&&(f[e[i]]=t[i]);for(;c--;)f[a++]=t[i++];return f}function Ui(t,n,e,r){for(var i=-1,o=t.length,u=-1,a=e.length,s=-1,c=n.length,f=$f(o-a,0),l=ef(f+c),p=!r;++i<f;)l[i]=t[i];for(var h=i;++s<c;)l[h+s]=n[s];for(;++u<a;)(p||i<o)&&(l[h+e[u]]=t[i++]);return l}function Ki(t,n){var e=-1,r=t.length;for(n||(n=ef(r));++e<r;)n[e]=t[e];return n}function Li(t,n,e,r){var i=!e;e||(e={});for(var o=-1,u=n.length;++o<u;){var a=n[o],s=r?r(e[a],t[a],a,e,t):rt;s===rt&&(s=t[a]),i?tr(e,a,s):Ve(e,a,s)}return e}function Di(t,n){return Li(t,Al(t),n)}function Bi(t,n){return Li(t,Tl(t),n)}function zi(t,n){return function(e,r){var i=_p(e)?a:Xe,o=n?n():{};return i(e,t,xo(r,2),o)}}function Fi(t){return ei(function(n,e){var r=-1,i=e.length,o=i>1?e[i-1]:rt,u=i>2?e[2]:rt;for(o=t.length>3&&"function"==typeof o?(i--,o):rt,u&&Uo(e[0],e[1],u)&&(o=i<3?rt:o,i=1),n=sf(n);++r<i;){var a=e[r];a&&t(n,a,r,o)}return n})}function Mi(t,n){return function(e,r){if(null==e)return e;if(!$a(e))return t(e,r);for(var i=e.length,o=n?i:-1,u=sf(e);(n?o--:++o<i)&&!1!==r(u[o],o,u););return e}}function Ji(t){return function(n,e,r){for(var i=-1,o=sf(n),u=r(n),a=u.length;a--;){var s=u[t?a:++i];if(!1===e(o[s],s,o))break}return n}}function Wi(t,n,e){function r(){return(this&&this!==Re&&this instanceof r?o:t).apply(i?e:this,arguments)}var i=n>,o=Gi(t);return r}function $i(t){return function(n){n=Es(n);var e=F(n)?Q(n):rt,r=e?e[0]:n.charAt(0),i=e?Si(e,1).join(""):n.slice(1);return r[t]()+i}}function Hi(t){return function(n){return v(Ac(oc(n).replace(de,"")),t,"")}}function Gi(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var e=dl(t.prototype),r=t.apply(e,n);return is(r)?r:e}}function Vi(t,n,e){function r(){for(var o=arguments.length,a=ef(o),s=o,c=wo(r);s--;)a[s]=arguments[s];var f=o<3&&a[0]!==c&&a[o-1]!==c?[]:H(a,c);return(o-=f.length)<e?uo(t,n,Yi,r.placeholder,rt,a,f,rt,rt,e-o):u(this&&this!==Re&&this instanceof r?i:t,this,a)}var i=Gi(t);return r}function Zi(t){return function(n,e,r){var i=sf(n);if(!$a(n)){var o=xo(e,3);n=Bs(n),e=function(t){return o(i[t],t,i)}}var u=t(n,e,r);return u>-1?i[o?n[u]:u]:rt}}function Xi(t){return _o(function(n){var e=n.length,r=e,i=m.prototype.thru;for(t&&n.reverse();r--;){var o=n[r];if("function"!=typeof o)throw new lf(ut);if(i&&!u&&"wrapper"==bo(o))var u=new m([],!0)}for(r=u?r:e;++r<e;){o=n[r];var a=bo(o),s="wrapper"==a?Sl(o):rt;u=s&&Do(s[0])&&s[1]==(xt|yt|bt|Ot)&&!s[4].length&&1==s[9]?u[bo(s[0])].apply(u,s[3]):1==o.length&&Do(o)?u[a]():u.thru(o)}return function(){var t=arguments,r=t[0];if(u&&1==t.length&&_p(r))return u.plant(r).value();for(var i=0,o=e?n[i].apply(this,t):r;++i<e;)o=n[i].call(this,o);return o}})}function Yi(t,n,e,r,i,o,u,a,s,c){function f(){for(var _=arguments.length,y=ef(_),m=_;m--;)y[m]=arguments[m];if(d)var b=wo(f),w=D(y,b);if(r&&(y=qi(y,r,i,d)),o&&(y=Ui(y,o,u,d)),_-=w,d&&_<c){var x=H(y,b);return uo(t,n,Yi,f.placeholder,e,y,x,a,s,c-_)}var O=p?e:this,S=h?O[t]:t;return _=y.length,a?y=Vo(y,a):g&&_>1&&y.reverse(),l&&s<_&&(y.length=s),this&&this!==Re&&this instanceof f&&(S=v||Gi(S)),S.apply(O,y)}var l=n&xt,p=n>,h=n&vt,d=n&(yt|mt),g=n&St,v=h?rt:Gi(t);return f}function Qi(t,n){return function(e,r){return Sr(e,t,n(r),{})}}function to(t,n){return function(e,r){var i;if(e===rt&&r===rt)return n;if(e!==rt&&(i=e),r!==rt){if(i===rt)return r;"string"==typeof e||"string"==typeof r?(e=hi(e),r=hi(r)):(e=pi(e),r=pi(r)),i=t(e,r)}return i}}function no(t){return _o(function(n){return n=d(n,I(xo())),ei(function(e){var r=this;return t(n,function(t){return u(t,r,e)})})})}function eo(t,n){n=n===rt?" ":hi(n);var e=n.length;if(e<2)return e?ni(n,t):n;var r=ni(n,Df(t/Y(n)));return F(n)?Si(Q(r),0,t).join(""):r.slice(0,t)}function ro(t,n,e,r){function i(){for(var n=-1,s=arguments.length,c=-1,f=r.length,l=ef(f+s),p=this&&this!==Re&&this instanceof i?a:t;++c<f;)l[c]=r[c];for(;s--;)l[c++]=arguments[++n];return u(p,o?e:this,l)}var o=n>,a=Gi(t);return i}function io(t){return function(n,e,r){return r&&"number"!=typeof r&&Uo(n,e,r)&&(e=r=rt),n=ws(n),e===rt?(e=n,n=0):e=ws(e),r=r===rt?n<e?1:-1:ws(r),ti(n,e,r,t)}}function oo(t){return function(n,e){return"string"==typeof n&&"string"==typeof e||(n=Ss(n),e=Ss(e)),t(n,e)}}function uo(t,n,e,r,i,o,u,a,s,c){var f=n&yt,l=f?u:rt,p=f?rt:u,h=f?o:rt,d=f?rt:o;n|=f?bt:wt,(n&=~(f?wt:bt))&_t||(n&=~(gt|vt));var g=[t,n,i,h,l,d,p,a,s,c],v=e.apply(rt,g);return Do(t)&&Pl(v,g),v.placeholder=r,Zo(v,t,n)}function ao(t){var n=af[t];return function(t,e){if(t=Ss(t),e=null==e?0:Hf(xs(e),292)){var r=(Es(t)+"e").split("e");return r=(Es(n(r[0]+"e"+(+r[1]+e)))+"e").split("e"),+(r[0]+"e"+(+r[1]-e))}return n(t)}}function so(t){return function(n){var e=El(n);return e==Gt?W(n):e==tn?V(n):N(n,t(n))}}function co(t,n,e,r,i,o,u,a){var s=n&vt;if(!s&&"function"!=typeof t)throw new lf(ut);var c=r?r.length:0;if(c||(n&=~(bt|wt),r=i=rt),u=u===rt?u:$f(xs(u),0),a=a===rt?a:xs(a),c-=i?i.length:0,n&wt){var f=r,l=i;r=i=rt}var p=s?rt:Sl(t),h=[t,n,e,r,i,f,l,o,u,a];if(p&&Jo(h,p),t=h[0],n=h[1],e=h[2],r=h[3],i=h[4],a=h[9]=h[9]===rt?s?0:t.length:$f(h[9]-c,0),!a&&n&(yt|mt)&&(n&=~(yt|mt)),n&&n!=gt)d=n==yt||n==mt?Vi(t,n,a):n!=bt&&n!=(gt|bt)||i.length?Yi.apply(rt,h):ro(t,n,e,r);else var d=Wi(t,n,e);return Zo((p?ml:Pl)(d,h),t,n)}function fo(t,n,e,r){return t===rt||Wa(t,df[e])&&!_f.call(r,e)?n:t}function lo(t,n,e,r,i,o){return is(t)&&is(n)&&(o.set(n,t),Jr(t,n,rt,lo,o),o.delete(n)),t}function po(t){return hs(t)?rt:t}function ho(t,n,e,r,i,o){var u=e&ht,a=t.length,s=n.length;if(a!=s&&!(u&&s>a))return!1;var c=o.get(t);if(c&&o.get(n))return c==n;var f=-1,l=!0,p=e&dt?new _e:rt;for(o.set(t,n),o.set(n,t);++f<a;){var h=t[f],d=n[f];if(r)var g=u?r(d,h,f,n,t,o):r(h,d,f,t,n,o);if(g!==rt){if(g)continue;l=!1;break}if(p){if(!y(n,function(t,n){if(!U(p,n)&&(h===t||i(h,t,e,r,o)))return p.push(n)})){l=!1;break}}else if(h!==d&&!i(h,d,e,r,o)){l=!1;break}}return o.delete(t),o.delete(n),l}function go(t,n,e,r,i,o,u){switch(e){case sn:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case an:return!(t.byteLength!=n.byteLength||!o(new Tf(t),new Tf(n)));case Ft:case Mt:case Vt:return Wa(+t,+n);case Wt:return t.name==n.name&&t.message==n.message;case Qt:case nn:return t==n+"";case Gt:var a=W;case tn:var s=r&ht;if(a||(a=G),t.size!=n.size&&!s)return!1;var c=u.get(t);if(c)return c==n;r|=dt,u.set(t,n);var f=ho(a(t),a(n),r,i,o,u);return u.delete(t),f;case en:if(pl)return pl.call(t)==pl.call(n)}return!1}function vo(t,n,e,r,i,o){var u=e&ht,a=yo(t),s=a.length;if(s!=yo(n).length&&!u)return!1;for(var c=s;c--;){var f=a[c];if(!(u?f in n:_f.call(n,f)))return!1}var l=o.get(t);if(l&&o.get(n))return l==n;var p=!0;o.set(t,n),o.set(n,t);for(var h=u;++c<s;){f=a[c];var d=t[f],g=n[f];if(r)var v=u?r(g,d,f,n,t,o):r(d,g,f,t,n,o);if(!(v===rt?d===g||i(d,g,e,r,o):v)){p=!1;break}h||(h="constructor"==f)}if(p&&!h){var _=t.constructor,y=n.constructor;_!=y&&"constructor"in t&&"constructor"in n&&!("function"==typeof _&&_ instanceof _&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(n),p}function _o(t){return kl(Ho(t,rt,hu),t+"")}function yo(t){return _r(t,Bs,Al)}function mo(t){return _r(t,zs,Tl)}function bo(t){for(var n=t.name+"",e=ol[n],r=_f.call(ol,n)?e.length:0;r--;){var i=e[r],o=i.func;if(null==o||o==t)return i.name}return n}function wo(t){return(_f.call(e,"placeholder")?e:t).placeholder}function xo(){var t=e.iteratee||kc;return t=t===kc?Kr:t,arguments.length?t(arguments[0],arguments[1]):t}function Oo(t,n){var e=t.__data__;return Lo(n)?e["string"==typeof n?"string":"hash"]:e.map}function So(t){for(var n=Bs(t),e=n.length;e--;){var r=n[e],i=t[r];n[e]=[r,i,Fo(i)]}return n}function Ao(t,n){var e=z(t,n);return Nr(e)?e:rt}function To(t){var n=_f.call(t,If),e=t[If];try{t[If]=rt;var r=!0}catch(t){}var i=bf.call(t);return r&&(n?t[If]=e:delete t[If]),i}function Eo(t,n,e){for(var r=-1,i=e.length;++r<i;){var o=e[r],u=o.size;switch(o.type){case"drop":t+=u;break;case"dropRight":n-=u;break;case"take":n=Hf(n,t+u);break;case"takeRight":t=$f(t,n-u)}}return{start:t,end:n}}function Co(t){var n=t.match(Ln);return n?n[1].split(Dn):[]}function Po(t,n,e){n=Oi(n,t);for(var r=-1,i=n.length,o=!1;++r<i;){var u=Qo(n[r]);if(!(o=null!=t&&e(t,u)))break;t=t[u]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&rs(i)&&qo(u,i)&&(_p(t)||vp(t))}function jo(t){var n=t.length,e=t.constructor(n);return n&&"string"==typeof t[0]&&_f.call(t,"index")&&(e.index=t.index,e.input=t.input),e}function ko(t){return"function"!=typeof t.constructor||zo(t)?{}:dl(Cf(t))}function Ro(t,n,e,r){var i=t.constructor;switch(n){case an:return Ti(t);case Ft:case Mt:return new i(+t);case sn:return Ei(t,r);case cn:case fn:case ln:case pn:case hn:case dn:case gn:case vn:case _n:return Ri(t,r);case Gt:return Ci(t,r,e);case Vt:case nn:return new i(t);case Qt:return Pi(t);case tn:return ji(t,r,e);case en:return ki(t)}}function No(t,n){var e=n.length;if(!e)return t;var r=e-1;return n[r]=(e>1?"& ":"")+n[r],n=n.join(e>2?", ":" "),t.replace(Kn,"{\n/* [wrapped with "+n+"] */\n")}function Io(t){return _p(t)||vp(t)||!!(Rf&&t&&t[Rf])}function qo(t,n){return!!(n=null==n?Rt:n)&&("number"==typeof t||Gn.test(t))&&t>-1&&t%1==0&&t<n}function Uo(t,n,e){if(!is(e))return!1;var r=typeof n;return!!("number"==r?$a(e)&&qo(n,e.length):"string"==r&&n in e)&&Wa(e[n],t)}function Ko(t,n){if(_p(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!vs(t))||(Pn.test(t)||!Cn.test(t)||null!=n&&t in sf(n))}function Lo(t){var n=typeof t;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==t:null===t}function Do(t){var n=bo(t),r=e[n];if("function"!=typeof r||!(n in C.prototype))return!1;if(t===r)return!0;var i=Sl(r);return!!i&&t===i[0]}function Bo(t){return!!mf&&mf in t}function zo(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||df)}function Fo(t){return t===t&&!is(t)}function Mo(t,n){return function(e){return null!=e&&(e[t]===n&&(n!==rt||t in sf(e)))}}function Jo(t,n){var e=t[1],r=n[1],i=e|r,o=i<(gt|vt|xt),u=r==xt&&e==yt||r==xt&&e==Ot&&t[7].length<=n[8]||r==(xt|Ot)&&n[7].length<=n[8]&&e==yt;if(!o&&!u)return t;r>&&(t[2]=n[2],i|=e>?0:_t);var a=n[3];if(a){var s=t[3];t[3]=s?qi(s,a,n[4]):a,t[4]=s?H(t[3],ct):n[4]}return a=n[5],a&&(s=t[5],t[5]=s?Ui(s,a,n[6]):a,t[6]=s?H(t[5],ct):n[6]),a=n[7],a&&(t[7]=a),r&xt&&(t[8]=null==t[8]?n[8]:Hf(t[8],n[8])),null==t[9]&&(t[9]=n[9]),t[0]=n[0],t[1]=i,t}function Wo(t){var n=[];if(null!=t)for(var e in sf(t))n.push(e);return n}function $o(t){return bf.call(t)}function Ho(t,n,e){return n=$f(n===rt?t.length-1:n,0),function(){for(var r=arguments,i=-1,o=$f(r.length-n,0),a=ef(o);++i<o;)a[i]=r[n+i];i=-1;for(var s=ef(n+1);++i<n;)s[i]=r[i];return s[n]=e(a),u(t,this,s)}}function Go(t,n){return n.length<2?t:vr(t,ai(n,0,-1))}function Vo(t,n){for(var e=t.length,r=Hf(n.length,e),i=Ki(t);r--;){var o=n[r];t[r]=qo(o,e)?i[o]:rt}return t}function Zo(t,n,e){var r=n+"";return kl(t,No(r,nu(Co(r),e)))}function Xo(t){var n=0,e=0;return function(){var r=Gf(),i=Ct-(r-e);if(e=r,i>0){if(++n>=Et)return arguments[0]}else n=0;return t.apply(rt,arguments)}}function Yo(t,n){var e=-1,r=t.length,i=r-1;for(n=n===rt?r:n;++e<n;){var o=Qr(e,i),u=t[o];t[o]=t[e],t[e]=u}return t.length=n,t}function Qo(t){if("string"==typeof t||vs(t))return t;var n=t+"";return"0"==n&&1/t==-kt?"-0":n}function tu(t){if(null!=t){try{return vf.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function nu(t,n){return s(Lt,function(e){var r="_."+e[0];n&e[1]&&!p(t,r)&&t.push(r)}),t.sort()}function eu(t){if(t instanceof C)return t.clone();var n=new m(t.__wrapped__,t.__chain__);return n.__actions__=Ki(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function ru(t,n,e){n=(e?Uo(t,n,e):n===rt)?1:$f(xs(n),0);var r=null==t?0:t.length;if(!r||n<1)return[];for(var i=0,o=0,u=ef(Df(r/n));i<r;)u[o++]=ai(t,i,i+=n);return u}function iu(t){for(var n=-1,e=null==t?0:t.length,r=0,i=[];++n<e;){var o=t[n];o&&(i[r++]=o)}return i}function ou(){var t=arguments.length;if(!t)return[];for(var n=ef(t-1),e=arguments[0],r=t;r--;)n[r-1]=arguments[r];return g(_p(e)?Ki(e):[e],pr(n,1))}function uu(t,n,e){var r=null==t?0:t.length;return r?(n=e||n===rt?1:xs(n),ai(t,n<0?0:n,r)):[]}function au(t,n,e){var r=null==t?0:t.length;return r?(n=e||n===rt?1:xs(n),n=r-n,ai(t,0,n<0?0:n)):[]}function su(t,n){return t&&t.length?_i(t,xo(n,3),!0,!0):[]}function cu(t,n){return t&&t.length?_i(t,xo(n,3),!0):[]}function fu(t,n,e,r){var i=null==t?0:t.length;return i?(e&&"number"!=typeof e&&Uo(t,n,e)&&(e=0,r=i),fr(t,n,e,r)):[]}function lu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:xs(e);return i<0&&(i=$f(r+i,0)),x(t,xo(n,3),i)}function pu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return e!==rt&&(i=xs(e),i=e<0?$f(r+i,0):Hf(i,r-1)),x(t,xo(n,3),i,!0)}function hu(t){return(null==t?0:t.length)?pr(t,1):[]}function du(t){return(null==t?0:t.length)?pr(t,kt):[]}function gu(t,n){return(null==t?0:t.length)?(n=n===rt?1:xs(n),pr(t,n)):[]}function vu(t){for(var n=-1,e=null==t?0:t.length,r={};++n<e;){var i=t[n];r[i[0]]=i[1]}return r}function _u(t){return t&&t.length?t[0]:rt}function yu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:xs(e);return i<0&&(i=$f(r+i,0)),O(t,n,i)}function mu(t){return(null==t?0:t.length)?ai(t,0,-1):[]}function bu(t,n){return null==t?"":Jf.call(t,n)}function wu(t){var n=null==t?0:t.length;return n?t[n-1]:rt}function xu(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=r;return e!==rt&&(i=xs(e),i=i<0?$f(r+i,0):Hf(i,r-1)),n===n?X(t,n,i):x(t,A,i,!0)}function Ou(t,n){return t&&t.length?$r(t,xs(n)):rt}function Su(t,n){return t&&t.length&&n&&n.length?Xr(t,n):t}function Au(t,n,e){return t&&t.length&&n&&n.length?Xr(t,n,xo(e,2)):t}function Tu(t,n,e){return t&&t.length&&n&&n.length?Xr(t,n,rt,e):t}function Eu(t,n){var e=[];if(!t||!t.length)return e;var r=-1,i=[],o=t.length;for(n=xo(n,3);++r<o;){var u=t[r];n(u,r,t)&&(e.push(u),i.push(r))}return Yr(t,i),e}function Cu(t){return null==t?t:Xf.call(t)}function Pu(t,n,e){var r=null==t?0:t.length;return r?(e&&"number"!=typeof e&&Uo(t,n,e)?(n=0,e=r):(n=null==n?0:xs(n),e=e===rt?r:xs(e)),ai(t,n,e)):[]}function ju(t,n){return ci(t,n)}function ku(t,n,e){return fi(t,n,xo(e,2))}function Ru(t,n){var e=null==t?0:t.length;if(e){var r=ci(t,n);if(r<e&&Wa(t[r],n))return r}return-1}function Nu(t,n){return ci(t,n,!0)}function Iu(t,n,e){return fi(t,n,xo(e,2),!0)}function qu(t,n){if(null==t?0:t.length){var e=ci(t,n,!0)-1;if(Wa(t[e],n))return e}return-1}function Uu(t){return t&&t.length?li(t):[]}function Ku(t,n){return t&&t.length?li(t,xo(n,2)):[]}function Lu(t){var n=null==t?0:t.length;return n?ai(t,1,n):[]}function Du(t,n,e){return t&&t.length?(n=e||n===rt?1:xs(n),ai(t,0,n<0?0:n)):[]}function Bu(t,n,e){var r=null==t?0:t.length;return r?(n=e||n===rt?1:xs(n),n=r-n,ai(t,n<0?0:n,r)):[]}function zu(t,n){return t&&t.length?_i(t,xo(n,3),!1,!0):[]}function Fu(t,n){return t&&t.length?_i(t,xo(n,3)):[]}function Mu(t){return t&&t.length?di(t):[]}function Ju(t,n){return t&&t.length?di(t,xo(n,2)):[]}function Wu(t,n){return n="function"==typeof n?n:rt,t&&t.length?di(t,rt,n):[]}function $u(t){if(!t||!t.length)return[];var n=0;return t=l(t,function(t){if(Ha(t))return n=$f(t.length,n),!0}),R(n,function(n){return d(t,E(n))})}function Hu(t,n){if(!t||!t.length)return[];var e=$u(t);return null==n?e:d(e,function(t){return u(n,rt,t)})}function Gu(t,n){return bi(t||[],n||[],Ve)}function Vu(t,n){return bi(t||[],n||[],oi)}function Zu(t){var n=e(t);return n.__chain__=!0,n}function Xu(t,n){return n(t),t}function Yu(t,n){return n(t)}function Qu(){return Zu(this)}function ta(){return new m(this.value(),this.__chain__)}function na(){this.__values__===rt&&(this.__values__=bs(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?rt:this.__values__[this.__index__++]}}function ea(){return this}function ra(t){for(var n,e=this;e instanceof r;){var i=eu(e);i.__index__=0,i.__values__=rt,n?o.__wrapped__=i:n=i;var o=i;e=e.__wrapped__}return o.__wrapped__=t,n}function ia(){var t=this.__wrapped__;if(t instanceof C){var n=t;return this.__actions__.length&&(n=new C(this)),n=n.reverse(),n.__actions__.push({func:Yu,args:[Cu],thisArg:rt}),new m(n,this.__chain__)}return this.thru(Cu)}function oa(){return yi(this.__wrapped__,this.__actions__)}function ua(t,n,e){var r=_p(t)?f:sr;return e&&Uo(t,n,e)&&(n=rt),r(t,xo(n,3))}function aa(t,n){return(_p(t)?l:lr)(t,xo(n,3))}function sa(t,n){return pr(da(t,n),1)}function ca(t,n){return pr(da(t,n),kt)}function fa(t,n,e){return e=e===rt?1:xs(e),pr(da(t,n),e)}function la(t,n){return(_p(t)?s:gl)(t,xo(n,3))}function pa(t,n){return(_p(t)?c:vl)(t,xo(n,3))}function ha(t,n,e,r){t=$a(t)?t:Qs(t),e=e&&!r?xs(e):0;var i=t.length;return e<0&&(e=$f(i+e,0)),gs(t)?e<=i&&t.indexOf(n,e)>-1:!!i&&O(t,n,e)>-1}function da(t,n){return(_p(t)?d:zr)(t,xo(n,3))}function ga(t,n,e,r){return null==t?[]:(_p(n)||(n=null==n?[]:[n]),e=r?rt:e,_p(e)||(e=null==e?[]:[e]),Hr(t,n,e))}function va(t,n,e){var r=_p(t)?v:P,i=arguments.length<3;return r(t,xo(n,4),e,i,gl)}function _a(t,n,e){var r=_p(t)?_:P,i=arguments.length<3;return r(t,xo(n,4),e,i,vl)}function ya(t,n){return(_p(t)?l:lr)(t,Ra(xo(n,3)))}function ma(t){return(_p(t)?Ie:ri)(t)}function ba(t,n,e){return n=(e?Uo(t,n,e):n===rt)?1:xs(n),(_p(t)?Ue:ii)(t,n)}function wa(t){return(_p(t)?Ke:ui)(t)}function xa(t){if(null==t)return 0;if($a(t))return gs(t)?Y(t):t.length;var n=El(t);return n==Gt||n==tn?t.size:Lr(t).length}function Oa(t,n,e){var r=_p(t)?y:si;return e&&Uo(t,n,e)&&(n=rt),r(t,xo(n,3))}function Sa(t,n){if("function"!=typeof n)throw new lf(ut);return t=xs(t),function(){if(--t<1)return n.apply(this,arguments)}}function Aa(t,n,e){return n=e?rt:n,n=t&&null==n?t.length:n,co(t,xt,rt,rt,rt,rt,n)}function Ta(t,n){var e;if("function"!=typeof n)throw new lf(ut);return t=xs(t),function(){return--t>0&&(e=n.apply(this,arguments)),t<=1&&(n=rt),e}}function Ea(t,n,e){n=e?rt:n;var r=co(t,yt,rt,rt,rt,rt,rt,n);return r.placeholder=Ea.placeholder,r}function Ca(t,n,e){n=e?rt:n;var r=co(t,mt,rt,rt,rt,rt,rt,n);return r.placeholder=Ca.placeholder,r}function Pa(t,n,e){function r(n){var e=p,r=h;return p=h=rt,y=n,g=t.apply(r,e)}function i(t){return y=t,v=jl(a,n),m?r(t):g}function o(t){var e=t-_,r=t-y,i=n-e;return b?Hf(i,d-r):i}function u(t){var e=t-_,r=t-y;return _===rt||e>=n||e<0||b&&r>=d}function a(){var t=op();if(u(t))return s(t);v=jl(a,o(t))}function s(t){return v=rt,w&&p?r(t):(p=h=rt,g)}function c(){v!==rt&&xl(v),y=0,p=_=h=v=rt}function f(){return v===rt?g:s(op())}function l(){var t=op(),e=u(t);if(p=arguments,h=this,_=t,e){if(v===rt)return i(_);if(b)return v=jl(a,n),r(_)}return v===rt&&(v=jl(a,n)),g}var p,h,d,g,v,_,y=0,m=!1,b=!1,w=!0;if("function"!=typeof t)throw new lf(ut);return n=Ss(n)||0,is(e)&&(m=!!e.leading,b="maxWait"in e,d=b?$f(Ss(e.maxWait)||0,n):d,w="trailing"in e?!!e.trailing:w),l.cancel=c,l.flush=f,l}function ja(t){return co(t,St)}function ka(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new lf(ut);var e=function(){var r=arguments,i=n?n.apply(this,r):r[0],o=e.cache;if(o.has(i))return o.get(i);var u=t.apply(this,r);return e.cache=o.set(i,u)||o,u};return e.cache=new(ka.Cache||ce),e}function Ra(t){if("function"!=typeof t)throw new lf(ut);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}function Na(t){return Ta(2,t)}function Ia(t,n){if("function"!=typeof t)throw new lf(ut);return n=n===rt?n:xs(n),ei(t,n)}function qa(t,n){if("function"!=typeof t)throw new lf(ut);return n=null==n?0:$f(xs(n),0),ei(function(e){var r=e[n],i=Si(e,0,n);return r&&g(i,r),u(t,this,i)})}function Ua(t,n,e){var r=!0,i=!0;if("function"!=typeof t)throw new lf(ut);return is(e)&&(r="leading"in e?!!e.leading:r,i="trailing"in e?!!e.trailing:i),Pa(t,n,{leading:r,maxWait:n,trailing:i})}function Ka(t){return Aa(t,1)}function La(t,n){return lp(xi(n),t)}function Da(){if(!arguments.length)return[];var t=arguments[0];return _p(t)?t:[t]}function Ba(t){return rr(t,pt)}function za(t,n){return n="function"==typeof n?n:rt,rr(t,pt,n)}function Fa(t){return rr(t,ft|pt)}function Ma(t,n){return n="function"==typeof n?n:rt,rr(t,ft|pt,n)}function Ja(t,n){return null==n||or(t,n,Bs(n))}function Wa(t,n){return t===n||t!==t&&n!==n}function $a(t){return null!=t&&rs(t.length)&&!ns(t)}function Ha(t){return os(t)&&$a(t)}function Ga(t){return!0===t||!1===t||os(t)&&yr(t)==Ft}function Va(t){return os(t)&&1===t.nodeType&&!hs(t)}function Za(t){if(null==t)return!0;if($a(t)&&(_p(t)||"string"==typeof t||"function"==typeof t.splice||mp(t)||Sp(t)||vp(t)))return!t.length;var n=El(t);if(n==Gt||n==tn)return!t.size;if(zo(t))return!Lr(t).length;for(var e in t)if(_f.call(t,e))return!1;return!0}function Xa(t,n){return Pr(t,n)}function Ya(t,n,e){e="function"==typeof e?e:rt;var r=e?e(t,n):rt;return r===rt?Pr(t,n,rt,e):!!r}function Qa(t){if(!os(t))return!1;var n=yr(t);return n==Wt||n==Jt||"string"==typeof t.message&&"string"==typeof t.name&&!hs(t)}function ts(t){return"number"==typeof t&&Mf(t)}function ns(t){if(!is(t))return!1;var n=yr(t);return n==$t||n==Ht||n==zt||n==Yt}function es(t){return"number"==typeof t&&t==xs(t)}function rs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Rt}function is(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function os(t){return null!=t&&"object"==typeof t}function us(t,n){return t===n||Rr(t,n,So(n))}function as(t,n,e){return e="function"==typeof e?e:rt,Rr(t,n,So(n),e)}function ss(t){return ps(t)&&t!=+t}function cs(t){if(Cl(t))throw new of(ot);return Nr(t)}function fs(t){return null===t}function ls(t){return null==t}function ps(t){return"number"==typeof t||os(t)&&yr(t)==Vt}function hs(t){if(!os(t)||yr(t)!=Xt)return!1;var n=Cf(t);if(null===n)return!0;var e=_f.call(n,"constructor")&&n.constructor;return"function"==typeof e&&e instanceof e&&vf.call(e)==wf}function ds(t){return es(t)&&t>=-Rt&&t<=Rt}function gs(t){return"string"==typeof t||!_p(t)&&os(t)&&yr(t)==nn}function vs(t){return"symbol"==typeof t||os(t)&&yr(t)==en}function _s(t){return t===rt}function ys(t){return os(t)&&El(t)==on}function ms(t){return os(t)&&yr(t)==un}function bs(t){if(!t)return[];if($a(t))return gs(t)?Q(t):Ki(t);if(Nf&&t[Nf])return J(t[Nf]());var n=El(t);return(n==Gt?W:n==tn?G:Qs)(t)}function ws(t){if(!t)return 0===t?t:0;if((t=Ss(t))===kt||t===-kt){return(t<0?-1:1)*Nt}return t===t?t:0}function xs(t){var n=ws(t),e=n%1;return n===n?e?n-e:n:0}function Os(t){return t?er(xs(t),0,qt):0}function Ss(t){if("number"==typeof t)return t;if(vs(t))return It;if(is(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=is(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(In,"");var e=Wn.test(t);return e||Hn.test(t)?Pe(t.slice(2),e?2:8):Jn.test(t)?It:+t}function As(t){return Li(t,zs(t))}function Ts(t){return t?er(xs(t),-Rt,Rt):0===t?t:0}function Es(t){return null==t?"":hi(t)}function Cs(t,n){var e=dl(t);return null==n?e:Ye(e,n)}function Ps(t,n){return w(t,xo(n,3),hr)}function js(t,n){return w(t,xo(n,3),dr)}function ks(t,n){return null==t?t:_l(t,xo(n,3),zs)}function Rs(t,n){return null==t?t:yl(t,xo(n,3),zs)}function Ns(t,n){return t&&hr(t,xo(n,3))}function Is(t,n){return t&&dr(t,xo(n,3))}function qs(t){return null==t?[]:gr(t,Bs(t))}function Us(t){return null==t?[]:gr(t,zs(t))}function Ks(t,n,e){var r=null==t?rt:vr(t,n);return r===rt?e:r}function Ls(t,n){return null!=t&&Po(t,n,br)}function Ds(t,n){return null!=t&&Po(t,n,wr)}function Bs(t){return $a(t)?Ne(t):Lr(t)}function zs(t){return $a(t)?Ne(t,!0):Dr(t)}function Fs(t,n){var e={};return n=xo(n,3),hr(t,function(t,r,i){tr(e,n(t,r,i),t)}),e}function Ms(t,n){var e={};return n=xo(n,3),hr(t,function(t,r,i){tr(e,r,n(t,r,i))}),e}function Js(t,n){return Ws(t,Ra(xo(n)))}function Ws(t,n){if(null==t)return{};var e=d(mo(t),function(t){return[t]});return n=xo(n),Vr(t,e,function(t,e){return n(t,e[0])})}function $s(t,n,e){n=Oi(n,t);var r=-1,i=n.length;for(i||(i=1,t=rt);++r<i;){var o=null==t?rt:t[Qo(n[r])];o===rt&&(r=i,o=e),t=ns(o)?o.call(t):o}return t}function Hs(t,n,e){return null==t?t:oi(t,n,e)}function Gs(t,n,e,r){return r="function"==typeof r?r:rt,null==t?t:oi(t,n,e,r)}function Vs(t,n,e){var r=_p(t),i=r||mp(t)||Sp(t);if(n=xo(n,4),null==e){var o=t&&t.constructor;e=i?r?new o:[]:is(t)&&ns(o)?dl(Cf(t)):{}}return(i?s:hr)(t,function(t,r,i){return n(e,t,r,i)}),e}function Zs(t,n){return null==t||gi(t,n)}function Xs(t,n,e){return null==t?t:vi(t,n,xi(e))}function Ys(t,n,e,r){return r="function"==typeof r?r:rt,null==t?t:vi(t,n,xi(e),r)}function Qs(t){return null==t?[]:q(t,Bs(t))}function tc(t){return null==t?[]:q(t,zs(t))}function nc(t,n,e){return e===rt&&(e=n,n=rt),e!==rt&&(e=Ss(e),e=e===e?e:0),n!==rt&&(n=Ss(n),n=n===n?n:0),er(Ss(t),n,e)}function ec(t,n,e){return n=ws(n),e===rt?(e=n,n=0):e=ws(e),t=Ss(t),xr(t,n,e)}function rc(t,n,e){if(e&&"boolean"!=typeof e&&Uo(t,n,e)&&(n=e=rt),e===rt&&("boolean"==typeof n?(e=n,n=rt):"boolean"==typeof t&&(e=t,t=rt)),t===rt&&n===rt?(t=0,n=1):(t=ws(t),n===rt?(n=t,t=0):n=ws(n)),t>n){var r=t;t=n,n=r}if(e||t%1||n%1){var i=Zf();return Hf(t+i*(n-t+Ce("1e-"+((i+"").length-1))),n)}return Qr(t,n)}function ic(t){return Zp(Es(t).toLowerCase())}function oc(t){return(t=Es(t))&&t.replace(Vn,We).replace(ge,"")}function uc(t,n,e){t=Es(t),n=hi(n);var r=t.length;e=e===rt?r:er(xs(e),0,r);var i=e;return(e-=n.length)>=0&&t.slice(e,i)==n}function ac(t){return t=Es(t),t&&Sn.test(t)?t.replace(xn,$e):t}function sc(t){return t=Es(t),t&&Nn.test(t)?t.replace(Rn,"\\$&"):t}function cc(t,n,e){t=Es(t),n=xs(n);var r=n?Y(t):0;if(!n||r>=n)return t;var i=(n-r)/2;return eo(Bf(i),e)+t+eo(Df(i),e)}function fc(t,n,e){t=Es(t),n=xs(n);var r=n?Y(t):0;return n&&r<n?t+eo(n-r,e):t}function lc(t,n,e){t=Es(t),n=xs(n);var r=n?Y(t):0;return n&&r<n?eo(n-r,e)+t:t}function pc(t,n,e){return e||null==n?n=0:n&&(n=+n),Vf(Es(t).replace(qn,""),n||0)}function hc(t,n,e){return n=(e?Uo(t,n,e):n===rt)?1:xs(n),ni(Es(t),n)}function dc(){var t=arguments,n=Es(t[0]);return t.length<3?n:n.replace(t[1],t[2])}function gc(t,n,e){return e&&"number"!=typeof e&&Uo(t,n,e)&&(n=e=rt),(e=e===rt?qt:e>>>0)?(t=Es(t),t&&("string"==typeof n||null!=n&&!xp(n))&&!(n=hi(n))&&F(t)?Si(Q(t),0,e):t.split(n,e)):[]}function vc(t,n,e){return t=Es(t),e=null==e?0:er(xs(e),0,t.length),n=hi(n),t.slice(e,e+n.length)==n}function _c(t,n,r){var i=e.templateSettings;r&&Uo(t,n,r)&&(n=rt),t=Es(t),n=Pp({},n,i,fo);var o,u,a=Pp({},n.imports,i.imports,fo),s=Bs(a),c=q(a,s),f=0,l=n.interpolate||Zn,p="__p += '",h=cf((n.escape||Zn).source+"|"+l.source+"|"+(l===En?Fn:Zn).source+"|"+(n.evaluate||Zn).source+"|$","g"),d="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++we+"]")+"\n";t.replace(h,function(n,e,r,i,a,s){return r||(r=i),p+=t.slice(f,s).replace(Xn,B),e&&(o=!0,p+="' +\n__e("+e+") +\n'"),a&&(u=!0,p+="';\n"+a+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=s+n.length,n}),p+="';\n";var g=n.variable;g||(p="with (obj) {\n"+p+"\n}\n"),p=(u?p.replace(yn,""):p).replace(mn,"$1").replace(bn,"$1;"),p="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(u?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var v=Xp(function(){return uf(s,d+"return "+p).apply(rt,c)});if(v.source=p,Qa(v))throw v;return v}function yc(t){return Es(t).toLowerCase()}function mc(t){return Es(t).toUpperCase()}function bc(t,n,e){if((t=Es(t))&&(e||n===rt))return t.replace(In,"");if(!t||!(n=hi(n)))return t;var r=Q(t),i=Q(n);return Si(r,K(r,i),L(r,i)+1).join("")}function wc(t,n,e){if((t=Es(t))&&(e||n===rt))return t.replace(Un,"");if(!t||!(n=hi(n)))return t;var r=Q(t);return Si(r,0,L(r,Q(n))+1).join("")}function xc(t,n,e){if((t=Es(t))&&(e||n===rt))return t.replace(qn,"");if(!t||!(n=hi(n)))return t;var r=Q(t);return Si(r,K(r,Q(n))).join("")}function Oc(t,n){var e=At,r=Tt;if(is(n)){var i="separator"in n?n.separator:i;e="length"in n?xs(n.length):e,r="omission"in n?hi(n.omission):r}t=Es(t);var o=t.length;if(F(t)){var u=Q(t);o=u.length}if(e>=o)return t;var a=e-Y(r);if(a<1)return r;var s=u?Si(u,0,a).join(""):t.slice(0,a);if(i===rt)return s+r;if(u&&(a+=s.length-a),xp(i)){if(t.slice(a).search(i)){var c,f=s;for(i.global||(i=cf(i.source,Es(Mn.exec(i))+"g")),i.lastIndex=0;c=i.exec(f);)var l=c.index;s=s.slice(0,l===rt?a:l)}}else if(t.indexOf(hi(i),a)!=a){var p=s.lastIndexOf(i);p>-1&&(s=s.slice(0,p))}return s+r}function Sc(t){return t=Es(t),t&&On.test(t)?t.replace(wn,He):t}function Ac(t,n,e){return t=Es(t),n=e?rt:n,n===rt?M(t)?et(t):b(t):t.match(n)||[]}function Tc(t){var n=null==t?0:t.length,e=xo();return t=n?d(t,function(t){if("function"!=typeof t[1])throw new lf(ut);return[e(t[0]),t[1]]}):[],ei(function(e){for(var r=-1;++r<n;){var i=t[r];if(u(i[0],this,e))return u(i[1],this,e)}})}function Ec(t){return ir(rr(t,ft))}function Cc(t){return function(){return t}}function Pc(t,n){return null==t||t!==t?n:t}function jc(t){return t}function kc(t){return Kr("function"==typeof t?t:rr(t,ft))}function Rc(t){return Fr(rr(t,ft))}function Nc(t,n){return Mr(t,rr(n,ft))}function Ic(t,n,e){var r=Bs(n),i=gr(n,r);null!=e||is(n)&&(i.length||!r.length)||(e=n,n=t,t=this,i=gr(n,Bs(n)));var o=!(is(e)&&"chain"in e&&!e.chain),u=ns(t);return s(i,function(e){var r=n[e];t[e]=r,u&&(t.prototype[e]=function(){var n=this.__chain__;if(o||n){var e=t(this.__wrapped__);return(e.__actions__=Ki(this.__actions__)).push({func:r,args:arguments,thisArg:t}),e.__chain__=n,e}return r.apply(t,g([this.value()],arguments))})}),t}function qc(){return Re._===this&&(Re._=xf),this}function Uc(){}function Kc(t){return t=xs(t),ei(function(n){return $r(n,t)})}function Lc(t){return Ko(t)?E(Qo(t)):Zr(t)}function Dc(t){return function(n){return null==t?rt:vr(t,n)}}function Bc(){return[]}function zc(){return!1}function Fc(){return{}}function Mc(){return""}function Jc(){return!0}function Wc(t,n){if((t=xs(t))<1||t>Rt)return[];var e=qt,r=Hf(t,qt);n=xo(n),t-=qt;for(var i=R(r,n);++e<t;)n(e);return i}function $c(t){return _p(t)?d(t,Qo):vs(t)?[t]:Ki(Rl(Es(t)))}function Hc(t){var n=++yf;return Es(t)+n}function Gc(t){return t&&t.length?cr(t,jc,mr):rt}function Vc(t,n){return t&&t.length?cr(t,xo(n,2),mr):rt}function Zc(t){return T(t,jc)}function Xc(t,n){return T(t,xo(n,2))}function Yc(t){return t&&t.length?cr(t,jc,Br):rt}function Qc(t,n){return t&&t.length?cr(t,xo(n,2),Br):rt}function tf(t){return t&&t.length?k(t,jc):0}function nf(t,n){return t&&t.length?k(t,xo(n,2)):0}n=null==n?Re:Ge.defaults(Re.Object(),n,Ge.pick(Re,be));var ef=n.Array,rf=n.Date,of=n.Error,uf=n.Function,af=n.Math,sf=n.Object,cf=n.RegExp,ff=n.String,lf=n.TypeError,pf=ef.prototype,hf=uf.prototype,df=sf.prototype,gf=n["__core-js_shared__"],vf=hf.toString,_f=df.hasOwnProperty,yf=0,mf=function(){var t=/[^.]+$/.exec(gf&&gf.keys&&gf.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),bf=df.toString,wf=vf.call(sf),xf=Re._,Of=cf("^"+vf.call(_f).replace(Rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Sf=qe?n.Buffer:rt,Af=n.Symbol,Tf=n.Uint8Array,Ef=Sf?Sf.allocUnsafe:rt,Cf=$(sf.getPrototypeOf,sf),Pf=sf.create,jf=df.propertyIsEnumerable,kf=pf.splice,Rf=Af?Af.isConcatSpreadable:rt,Nf=Af?Af.iterator:rt,If=Af?Af.toStringTag:rt,qf=function(){try{var t=Ao(sf,"defineProperty");return t({},"",{}),t}catch(t){}}(),Uf=n.clearTimeout!==Re.clearTimeout&&n.clearTimeout,Kf=rf&&rf.now!==Re.Date.now&&rf.now,Lf=n.setTimeout!==Re.setTimeout&&n.setTimeout,Df=af.ceil,Bf=af.floor,zf=sf.getOwnPropertySymbols,Ff=Sf?Sf.isBuffer:rt,Mf=n.isFinite,Jf=pf.join,Wf=$(sf.keys,sf),$f=af.max,Hf=af.min,Gf=rf.now,Vf=n.parseInt,Zf=af.random,Xf=pf.reverse,Yf=Ao(n,"DataView"),Qf=Ao(n,"Map"),tl=Ao(n,"Promise"),nl=Ao(n,"Set"),el=Ao(n,"WeakMap"),rl=Ao(sf,"create"),il=el&&new el,ol={},ul=tu(Yf),al=tu(Qf),sl=tu(tl),cl=tu(nl),fl=tu(el),ll=Af?Af.prototype:rt,pl=ll?ll.valueOf:rt,hl=ll?ll.toString:rt,dl=function(){function t(){}return function(n){if(!is(n))return{};if(Pf)return Pf(n);t.prototype=n;var e=new t;return t.prototype=rt,e}}();e.templateSettings={escape:An,evaluate:Tn,interpolate:En,variable:"",imports:{_:e}},e.prototype=r.prototype,e.prototype.constructor=e,m.prototype=dl(r.prototype),m.prototype.constructor=m,C.prototype=dl(r.prototype),C.prototype.constructor=C,Bn.prototype.clear=Yn,Bn.prototype.delete=Qn,Bn.prototype.get=te,Bn.prototype.has=ne,Bn.prototype.set=ee,re.prototype.clear=ie,re.prototype.delete=oe,re.prototype.get=ue,re.prototype.has=ae,re.prototype.set=se,ce.prototype.clear=fe,ce.prototype.delete=le,ce.prototype.get=pe,ce.prototype.has=he,ce.prototype.set=ve,_e.prototype.add=_e.prototype.push=ye,_e.prototype.has=me,Se.prototype.clear=Ae,Se.prototype.delete=Te,Se.prototype.get=Ee,Se.prototype.has=je,Se.prototype.set=ke;var gl=Mi(hr),vl=Mi(dr,!0),_l=Ji(),yl=Ji(!0),ml=il?function(t,n){return il.set(t,n),t}:jc,bl=qf?function(t,n){return qf(t,"toString",{configurable:!0,enumerable:!1,value:Cc(n),writable:!0})}:jc,wl=ei,xl=Uf||function(t){return Re.clearTimeout(t)},Ol=nl&&1/G(new nl([,-0]))[1]==kt?function(t){return new nl(t)}:Uc,Sl=il?function(t){return il.get(t)}:Uc,Al=zf?function(t){return null==t?[]:(t=sf(t),l(zf(t),function(n){return jf.call(t,n)}))}:Bc,Tl=zf?function(t){for(var n=[];t;)g(n,Al(t)),t=Cf(t);return n}:Bc,El=yr;(Yf&&El(new Yf(new ArrayBuffer(1)))!=sn||Qf&&El(new Qf)!=Gt||tl&&"[object Promise]"!=El(tl.resolve())||nl&&El(new nl)!=tn||el&&El(new el)!=on)&&(El=function(t){var n=yr(t),e=n==Xt?t.constructor:rt,r=e?tu(e):"";if(r)switch(r){case ul:return sn;case al:return Gt;case sl:return"[object Promise]";case cl:return tn;case fl:return on}return n});var Cl=gf?ns:zc,Pl=Xo(ml),jl=Lf||function(t,n){return Re.setTimeout(t,n)},kl=Xo(bl),Rl=function(t){var n=ka(t,function(t){return e.size===st&&e.clear(),t}),e=n.cache;return n}(function(t){var n=[];return jn.test(t)&&n.push(""),t.replace(kn,function(t,e,r,i){n.push(r?i.replace(zn,"$1"):e||t)}),n}),Nl=ei(function(t,n){return Ha(t)?ar(t,pr(n,1,Ha,!0)):[]}),Il=ei(function(t,n){var e=wu(n);return Ha(e)&&(e=rt),Ha(t)?ar(t,pr(n,1,Ha,!0),xo(e,2)):[]}),ql=ei(function(t,n){var e=wu(n);return Ha(e)&&(e=rt),Ha(t)?ar(t,pr(n,1,Ha,!0),rt,e):[]}),Ul=ei(function(t){var n=d(t,wi);return n.length&&n[0]===t[0]?Or(n):[]}),Kl=ei(function(t){var n=wu(t),e=d(t,wi);return n===wu(e)?n=rt:e.pop(),e.length&&e[0]===t[0]?Or(e,xo(n,2)):[]}),Ll=ei(function(t){var n=wu(t),e=d(t,wi);return n="function"==typeof n?n:rt,n&&e.pop(),e.length&&e[0]===t[0]?Or(e,rt,n):[]}),Dl=ei(Su),Bl=_o(function(t,n){var e=null==t?0:t.length,r=nr(t,n);return Yr(t,d(n,function(t){return qo(t,e)?+t:t}).sort(Ni)),r}),zl=ei(function(t){return di(pr(t,1,Ha,!0))}),Fl=ei(function(t){var n=wu(t);return Ha(n)&&(n=rt),di(pr(t,1,Ha,!0),xo(n,2))}),Ml=ei(function(t){var n=wu(t);return n="function"==typeof n?n:rt,di(pr(t,1,Ha,!0),rt,n)}),Jl=ei(function(t,n){return Ha(t)?ar(t,n):[]}),Wl=ei(function(t){return mi(l(t,Ha))}),$l=ei(function(t){var n=wu(t);return Ha(n)&&(n=rt),mi(l(t,Ha),xo(n,2))}),Hl=ei(function(t){var n=wu(t);return n="function"==typeof n?n:rt,mi(l(t,Ha),rt,n)}),Gl=ei($u),Vl=ei(function(t){var n=t.length,e=n>1?t[n-1]:rt;return e="function"==typeof e?(t.pop(),e):rt,Hu(t,e)}),Zl=_o(function(t){var n=t.length,e=n?t[0]:0,r=this.__wrapped__,i=function(n){return nr(n,t)};return!(n>1||this.__actions__.length)&&r instanceof C&&qo(e)?(r=r.slice(e,+e+(n?1:0)),r.__actions__.push({func:Yu,args:[i],thisArg:rt}),new m(r,this.__chain__).thru(function(t){return n&&!t.length&&t.push(rt),t})):this.thru(i)}),Xl=zi(function(t,n,e){_f.call(t,e)?++t[e]:tr(t,e,1)}),Yl=Zi(lu),Ql=Zi(pu),tp=zi(function(t,n,e){_f.call(t,e)?t[e].push(n):tr(t,e,[n])}),np=ei(function(t,n,e){var r=-1,i="function"==typeof n,o=$a(t)?ef(t.length):[];return gl(t,function(t){o[++r]=i?u(n,t,e):Ar(t,n,e)}),o}),ep=zi(function(t,n,e){tr(t,e,n)}),rp=zi(function(t,n,e){t[e?0:1].push(n)},function(){return[[],[]]}),ip=ei(function(t,n){if(null==t)return[];var e=n.length;return e>1&&Uo(t,n[0],n[1])?n=[]:e>2&&Uo(n[0],n[1],n[2])&&(n=[n[0]]),Hr(t,pr(n,1),[])}),op=Kf||function(){return Re.Date.now()},up=ei(function(t,n,e){var r=gt;if(e.length){var i=H(e,wo(up));r|=bt}return co(t,r,n,e,i)}),ap=ei(function(t,n,e){var r=gt|vt;if(e.length){var i=H(e,wo(ap));r|=bt}return co(n,r,t,e,i)}),sp=ei(function(t,n){return ur(t,1,n)}),cp=ei(function(t,n,e){return ur(t,Ss(n)||0,e)});ka.Cache=ce;var fp=wl(function(t,n){n=1==n.length&&_p(n[0])?d(n[0],I(xo())):d(pr(n,1),I(xo()));var e=n.length;return ei(function(r){for(var i=-1,o=Hf(r.length,e);++i<o;)r[i]=n[i].call(this,r[i]);return u(t,this,r)})}),lp=ei(function(t,n){var e=H(n,wo(lp));return co(t,bt,rt,n,e)}),pp=ei(function(t,n){var e=H(n,wo(pp));return co(t,wt,rt,n,e)}),hp=_o(function(t,n){return co(t,Ot,rt,rt,rt,n)}),dp=oo(mr),gp=oo(function(t,n){return t>=n}),vp=Tr(function(){return arguments}())?Tr:function(t){return os(t)&&_f.call(t,"callee")&&!jf.call(t,"callee")},_p=ef.isArray,yp=Le?I(Le):Er,mp=Ff||zc,bp=De?I(De):Cr,wp=Be?I(Be):kr,xp=ze?I(ze):Ir,Op=Fe?I(Fe):qr,Sp=Me?I(Me):Ur,Ap=oo(Br),Tp=oo(function(t,n){return t<=n}),Ep=Fi(function(t,n){if(zo(n)||$a(n))return void Li(n,Bs(n),t);for(var e in n)_f.call(n,e)&&Ve(t,e,n[e])}),Cp=Fi(function(t,n){Li(n,zs(n),t)}),Pp=Fi(function(t,n,e,r){Li(n,zs(n),t,r)}),jp=Fi(function(t,n,e,r){Li(n,Bs(n),t,r)}),kp=_o(nr),Rp=ei(function(t){return t.push(rt,fo),u(Pp,rt,t)}),Np=ei(function(t){return t.push(rt,lo),u(Lp,rt,t)}),Ip=Qi(function(t,n,e){t[n]=e},Cc(jc)),qp=Qi(function(t,n,e){_f.call(t,n)?t[n].push(e):t[n]=[e]},xo),Up=ei(Ar),Kp=Fi(function(t,n,e){Jr(t,n,e)}),Lp=Fi(function(t,n,e,r){Jr(t,n,e,r)}),Dp=_o(function(t,n){var e={};if(null==t)return e;var r=!1;n=d(n,function(n){return n=Oi(n,t),r||(r=n.length>1),n}),Li(t,mo(t),e),r&&(e=rr(e,ft|lt|pt,po));for(var i=n.length;i--;)gi(e,n[i]);return e}),Bp=_o(function(t,n){return null==t?{}:Gr(t,n)}),zp=so(Bs),Fp=so(zs),Mp=Hi(function(t,n,e){return n=n.toLowerCase(),t+(e?ic(n):n)}),Jp=Hi(function(t,n,e){return t+(e?"-":"")+n.toLowerCase()}),Wp=Hi(function(t,n,e){return t+(e?" ":"")+n.toLowerCase()}),$p=$i("toLowerCase"),Hp=Hi(function(t,n,e){return t+(e?"_":"")+n.toLowerCase()}),Gp=Hi(function(t,n,e){return t+(e?" ":"")+Zp(n)}),Vp=Hi(function(t,n,e){return t+(e?" ":"")+n.toUpperCase()}),Zp=$i("toUpperCase"),Xp=ei(function(t,n){try{return u(t,rt,n)}catch(t){return Qa(t)?t:new of(t)}}),Yp=_o(function(t,n){return s(n,function(n){n=Qo(n),tr(t,n,up(t[n],t))}),t}),Qp=Xi(),th=Xi(!0),nh=ei(function(t,n){return function(e){return Ar(e,t,n)}}),eh=ei(function(t,n){return function(e){return Ar(t,e,n)}}),rh=no(d),ih=no(f),oh=no(y),uh=io(),ah=io(!0),sh=to(function(t,n){return t+n},0),ch=ao("ceil"),fh=to(function(t,n){return t/n},1),lh=ao("floor"),ph=to(function(t,n){return t*n},1),hh=ao("round"),dh=to(function(t,n){return t-n},0);return e.after=Sa,e.ary=Aa,e.assign=Ep,e.assignIn=Cp,e.assignInWith=Pp,e.assignWith=jp,e.at=kp,e.before=Ta,e.bind=up,e.bindAll=Yp,e.bindKey=ap,e.castArray=Da,e.chain=Zu,e.chunk=ru,e.compact=iu,e.concat=ou,e.cond=Tc,e.conforms=Ec,e.constant=Cc,e.countBy=Xl,e.create=Cs,e.curry=Ea,e.curryRight=Ca,e.debounce=Pa,e.defaults=Rp,e.defaultsDeep=Np,e.defer=sp,e.delay=cp,e.difference=Nl,e.differenceBy=Il,e.differenceWith=ql,e.drop=uu,e.dropRight=au,e.dropRightWhile=su,e.dropWhile=cu,e.fill=fu,e.filter=aa,e.flatMap=sa,e.flatMapDeep=ca,e.flatMapDepth=fa,e.flatten=hu,e.flattenDeep=du,e.flattenDepth=gu,e.flip=ja,e.flow=Qp,e.flowRight=th,e.fromPairs=vu,e.functions=qs,e.functionsIn=Us,e.groupBy=tp,e.initial=mu,e.intersection=Ul,e.intersectionBy=Kl,e.intersectionWith=Ll,e.invert=Ip,e.invertBy=qp,e.invokeMap=np,e.iteratee=kc,e.keyBy=ep,e.keys=Bs,e.keysIn=zs,e.map=da,e.mapKeys=Fs,e.mapValues=Ms,e.matches=Rc,e.matchesProperty=Nc,e.memoize=ka,e.merge=Kp,e.mergeWith=Lp,e.method=nh,e.methodOf=eh,e.mixin=Ic,e.negate=Ra,e.nthArg=Kc,e.omit=Dp,e.omitBy=Js,e.once=Na,e.orderBy=ga,e.over=rh,e.overArgs=fp,e.overEvery=ih,e.overSome=oh,e.partial=lp,e.partialRight=pp,e.partition=rp,e.pick=Bp,e.pickBy=Ws,e.property=Lc,e.propertyOf=Dc,e.pull=Dl,e.pullAll=Su,e.pullAllBy=Au,e.pullAllWith=Tu,e.pullAt=Bl,e.range=uh,e.rangeRight=ah,e.rearg=hp,e.reject=ya,e.remove=Eu,e.rest=Ia,e.reverse=Cu,e.sampleSize=ba,e.set=Hs,e.setWith=Gs,e.shuffle=wa,e.slice=Pu,e.sortBy=ip,e.sortedUniq=Uu,e.sortedUniqBy=Ku,e.split=gc,e.spread=qa,e.tail=Lu,e.take=Du,e.takeRight=Bu,e.takeRightWhile=zu,e.takeWhile=Fu,e.tap=Xu,e.throttle=Ua,e.thru=Yu,e.toArray=bs,e.toPairs=zp,e.toPairsIn=Fp,e.toPath=$c,e.toPlainObject=As,e.transform=Vs,e.unary=Ka,e.union=zl,e.unionBy=Fl,e.unionWith=Ml,e.uniq=Mu,e.uniqBy=Ju,e.uniqWith=Wu,e.unset=Zs,e.unzip=$u,e.unzipWith=Hu,e.update=Xs,e.updateWith=Ys,e.values=Qs,e.valuesIn=tc,e.without=Jl,e.words=Ac,e.wrap=La,e.xor=Wl,e.xorBy=$l,e.xorWith=Hl,e.zip=Gl,e.zipObject=Gu,e.zipObjectDeep=Vu,e.zipWith=Vl,e.entries=zp,e.entriesIn=Fp,e.extend=Cp,e.extendWith=Pp,Ic(e,e),e.add=sh,e.attempt=Xp,e.camelCase=Mp,e.capitalize=ic,e.ceil=ch,e.clamp=nc,e.clone=Ba,e.cloneDeep=Fa,e.cloneDeepWith=Ma,e.cloneWith=za,e.conformsTo=Ja,e.deburr=oc,e.defaultTo=Pc,e.divide=fh,e.endsWith=uc,e.eq=Wa,e.escape=ac,e.escapeRegExp=sc,e.every=ua,e.find=Yl,e.findIndex=lu,e.findKey=Ps,e.findLast=Ql,e.findLastIndex=pu,e.findLastKey=js,e.floor=lh,e.forEach=la,e.forEachRight=pa,e.forIn=ks,e.forInRight=Rs,e.forOwn=Ns,e.forOwnRight=Is,e.get=Ks,e.gt=dp,e.gte=gp,e.has=Ls,e.hasIn=Ds,e.head=_u,e.identity=jc,e.includes=ha,e.indexOf=yu,e.inRange=ec,e.invoke=Up,e.isArguments=vp,e.isArray=_p,e.isArrayBuffer=yp,e.isArrayLike=$a,e.isArrayLikeObject=Ha,e.isBoolean=Ga,e.isBuffer=mp,e.isDate=bp,e.isElement=Va,e.isEmpty=Za,e.isEqual=Xa,e.isEqualWith=Ya,e.isError=Qa,e.isFinite=ts,e.isFunction=ns,e.isInteger=es,e.isLength=rs,e.isMap=wp,e.isMatch=us,e.isMatchWith=as,e.isNaN=ss,e.isNative=cs,e.isNil=ls,e.isNull=fs,e.isNumber=ps,e.isObject=is,e.isObjectLike=os,e.isPlainObject=hs,e.isRegExp=xp,e.isSafeInteger=ds,e.isSet=Op,e.isString=gs,e.isSymbol=vs,e.isTypedArray=Sp,e.isUndefined=_s,e.isWeakMap=ys,e.isWeakSet=ms,e.join=bu,e.kebabCase=Jp,e.last=wu,e.lastIndexOf=xu,e.lowerCase=Wp,e.lowerFirst=$p,e.lt=Ap,e.lte=Tp,e.max=Gc,e.maxBy=Vc,e.mean=Zc,e.meanBy=Xc,e.min=Yc,e.minBy=Qc,e.stubArray=Bc,e.stubFalse=zc,e.stubObject=Fc,e.stubString=Mc,e.stubTrue=Jc,e.multiply=ph,e.nth=Ou,e.noConflict=qc,e.noop=Uc,e.now=op,e.pad=cc,e.padEnd=fc,e.padStart=lc,e.parseInt=pc,e.random=rc,e.reduce=va,e.reduceRight=_a,e.repeat=hc,e.replace=dc,e.result=$s,e.round=hh,e.runInContext=t,e.sample=ma,e.size=xa,e.snakeCase=Hp,e.some=Oa,e.sortedIndex=ju,e.sortedIndexBy=ku,e.sortedIndexOf=Ru,e.sortedLastIndex=Nu,e.sortedLastIndexBy=Iu,e.sortedLastIndexOf=qu,e.startCase=Gp,e.startsWith=vc,e.subtract=dh,e.sum=tf,e.sumBy=nf,e.template=_c,e.times=Wc,e.toFinite=ws,e.toInteger=xs,e.toLength=Os,e.toLower=yc,e.toNumber=Ss,e.toSafeInteger=Ts,e.toString=Es,e.toUpper=mc,e.trim=bc,e.trimEnd=wc,e.trimStart=xc,e.truncate=Oc,e.unescape=Sc,e.uniqueId=Hc,e.upperCase=Vp,e.upperFirst=Zp,e.each=la,e.eachRight=pa,e.first=_u,Ic(e,function(){var t={};return hr(e,function(n,r){_f.call(e.prototype,r)||(t[r]=n)}),t}(),{chain:!1}),e.VERSION="4.17.4",s(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){e[t].placeholder=e}),s(["drop","take"],function(t,n){C.prototype[t]=function(e){e=e===rt?1:$f(xs(e),0);var r=this.__filtered__&&!n?new C(this):this.clone();return r.__filtered__?r.__takeCount__=Hf(e,r.__takeCount__):r.__views__.push({size:Hf(e,qt),type:t+(r.__dir__<0?"Right":"")}),r},C.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),s(["filter","map","takeWhile"],function(t,n){var e=n+1,r=e==Pt||3==e;C.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:xo(t,3),type:e}),n.__filtered__=n.__filtered__||r,n}}),s(["head","last"],function(t,n){var e="take"+(n?"Right":"");C.prototype[t]=function(){return this[e](1).value()[0]}}),s(["initial","tail"],function(t,n){var e="drop"+(n?"":"Right");C.prototype[t]=function(){return this.__filtered__?new C(this):this[e](1)}}),C.prototype.compact=function(){return this.filter(jc)},C.prototype.find=function(t){return this.filter(t).head()},C.prototype.findLast=function(t){return this.reverse().find(t)},C.prototype.invokeMap=ei(function(t,n){return"function"==typeof t?new C(this):this.map(function(e){return Ar(e,t,n)})}),C.prototype.reject=function(t){return this.filter(Ra(xo(t)))},C.prototype.slice=function(t,n){t=xs(t);var e=this;return e.__filtered__&&(t>0||n<0)?new C(e):(t<0?e=e.takeRight(-t):t&&(e=e.drop(t)),n!==rt&&(n=xs(n),e=n<0?e.dropRight(-n):e.take(n-t)),e)},C.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},C.prototype.toArray=function(){return this.take(qt)},hr(C.prototype,function(t,n){var r=/^(?:filter|find|map|reject)|While$/.test(n),i=/^(?:head|last)$/.test(n),o=e[i?"take"+("last"==n?"Right":""):n],u=i||/^find/.test(n);o&&(e.prototype[n]=function(){var n=this.__wrapped__,a=i?[1]:arguments,s=n instanceof C,c=a[0],f=s||_p(n),l=function(t){var n=o.apply(e,g([t],a));return i&&p?n[0]:n};f&&r&&"function"==typeof c&&1!=c.length&&(s=f=!1);var p=this.__chain__,h=!!this.__actions__.length,d=u&&!p,v=s&&!h;if(!u&&f){n=v?n:new C(this);var _=t.apply(n,a);return _.__actions__.push({func:Yu,args:[l],thisArg:rt}),new m(_,p)}return d&&v?t.apply(this,a):(_=this.thru(l),d?i?_.value()[0]:_.value():_)})}),s(["pop","push","shift","sort","splice","unshift"],function(t){var n=pf[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);e.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var e=this.value();return n.apply(_p(e)?e:[],t)}return this[r](function(e){return n.apply(_p(e)?e:[],t)})}}),hr(C.prototype,function(t,n){var r=e[n];if(r){var i=r.name+"";(ol[i]||(ol[i]=[])).push({name:n,func:r})}}),ol[Yi(rt,vt).name]=[{name:"wrapper",func:rt}],C.prototype.clone=Z,C.prototype.reverse=tt,C.prototype.value=nt,e.prototype.at=Zl,e.prototype.chain=Qu,e.prototype.commit=ta,e.prototype.next=na,e.prototype.plant=ra,e.prototype.reverse=ia,e.prototype.toJSON=e.prototype.valueOf=e.prototype.value=oa,e.prototype.first=e.prototype.head,Nf&&(e.prototype[Nf]=ea),e}();Re._=Ge,(r=function(){return Ge}.call(n,e,n,t))!==rt&&(t.exports=r)}).call(this)}).call(n,e(19)(t))},function(t,n,e){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i={};t.exports=i,i.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},i.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},i.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0)},i.arrayBufferToString=function(t){if(this.isNodeJs())return t.toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var n,e=new Uint8Array(t),r="",i=e.length;for(n=0;n<i;++n)r+=String.fromCharCode(e[n]);return decodeURIComponent(escape(r))},i.callbackAdapter=function(t,n,e,r,i){"function"==typeof i?i(t,n):t?r(t):e(n)},t.exports.getUtilObject=function(t){return new function(){for(var n in i)i.hasOwnProperty(n)&&(this[n]=i[n]);this.debug=function(n){if(t.getConfig().debug){var n="flexio-sdk-js: "+n;console.log(n)}return this}}}},function(t,n,e){"use strict";t.exports={TASK_OP_CALC:"calc",TASK_OP_COMMENT:"comment",TASK_OP_CONVERT:"convert",TASK_OP_COPY:"copy",TASK_OP_CREATE:"create",TASK_OP_CUSTOM:"custom",TASK_OP_DISTINCT:"distinct",TASK_OP_DUMP:"dump",TASK_OP_DUPLICATE:"duplicate",TASK_OP_ECHO:"echo",TASK_OP_EMAIL_SEND:"email",TASK_OP_EXECUTE:"execute",TASK_OP_FIND_REPLACE:"replace",TASK_OP_FILTER:"filter",TASK_OP_FOREACH:"foreach",TASK_OP_GROUP:"group",TASK_OP_INSERT:"insert",TASK_OP_LIMIT:"limit",TASK_OP_LIST:"list",TASK_OP_MERGE:"merge",TASK_OP_MKDIR:"mkdir",TASK_OP_NOP:"nop",TASK_OP_PROMPT:"prompt",TASK_OP_R:"r",TASK_OP_READ:"read",TASK_OP_RENAME:"rename",TASK_OP_RENDER:"render",TASK_OP_REQUEST:"request",TASK_OP_SEARCH:"search",TASK_OP_SELECT:"select",TASK_OP_SEQUENCE:"sequence",TASK_OP_SET:"set",TASK_OP_SLEEP:"sleep",TASK_OP_SORT:"sort",TASK_OP_TRANSFORM:"transform",TASK_OP_WRITE:"write"}},function(t,n,e){"use strict";function r(t){return"[object Array]"===S.call(t)}function i(t){return"[object ArrayBuffer]"===S.call(t)}function o(t){return"undefined"!=typeof FormData&&t instanceof FormData}function u(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer}function a(t){return"string"==typeof t}function s(t){return"number"==typeof t}function c(t){return void 0===t}function f(t){return null!==t&&"object"==typeof t}function l(t){return"[object Date]"===S.call(t)}function p(t){return"[object File]"===S.call(t)}function h(t){return"[object Blob]"===S.call(t)}function d(t){return"[object Function]"===S.call(t)}function g(t){return f(t)&&d(t.pipe)}function v(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams}function _(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}function y(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function m(t,n){if(null!==t&&void 0!==t)if("object"==typeof t||r(t)||(t=[t]),r(t))for(var e=0,i=t.length;e<i;e++)n.call(null,t[e],e,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.call(null,t[o],o,t)}function b(){function t(t,e){"object"==typeof n[e]&&"object"==typeof t?n[e]=b(n[e],t):n[e]=t}for(var n={},e=0,r=arguments.length;e<r;e++)m(arguments[e],t);return n}function w(t,n,e){return m(n,function(n,r){t[r]=e&&"function"==typeof n?x(n,e):n}),t}var x=e(6),O=e(22),S=Object.prototype.toString;t.exports={isArray:r,isArrayBuffer:i,isBuffer:O,isFormData:o,isArrayBufferView:u,isString:a,isNumber:s,isObject:f,isUndefined:c,isDate:l,isFile:p,isBlob:h,isFunction:d,isStream:g,isURLSearchParams:v,isStandardBrowserEnv:y,forEach:m,merge:b,extend:w,trim:_}},function(t,n,e){"use strict";function r(t,n){!i.isUndefined(t)&&i.isUndefined(t["Content-Type"])&&(t["Content-Type"]=n)}var i=e(3),o=e(24),u={"Content-Type":"application/x-www-form-urlencoded"},a={adapter:function(){var t;return"undefined"!=typeof XMLHttpRequest?t=e(25):"undefined"!=typeof process&&(t=e(30)),t}(),transformRequest:[function(t,n){return o(n,"Content-Type"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(r(n,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):i.isObject(t)?(r(n,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};a.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(t){a.headers[t]={}}),i.forEach(["post","put","patch"],function(t){a.headers[t]=i.merge(u)}),t.exports=a},function(t,n,e){"use strict";var r=e(8);t.exports=function(t,n,e,i,o){var u=new Error(t);return r(u,n,e,i,o)}},function(t,n,e){"use strict";t.exports=function(t,n){return function(){for(var e=new Array(arguments.length),r=0;r<e.length;r++)e[r]=arguments[r];return t.apply(n,e)}}},function(t,n,e){"use strict";var r=e(5);t.exports=function(t,n,e){var i=e.config.validateStatus;e.status&&i&&!i(e.status)?n(r("Request failed with status code "+e.status,e.config,null,e.request,e)):t(e)}},function(t,n,e){"use strict";t.exports=function(t,n,e,r,i){return t.config=n,e&&(t.code=e),t.request=r,t.response=i,t}},function(t,n,e){"use strict";function r(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var i=e(3);t.exports=function(t,n,e){if(!n)return t;var o;if(e)o=e(n);else if(i.isURLSearchParams(n))o=n.toString();else{var u=[];i.forEach(n,function(t,n){null!==t&&void 0!==t&&(i.isArray(t)&&(n+="[]"),i.isArray(t)||(t=[t]),i.forEach(t,function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),u.push(r(n)+"="+r(t))}))}),o=u.join("&")}return o&&(t+=(-1===t.indexOf("?")?"?":"&")+o),t}},function(t,n){t.exports=require("http")},function(t,n){t.exports=require("https")},function(t,n,e){"use strict";function r(t,n){s.call(this),this._options=t,this._redirectCount=0,this._bufferedWrites=[],n&&this.on("response",n);var e=this;if(this._onNativeResponse=function(t){e._processResponse(t)},!t.pathname&&t.path){var r=t.path.indexOf("?");r<0?t.pathname=t.path:(t.pathname=t.path.substring(0,r),t.search=t.path.substring(r))}this._performRequest()}var i=e(13),o=e(31),u=e(10),a=e(11),s=e(32).Writable,c=e(33)("follow-redirects"),f={"http:":u,"https:":a},l={},n=t.exports={maxRedirects:21},p={GET:!0,HEAD:!0,OPTIONS:!0,TRACE:!0},h=Object.create(null);["abort","aborted","error","socket"].forEach(function(t){h[t]=function(n){this._redirectable.emit(t,n)}}),r.prototype=Object.create(s.prototype),r.prototype._performRequest=function(){var t=this._options.protocol;this._options.agents&&(this._options.agent=this._options.agents[l[t]]);var n=f[t],e=this._currentRequest=n.request(this._options,this._onNativeResponse);this._currentUrl=i.format(this._options),e._redirectable=this;for(var r in h)r&&e.on(r,h[r]);if(this._isRedirect){var o=this._bufferedWrites;if(0===o.length)e.end();else{var u=0;!function t(){if(u<o.length){var n=o[u++];e.write(n.data,n.encoding,t)}else e.end()}()}}},r.prototype._processResponse=function(t){var n=t.headers.location;if(n&&!1!==this._options.followRedirects&&t.statusCode>=300&&t.statusCode<400){if(++this._redirectCount>this._options.maxRedirects)return this.emit("error",new Error("Max redirects exceeded."));var e,r=this._options.headers;if(307!==t.statusCode&&!(this._options.method in p)){this._options.method="GET",this._bufferedWrites=[];for(e in r)/^content-/i.test(e)&&delete r[e]}if(!this._isRedirect)for(e in r)/^host$/i.test(e)&&delete r[e];var o=i.resolve(this._currentUrl,n);c("redirecting to",o),Object.assign(this._options,i.parse(o)),this._isRedirect=!0,this._performRequest()}else t.responseUrl=this._currentUrl,this.emit("response",t),delete this._options,delete this._bufferedWrites},r.prototype.abort=function(){this._currentRequest.abort()},r.prototype.flushHeaders=function(){this._currentRequest.flushHeaders()},r.prototype.setNoDelay=function(t){this._currentRequest.setNoDelay(t)},r.prototype.setSocketKeepAlive=function(t,n){this._currentRequest.setSocketKeepAlive(t,n)},r.prototype.setTimeout=function(t,n){this._currentRequest.setTimeout(t,n)},r.prototype.write=function(t,n,e){this._currentRequest.write(t,n,e),this._bufferedWrites.push({data:t,encoding:n})},r.prototype.end=function(t,n,e){this._currentRequest.end(t,n,e),t&&this._bufferedWrites.push({data:t,encoding:n})},Object.keys(f).forEach(function(t){var e=l[t]=t.substr(0,t.length-1),u=f[t],a=n[e]=Object.create(u);a.request=function(e,u){return"string"==typeof e?(e=i.parse(e),e.maxRedirects=n.maxRedirects):e=Object.assign({maxRedirects:n.maxRedirects,protocol:t},e),o.equal(e.protocol,t,"protocol mismatch"),c("options",e),new r(e,u)},a.get=function(t,n){var e=a.request(t,n);return e.end(),e}})},function(t,n){t.exports=require("url")},function(t,n,e){function r(t){var e,r=0;for(e in t)r=(r<<5)-r+t.charCodeAt(e),r|=0;return n.colors[Math.abs(r)%n.colors.length]}function i(t){function e(){if(e.enabled){var t=e,r=+new Date,i=r-(c||r);t.diff=i,t.prev=c,t.curr=r,c=r;for(var o=new Array(arguments.length),u=0;u<o.length;u++)o[u]=arguments[u];o[0]=n.coerce(o[0]),"string"!=typeof o[0]&&o.unshift("%O");var a=0;o[0]=o[0].replace(/%([a-zA-Z%])/g,function(e,r){if("%%"===e)return e;a++;var i=n.formatters[r];if("function"==typeof i){var u=o[a];e=i.call(t,u),o.splice(a,1),a--}return e}),n.formatArgs.call(t,o);(e.log||n.log||console.log.bind(console)).apply(t,o)}}return e.namespace=t,e.enabled=n.enabled(t),e.useColors=n.useColors(),e.color=r(t),"function"==typeof n.init&&n.init(e),e}function o(t){n.save(t),n.names=[],n.skips=[];for(var e=("string"==typeof t?t:"").split(/[\s,]+/),r=e.length,i=0;i<r;i++)e[i]&&(t=e[i].replace(/\*/g,".*?"),"-"===t[0]?n.skips.push(new RegExp("^"+t.substr(1)+"$")):n.names.push(new RegExp("^"+t+"$")))}function u(){n.enable("")}function a(t){var e,r;for(e=0,r=n.skips.length;e<r;e++)if(n.skips[e].test(t))return!1;for(e=0,r=n.names.length;e<r;e++)if(n.names[e].test(t))return!0;return!1}function s(t){return t instanceof Error?t.stack||t.message:t}n=t.exports=i.debug=i.default=i,n.coerce=s,n.disable=u,n.enable=o,n.enabled=a,n.humanize=e(35),n.names=[],n.skips=[],n.formatters={};var c},function(t,n,e){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,n,e){"use strict";function r(t){this.message=t}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,t.exports=r},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=e(18);n.default=r},function(t,n,e){"use strict";var r=e(0),i=e(20),o=e(50),u={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},a={version:e(75).version,_init:function(){this.connections=e(76).getConnectionsObject(this),this.pipes=e(77).getPipesObject(this),this.util=e(1).getUtilObject(this),this._http=null;var t=e(78).getPipeConstructor;this.pipe=t(this);var n=e(79).getConnectionConstructor;this.connection=n(this)},setup:function(t,n){return u=r.assign(u,{token:t},n),this._http=null,this._createHttp(),this},getConfig:function(){return r.assign({},u)},http:function(){return this._http||this._createHttp(),this._http},task:o,_createHttp:function(){var t={baseURL:u.baseUrl,headers:{Authorization:"Bearer "+u.token}};!0===u.insecure&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0"),this._http=i.create(t)}};a._init(),t.exports=a},function(t,n){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,n,e){t.exports=e(21)},function(t,n,e){"use strict";function r(t){var n=new u(t),e=o(u.prototype.request,n);return i.extend(e,u.prototype,n),i.extend(e,n),e}var i=e(3),o=e(6),u=e(23),a=e(4),s=r(a);s.Axios=u,s.create=function(t){return r(i.merge(a,t))},s.Cancel=e(16),s.CancelToken=e(48),s.isCancel=e(15),s.all=function(t){return Promise.all(t)},s.spread=e(49),t.exports=s,t.exports.default=s},function(t,n){function e(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function r(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&(e(t)||r(t)||!!t._isBuffer)}},function(t,n,e){"use strict";function r(t){this.defaults=t,this.interceptors={request:new u,response:new u}}var i=e(4),o=e(3),u=e(43),a=e(44),s=e(46),c=e(47);r.prototype.request=function(t){"string"==typeof t&&(t=o.merge({url:arguments[0]},arguments[1])),t=o.merge(i,this.defaults,{method:"get"},t),t.method=t.method.toLowerCase(),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url));var n=[a,void 0],e=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){n.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){n.push(t.fulfilled,t.rejected)});n.length;)e=e.then(n.shift(),n.shift());return e},o.forEach(["delete","get","head","options"],function(t){r.prototype[t]=function(n,e){return this.request(o.merge(e||{},{method:t,url:n}))}}),o.forEach(["post","put","patch"],function(t){r.prototype[t]=function(n,e,r){return this.request(o.merge(r||{},{method:t,url:n,data:e}))}}),t.exports=r},function(t,n,e){"use strict";var r=e(3);t.exports=function(t,n){r.forEach(t,function(e,r){r!==n&&r.toUpperCase()===n.toUpperCase()&&(t[n]=e,delete t[r])})}},function(t,n,e){"use strict";var r=e(3),i=e(7),o=e(9),u=e(26),a=e(27),s=e(5),c="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||e(28);t.exports=function(t){return new Promise(function(n,f){var l=t.data,p=t.headers;r.isFormData(l)&&delete p["Content-Type"];var h=new XMLHttpRequest,d="onreadystatechange",g=!1;if("test"===process.env.NODE_ENV||"undefined"==typeof window||!window.XDomainRequest||"withCredentials"in h||a(t.url)||(h=new window.XDomainRequest,d="onload",g=!0,h.onprogress=function(){},h.ontimeout=function(){}),t.auth){var v=t.auth.username||"",_=t.auth.password||"";p.Authorization="Basic "+c(v+":"+_)}if(h.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),h.timeout=t.timeout,h[d]=function(){if(h&&(4===h.readyState||g)&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))){var e="getAllResponseHeaders"in h?u(h.getAllResponseHeaders()):null,r=t.responseType&&"text"!==t.responseType?h.response:h.responseText,o={data:r,status:1223===h.status?204:h.status,statusText:1223===h.status?"No Content":h.statusText,headers:e,config:t,request:h};i(n,f,o),h=null}},h.onerror=function(){f(s("Network Error",t,null,h)),h=null},h.ontimeout=function(){f(s("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",h)),h=null},r.isStandardBrowserEnv()){var y=e(29),m=(t.withCredentials||a(t.url))&&t.xsrfCookieName?y.read(t.xsrfCookieName):void 0;m&&(p[t.xsrfHeaderName]=m)}if("setRequestHeader"in h&&r.forEach(p,function(t,n){void 0===l&&"content-type"===n.toLowerCase()?delete p[n]:h.setRequestHeader(n,t)}),t.withCredentials&&(h.withCredentials=!0),t.responseType)try{h.responseType=t.responseType}catch(n){if("json"!==t.responseType)throw n}"function"==typeof t.onDownloadProgress&&h.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&h.upload&&h.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then(function(t){h&&(h.abort(),f(t),h=null)}),void 0===l&&(l=null),h.send(l)})}},function(t,n,e){"use strict";var r=e(3);t.exports=function(t){var n,e,i,o={};return t?(r.forEach(t.split("\n"),function(t){i=t.indexOf(":"),n=r.trim(t.substr(0,i)).toLowerCase(),e=r.trim(t.substr(i+1)),n&&(o[n]=o[n]?o[n]+", "+e:e)}),o):o}},function(t,n,e){"use strict";var r=e(3);t.exports=r.isStandardBrowserEnv()?function(){function t(t){var n=t;return e&&(i.setAttribute("href",n),n=i.href),i.setAttribute("href",n),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var n,e=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return n=t(window.location.href),function(e){var i=r.isString(e)?t(e):e;return i.protocol===n.protocol&&i.host===n.host}}():function(){return function(){return!0}}()},function(t,n,e){"use strict";function r(){this.message="String contains an invalid character"}function i(t){for(var n,e,i=String(t),u="",a=0,s=o;i.charAt(0|a)||(s="=",a%1);u+=s.charAt(63&n>>8-a%1*8)){if((e=i.charCodeAt(a+=.75))>255)throw new r;n=n<<8|e}return u}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",t.exports=i},function(t,n,e){"use strict";var r=e(3);t.exports=r.isStandardBrowserEnv()?function(){return{write:function(t,n,e,i,o,u){var a=[];a.push(t+"="+encodeURIComponent(n)),r.isNumber(e)&&a.push("expires="+new Date(e).toGMTString()),r.isString(i)&&a.push("path="+i),r.isString(o)&&a.push("domain="+o),!0===u&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var n=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(t,n,e){"use strict";var r=e(3),i=e(7),o=e(9),u=e(10),a=e(11),s=e(12).http,c=e(12).https,f=e(13),l=e(41),p=e(42),h=e(5),d=e(8);t.exports=function(t){return new Promise(function(n,e){var g,v=t.data,_=t.headers,y=!1;if(_["User-Agent"]||_["user-agent"]||(_["User-Agent"]="axios/"+p.version),v&&!r.isStream(v)){if(Buffer.isBuffer(v));else if(r.isArrayBuffer(v))v=new Buffer(new Uint8Array(v));else{if(!r.isString(v))return e(h("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",t));v=new Buffer(v,"utf-8")}_["Content-Length"]=v.length}var m=void 0;if(t.auth){m=(t.auth.username||"")+":"+(t.auth.password||"")}var b=f.parse(t.url),w=b.protocol||"http:";if(!m&&b.auth){var x=b.auth.split(":");m=(x[0]||"")+":"+(x[1]||"")}m&&delete _.Authorization;var O="https:"===w,S=O?t.httpsAgent:t.httpAgent,A={hostname:b.hostname,port:b.port,path:o(b.path,t.params,t.paramsSerializer).replace(/^\?/,""),method:t.method,headers:_,agent:S,auth:m},T=t.proxy;if(!T){var E=w.slice(0,-1)+"_proxy",C=process.env[E]||process.env[E.toUpperCase()];if(C){var P=f.parse(C);if(T={host:P.hostname,port:P.port},P.auth){var j=P.auth.split(":");T.auth={username:j[0],password:j[1]}}}}if(T&&(A.hostname=T.host,A.host=T.host,A.headers.host=b.hostname+(b.port?":"+b.port:""),A.port=T.port,A.path=w+"//"+b.hostname+(b.port?":"+b.port:"")+A.path,T.auth)){var k=new Buffer(T.auth.username+":"+T.auth.password,"utf8").toString("base64");A.headers["Proxy-Authorization"]="Basic "+k}var R;0===t.maxRedirects?R=O?a:u:(t.maxRedirects&&(A.maxRedirects=t.maxRedirects),R=O?c:s);var N=R.request(A,function(r){if(!y){clearTimeout(g),g=null;var o=r;switch(r.headers["content-encoding"]){case"gzip":case"compress":case"deflate":o=o.pipe(l.createUnzip()),delete r.headers["content-encoding"]}var u=r.req||N,a={status:r.statusCode,statusText:r.statusMessage,headers:r.headers,config:t,request:u};if("stream"===t.responseType)a.data=o,i(n,e,a);else{var s=[];o.on("data",function(n){s.push(n),t.maxContentLength>-1&&Buffer.concat(s).length>t.maxContentLength&&e(h("maxContentLength size of "+t.maxContentLength+" exceeded",t,null,u))}),o.on("error",function(n){y||e(d(n,t,null,u))}),o.on("end",function(){var r=Buffer.concat(s);"arraybuffer"!==t.responseType&&(r=r.toString("utf8")),a.data=r,i(n,e,a)})}}});N.on("error",function(n){y||e(d(n,t,null,N))}),t.timeout&&!g&&(g=setTimeout(function(){N.abort(),e(h("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",N)),y=!0},t.timeout)),t.cancelToken&&t.cancelToken.promise.then(function(t){y||(N.abort(),e(t),y=!0)}),r.isStream(v)?v.pipe(N):N.end(v)})}},function(t,n){t.exports=require("assert")},function(t,n){t.exports=require("stream")},function(t,n,e){"undefined"!=typeof process&&"renderer"===process.type?t.exports=e(34):t.exports=e(36)},function(t,n,e){function r(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(t){var e=this.useColors;if(t[0]=(e?"%c":"")+this.namespace+(e?" %c":" ")+t[0]+(e?"%c ":" ")+"+"+n.humanize(this.diff),e){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var i=0,o=0;t[0].replace(/%[a-zA-Z%]/g,function(t){"%%"!==t&&(i++,"%c"===t&&(o=i))}),t.splice(o,0,r)}}function o(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function u(t){try{null==t?n.storage.removeItem("debug"):n.storage.debug=t}catch(t){}}function a(){var t;try{t=n.storage.debug}catch(t){}return!t&&"undefined"!=typeof process&&"env"in process&&(t=process.env.DEBUG),t}n=t.exports=e(14),n.log=o,n.formatArgs=i,n.save=u,n.load=a,n.useColors=r,n.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(t){}}(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},n.enable(a())},function(t,n){function e(t){if(t=String(t),!(t.length>100)){var n=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(n){var e=parseFloat(n[1]);switch((n[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return e*f;case"days":case"day":case"d":return e*c;case"hours":case"hour":case"hrs":case"hr":case"h":return e*s;case"minutes":case"minute":case"mins":case"min":case"m":return e*a;case"seconds":case"second":case"secs":case"sec":case"s":return e*u;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function r(t){return t>=c?Math.round(t/c)+"d":t>=s?Math.round(t/s)+"h":t>=a?Math.round(t/a)+"m":t>=u?Math.round(t/u)+"s":t+"ms"}function i(t){return o(t,c,"day")||o(t,s,"hour")||o(t,a,"minute")||o(t,u,"second")||t+" ms"}function o(t,n,e){if(!(t<n))return t<1.5*n?Math.floor(t/n)+" "+e:Math.ceil(t/n)+" "+e+"s"}var u=1e3,a=60*u,s=60*a,c=24*s,f=365.25*c;t.exports=function(t,n){n=n||{};var o=typeof t;if("string"===o&&t.length>0)return e(t);if("number"===o&&!1===isNaN(t))return n.long?i(t):r(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}},function(t,n,e){function r(){return"colors"in n.inspectOpts?Boolean(n.inspectOpts.colors):c.isatty(l)}function i(t){var e=this.namespace;if(this.useColors){var r=this.color,i=" [3"+r+";1m"+e+" [0m";t[0]=i+t[0].split("\n").join("\n"+i),t.push("[3"+r+"m+"+n.humanize(this.diff)+"[0m")}else t[0]=(new Date).toUTCString()+" "+e+" "+t[0]}function o(){return p.write(f.format.apply(f,arguments)+"\n")}function u(t){null==t?delete process.env.DEBUG:process.env.DEBUG=t}function a(){return process.env.DEBUG}function s(t){t.inspectOpts={};for(var e=Object.keys(n.inspectOpts),r=0;r<e.length;r++)t.inspectOpts[e[r]]=n.inspectOpts[e[r]]}var c=e(37),f=e(38);n=t.exports=e(14),n.init=s,n.log=o,n.formatArgs=i,n.save=u,n.load=a,n.useColors=r,n.colors=[6,2,3,4,5,1],n.inspectOpts=Object.keys(process.env).filter(function(t){return/^debug_/i.test(t)}).reduce(function(t,n){var e=n.substring(6).toLowerCase().replace(/_([a-z])/g,function(t,n){return n.toUpperCase()}),r=process.env[n];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),t[e]=r,t},{});var l=parseInt(process.env.DEBUG_FD,10)||2;1!==l&&2!==l&&f.deprecate(function(){},"except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")();var p=1===l?process.stdout:2===l?process.stderr:function(t){var n;switch(process.binding("tty_wrap").guessHandleType(t)){case"TTY":n=new c.WriteStream(t),n._type="tty",n._handle&&n._handle.unref&&n._handle.unref();break;case"FILE":n=new(e(39).SyncWriteStream)(t,{autoClose:!1}),n._type="fs";break;case"PIPE":case"TCP":n=new(e(40).Socket)({fd:t,readable:!1,writable:!0}),n.readable=!1,n.read=null,n._type="pipe",n._handle&&n._handle.unref&&n._handle.unref();break;default:throw new Error("Implement me. Unknown stream file type!")}return n.fd=t,n._isStdio=!0,n}(l);n.formatters.o=function(t){return this.inspectOpts.colors=this.useColors,f.inspect(t,this.inspectOpts).split("\n").map(function(t){return t.trim()}).join(" ")},n.formatters.O=function(t){return this.inspectOpts.colors=this.useColors,f.inspect(t,this.inspectOpts)},n.enable(a())},function(t,n){t.exports=require("tty")},function(t,n){t.exports=require("util")},function(t,n){t.exports=require("fs")},function(t,n){t.exports=require("net")},function(t,n){t.exports=require("zlib")},function(t,n){t.exports={_args:[["axios@0.16.2","C:\\src\\flexio-sdk-js"]],_from:"axios@0.16.2",_id:"axios@0.16.2",_inBundle:!1,_integrity:"sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=",_location:"/axios",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"axios@0.16.2",name:"axios",escapedName:"axios",rawSpec:"0.16.2",saveSpec:null,fetchSpec:"0.16.2"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/axios/-/axios-0.16.2.tgz",_spec:"0.16.2",_where:"C:\\src\\flexio-sdk-js",author:{name:"Matt Zabriskie"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},bugs:{url:"https://github.com/mzabriskie/axios/issues"},dependencies:{"follow-redirects":"^1.2.3","is-buffer":"^1.1.5"},description:"Promise based HTTP client for the browser and node.js",devDependencies:{coveralls:"^2.11.9","es6-promise":"^4.0.5",grunt:"^1.0.1","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-nodeunit":"^1.0.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^19.0.0","grunt-karma":"^2.0.0","grunt-ts":"^6.0.0-beta.3","grunt-webpack":"^1.0.18","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^1.3.0","karma-chrome-launcher":"^2.0.0","karma-coverage":"^1.0.0","karma-firefox-launcher":"^1.0.0","karma-jasmine":"^1.0.2","karma-jasmine-ajax":"^0.1.13","karma-opera-launcher":"^1.0.0","karma-phantomjs-launcher":"^1.0.0","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^1.1.0","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^1.7.0","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0","phantomjs-prebuilt":"^2.1.7",sinon:"^1.17.4",typescript:"^2.0.3","url-search-params":"^0.6.1",webpack:"^1.13.1","webpack-dev-server":"^1.14.1"},homepage:"https://github.com/mzabriskie/axios",keywords:["xhr","http","ajax","promise","node"],license:"MIT",main:"index.js",name:"axios",repository:{type:"git",url:"git+https://github.com/mzabriskie/axios.git"},scripts:{build:"NODE_ENV=production grunt build",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",examples:"node ./examples/server.js",postversion:"git push && git push --tags",preversion:"npm test",start:"node ./sandbox/server.js",test:"grunt test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json"},typings:"./index.d.ts",version:"0.16.2"}},function(t,n,e){"use strict";function r(){this.handlers=[]}var i=e(3);r.prototype.use=function(t,n){return this.handlers.push({fulfilled:t,rejected:n}),this.handlers.length-1},r.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},r.prototype.forEach=function(t){i.forEach(this.handlers,function(n){null!==n&&t(n)})},t.exports=r},function(t,n,e){"use strict";function r(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var i=e(3),o=e(45),u=e(15),a=e(4);t.exports=function(t){return r(t),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(n){delete t.headers[n]}),(t.adapter||a.adapter)(t).then(function(n){return r(t),n.data=o(n.data,n.headers,t.transformResponse),n},function(n){return u(n)||(r(t),n&&n.response&&(n.response.data=o(n.response.data,n.response.headers,t.transformResponse))),Promise.reject(n)})}},function(t,n,e){"use strict";var r=e(3);t.exports=function(t,n,e){return r.forEach(e,function(e){t=e(t,n)}),t}},function(t,n,e){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,n,e){"use strict";t.exports=function(t,n){return n?t.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):t}},function(t,n,e){"use strict";function r(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(t){n=t});var e=this;t(function(t){e.reason||(e.reason=new i(t),n(e.reason))})}var i=e(16);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var t;return{token:new r(function(n){t=n}),cancel:t}},t.exports=r},function(t,n,e){"use strict";t.exports=function(t){return function(n){return t.apply(null,n)}}},function(t,n,e){"use strict";var r=e(0),i=e(2),o=e(51),u=e(52),a=e(53),s=e(54),c=e(55),f=e(56),l=e(57),p=e(58),h=e(59),d=e(60),g=e(61),v=e(62),_=e(63),y=e(64),m=e(65),b=e(66),w=e(67),x=e(68),O=e(69),S=e(70),A=e(71),T=e(72),E=e(73),C=e(74),P=function(t,n){switch(r.get(t,"op","")){default:return T.toCode(t);case i.TASK_OP_CREATE:return o.toCode(t,n);case i.TASK_OP_CONVERT:return u.toCode(t,n);case i.TASK_OP_COPY:return a.toCode(t,n);case i.TASK_OP_DUMP:return s.toCode(t,n);case i.TASK_OP_ECHO:return c.toCode(t,n);case i.TASK_OP_EMAIL_SEND:return f.toCode(t,n);case i.TASK_OP_EXECUTE:return l.toCode(t,n);case i.TASK_OP_FILTER:return p.toCode(t,n);case i.TASK_OP_FOREACH:return h.toCode(t,n);case i.TASK_OP_INSERT:return d.toCode(t,n);case i.TASK_OP_LIMIT:return g.toCode(t,n);case i.TASK_OP_LIST:return y.toCode(t,n);case i.TASK_OP_MERGE:return v.toCode(t,n);case i.TASK_OP_MKDIR:return _.toCode(t,n);case i.TASK_OP_READ:return m.toCode(t,n);case i.TASK_OP_RENDER:return b.toCode(t,n);case i.TASK_OP_REQUEST:return w.toCode(t,n);case i.TASK_OP_SELECT:return x.toCode(t,n);case i.TASK_OP_SEQUENCE:return O.toCode(t,n);case i.TASK_OP_SET:return S.toCode(t,n);case i.TASK_OP_SLEEP:return A.toCode(t,n);case i.TASK_OP_TRANSFORM:return E.toCode(t,n);case i.TASK_OP_WRITE:return C.toCode(t,n)}};t.exports={create:o,convert:u,copy:a,dump:s,echo:c,email:f,execute:l.execute,insert:d,filter:p,foreach:h,javascript:l.javascript,limit:g,list:y,merge:v,mkdir:_,python:l.python,read:m,render:b,request:w,select:x,sequence:O,set:S,sleep:A,task:T,transform:E,write:C,toCode:P}},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t,n){if(Array.isArray(t))return{op:i.TASK_OP_CREATE,params:{content_type:"application/vnd.flexio.table",columns:t}};var e={op:i.TASK_OP_CREATE,params:{path:t}};return void 0!==n&&(Array.isArray(n)?e.params.columns=n:e.params.content_type=n),e};o.toCode=function(t,n){var e=r.get(t,"params",{}),i=JSON.stringify(e.path)||void 0,o=JSON.stringify(e.content_type)||void 0,u=JSON.stringify(e.columns)||void 0;return void 0!==i?void 0!==u?"create("+i+", "+u+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==u?"create("+u+")":void 0!==o?"":void 0},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o={format:"delimited",delimiter:"{comma}",header:!0,qualifier:"{double-quote}"},u={format:"delimited",delimiter:"{tab}",header:!0,qualifier:"{none}"},a=function(t,n){var e={op:i.TASK_OP_CONVERT,params:{}};return r.isString(t)?"csv"==t?r.set(e,"params.input",o):"tsv"==t?r.set(e,"params.input",u):r.set(e,"params.input.format",t):r.isPlainObject(t)&&r.set(e,"params.input",t),r.isString(n)?"csv"==n?r.set(e,"params.output",o):"tsv"==n?r.set(e,"params.output",u):r.set(e,"params.output.format",n):r.isPlainObject(n)&&r.set(e,"params.output",n),e};a.toCode=function(t,n){var e,i,a=r.get(t,"params",{}),s=r.get(a,"input",{}),c=r.get(a,"output",{});return r.isEqual(s,o)&&(e="csv"),r.isEqual(c,o)&&(i="csv"),r.isEqual(s,u)&&(e="tsv"),r.isEqual(c,u)&&(i="tsv"),r.isEmpty(r.omit(s,["format"]))&&(e=r.get(s,"format","")),r.isEmpty(r.omit(c,["format"]))&&(i=r.get(c,"format","")),e||(e=s),i||(i=c),"convert("+JSON.stringify(e)+", "+JSON.stringify(i)+")"},t.exports=a},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t,n,e){var o={op:i.TASK_OP_COPY,params:{from:t,to:n}};return r.isPlainObject(e)&&(o.params.options=e),o};o.toCode=function(t,n){var e=r.get(t,"params",{}),i=JSON.stringify(e.from)||'""',o=JSON.stringify(e.to)||'""',u=e.hasOwnProperty("options")&&r.isPlainObject(e.options)?JSON.stringify(e.options):null,a="copy("+i+", "+o;return null!==u&&(a+=", "+u),a+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_DUMP,params:{msg:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"dump("+(JSON.stringify(e.msg)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_ECHO,params:{msg:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"echo("+(JSON.stringify(e.msg)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){if(!r.isPlainObject(t))throw"The first function parameter must be an object";if(!r.has(t,"to"))throw"The `to` parameter is required";if(!r.has(t,"body_text"))throw"The `body_text` parameter is required";return{op:i.TASK_OP_EMAIL_SEND,params:t}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"email("+JSON.stringify(e,null,2)+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(){return"undefined"!=typeof process},u=function(t){try{return o()?Buffer(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},a=function(t){try{return o()?Buffer.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},s=function(t){var n;try{n=t.toString(),n=n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))}catch(t){n=""}return n},c=function(t){if(r.isString(t))return t;if(r.isFunction(t)){var n;if(0==t.length)return"exports.flexio_handler = function(context) "+(n=s(t));if(n=t.toString(),"function"==n.substring(0,8))n=n.slice(8);else{var e=n.indexOf("=>"),i=n.indexOf("{");e>=0&&e<i&&(n=n.replace("=>s*{","{"))}return"exports.flexio_handler = function"+n}},f=function(){var t,n,e,o=Array.from(arguments),a=r.get(o,"[0]",null),s=r.get(o,"[1]",null),f=r.get(o,"[2]",null),l={op:i.TASK_OP_EXECUTE,params:{}};"python"==a||"javascript"==a?(t=a,n=s,null!==n&&void 0!==n||(n=""),e=f):(t="javascript",n=a,e=s),"javascript"==t&&(n=c(n)),r.set(l,"params.lang",t);var p=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return n.match(p)?r.set(l,"params.path",n):r.set(l,"params.code",u(n)),null!==e&&r.set(l,"params.integrity",e),l},l=function(){var t=Array.from(arguments);return t.unshift("javascript"),f.apply(this,t)},p=function(){var t=Array.from(arguments);return t.unshift("python"),f.apply(this,t)},h=function(t){var n=r.get(t,"params",{}),e=n.lang||"",i=a(n.code||"");switch(e){case"javascript":return i=i.replace("exports.flexio_handler =",""),"javascript("+i.trim()+")";case"python":return"python(`\n"+i+"\n`)";default:return"execute("+JSON.stringify(e)+", `\n"+i+"\n`)"}};t.exports={execute:f,javascript:l,python:p,toCode:h}},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){if(r.isNil(t))throw"The `filter` parameter is required";return{op:i.TASK_OP_FILTER,params:{where:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"filter("+(JSON.stringify(e.where)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=e(1),o=e(2),u=function(t,n){var e={op:o.TASK_OP_FOREACH,params:{}};return("string"==typeof t||t instanceof String)&&(e.params.spec=t),i.isPipeObject(t)?e.params.run=t.pipe.task:i.isPipeObject(n)&&(e.params.run=n.pipe.task),e};u.toCode=function(t,n){var e=r.get(t,"params",{}),i=[];return e.hasOwnProperty("spec")&&i.push(JSON.stringify(e.spec)),e.hasOwnProperty("run")&&i.push(n.task.toCode(e.run,n)),"foreach("+i.join(", ")+")"},t.exports=u},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t,n){var e;return e=Array.isArray(n)?n:[n],{op:i.TASK_OP_INSERT,params:{path:t,values:e}}};o.toCode=function(t,n){var e=r.get(t,"params",{}),i=r.get(e,"path",void 0),o=r.get(e,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return t=r.defaultTo(t,10),{op:i.TASK_OP_LIMIT,params:{value:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"limit("+(JSON.stringify(e.value)||"")+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){if(Array.isArray(t))var n=t;else for(var n=[],e=0;e<arguments.length;++e)n.push(arguments[e]);return{op:i.TASK_OP_MERGE,params:{files:n}}};o.toCode=function(t,n){for(var e=r.get(t,"params",{}),i=r.get(e,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=n.merge.toCode(i[o],n);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_MKDIR,params:{path:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"mkdir("+(JSON.stringify(e.path)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_LIST,params:{path:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"list("+(JSON.stringify(e.path)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_READ,params:{path:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"read("+(JSON.stringify(e.path)||'""')+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o={format:"png",width:800,height:600,scrollbars:!1},u=function(t,n){var e=Array.from(arguments),t=r.get(e,"[0]",""),u=r.get(e,"[1]",{});if(r.isNil(t))throw"The `url` parameter is required";if(r.isPlainObject(r.get(e,"[0]",{})))var u=r.get(e,"[0]",{});else var u=r.assign({},o,n,{url:t});return{op:i.TASK_OP_RENDER,params:u}};u.toCode=function(t,n){var e=r.get(t,"params",{}),i=JSON.stringify(e.url)||"",u=r.omit(e,["url"]);return r.isEqual(u,o)?"render("+i+")":"render("+i+", "+JSON.stringify(u,null,2)+")"},t.exports=u},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(){var t=Array.from(arguments),n=r.get(t,"[0]",""),e=r.get(t,"[1]",{});return e=r.isPlainObject(r.get(t,"[0]",{}))?r.get(t,"[0]",{}):r.assign({},{url:n},e),e=r.assign({method:"GET"},e),{op:i.TASK_OP_REQUEST,params:e}};o.toCode=function(t,n){var e=r.get(t,"params",{}),i=r.get(e,"url",""),o=r.omit(e,["url"]);return"GET"==r.get(o,"method","")&&(o=r.omit(o,["method"])),r.isEmpty(o)?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(i)+", "+JSON.stringify(o,null,2)+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(){var t=Array.from(arguments);return 1==t.length&&r.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[])),{op:i.TASK_OP_SELECT,params:{columns:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{}),i=JSON.stringify(e.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_SEQUENCE,params:{steps:t}}};o.toCode=function(t,n){var e=r.map(t.params.items,function(t){var e=n.task.toCode(t,n);return"python"!=r.get(t,"params.lang","")&&(e=e.replace(/\n/g,"\n ")),e}),e=["Flexio.pipe()"].concat(e);return e.join("\n .")},t.exports=o},function(t,n,e){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=e(0),o=e(1),u=e(2),a=function(t,n){return o.isPipeObject(n)&&(n=n.pipe.task),{op:u.TASK_OP_SET,params:{var:t,value:n}}};a.toCode=function(t,n){var e=i.get(t,"params",{}),o=i.get(e,"variable",""),u=i.get(e,"value","");return o=JSON.stringify(o),u="object"===(void 0===u?"undefined":r(u))&&null!==u&&u.hasOwnProperty("op")?n.task.toCode(u,n):JSON.stringify(u),"set("+o+", "+u+")"},t.exports=a},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return t=r.defaultTo(t,10),{op:i.TASK_OP_SLEEP,params:{value:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"sleep("+(JSON.stringify(e.value)||"")+")"},t.exports=o},function(t,n,e){"use strict";var r=(e(0),e(1),function(t){return t});r.toCode=function(t,n){return"task("+JSON.stringify(t,null,2)+")"},t.exports=r},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){var n=Array.from(arguments),e={operations:[]},o={},u=[],a=r.get(n,"[0]");return r.isPlainObject(a)?(1==n.length&&r.has(a,"operations")?(o=r.pick(a,["columns","operations"]),o=r.assign(e,o)):(u=[].concat(n),o={operations:u}),{op:i.TASK_OP_TRANSFORM,params:o}):{op:i.TASK_OP_TRANSFORM,params:{columns:void 0,operations:u}}};o.toCode=function(t,n){var e=t.hasOwnProperty("params")?t.params:{};return!e.hasOwnProperty("columns")&&e.hasOwnProperty("operations")&&Array.isArray(e.operations)&&1==e.operations.length?"transform("+JSON.stringify(e.operations[0])+")":"transform("+JSON.stringify(e)+")"},t.exports=o},function(t,n,e){"use strict";var r=e(0),i=(e(1),e(2)),o=function(t){return{op:i.TASK_OP_WRITE,params:{path:t}}};o.toCode=function(t,n){var e=r.get(t,"params",{});return"write("+(JSON.stringify(e.path)||'""')+")"},t.exports=o},function(t,n){t.exports={name:"flexio-sdk-js",version:"1.20.2",description:"Javascript SDK for managing Flex.io resources and services",author:"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js",main:"src/main.js","--browser":"src/main.js",browser:"dist/flexio.min.js",scripts:{dev:"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js",build:"npm run build:debug && npm run build:release && npm run build:examples",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"git+https://github.com/flexiodata/flexio-sdk-js.git"},keywords:[],license:"Apache-2.0",bugs:{url:"https://github.com/flexiodata/flexio-sdk-js/issues"},homepage:"https://github.com/flexiodata/flexio-sdk-js/",dependencies:{axios:"^0.16.2",lodash:"^4.17.4","vue-highlightjs":"^1.3.3"},devDependencies:{autoprefixer:"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-lodash":"^3.2.11","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0",vue:"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4",webpack:"^3.5.5","webpack-dev-server":"^2.8.2"}}},function(t,n,e){"use strict";var r=e(0);e(1);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(n,e){var i;if(r.isPlainObject(n))i=n;else{if(!(n instanceof t.connection))throw"Unknown connection object type";i=n.connection}return new Promise(function(n,r){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,n,r,e)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,n,r,e)})})},this.list=function(n){var e=Array.from(arguments),n=r.get(e,"[0]");return new Promise(function(e,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var u=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,u,e,i,n)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,e,i,n)})})}}}},function(t,n,e){"use strict";var r=e(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(n,e){var i;if(r.isPlainObject(n))i=n;else{if(!(n instanceof t.pipe))throw"Unknown pipe object type";i=n.pipe}return new Promise(function(n,r){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,n,r,e)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,n,r,e)})})},this.list=function(n){var e=Array.from(arguments),n=r.get(e,"[0]");return new Promise(function(e,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var u=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,u,e,i,n)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,e,i,n)})})},this.run=function(){var n=Array.from(arguments);n.push(null,null,null);var e,i,o={},u=null;n[0]instanceof t.pipe?(i=r.get(n[0],"pipe.eid",""),u=r.get(n[0],"pipe.task","")):Array.isArray(n[0])?(i="",u=n[0]):i=n[0],r.isPlainObject(n[1])&&(o=n[1]),e=r.isFunction(n[1])?n[1]:r.isFunction(n[2])?n[2]:null;var a=function(n,e){return{contentType:e,buffer:n,get blob(){return new Blob([this.buffer],{type:e})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(n,s){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var c={name:"SDK Pipe",description:"SDK Pipe",task:u,process_mode:"R"};t.http().post("/processes",c).then(function(i){var u=r.get(i,"data",{}),c=r.get(u,"eid","");t.util.debug("Created Process.");var f={method:"post",url:"/processes/"+c+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),t.http()(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),u=a(i.data,o);t.util.callbackAdapter(null,u,n,s,e)}).catch(function(r){t.util.debug("Process Run Failed. "+r),t.util.callbackAdapter(r,null,n,s,e)})}).catch(function(r){t.util.debug("Process Create Failed. "+r),t.util.callbackAdapter(r,null,n,s,e)})}else{var f={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),o.hasOwnProperty("contentType")?f.headers={"Content-Type":o.contentType}:f.hasOwnProperty("data")&&(r.isPlainObject(f.data)||(r.isString(f.data)?f.headers={"Content-Type":"text/plain"}:f.headers={"Content-Type":"application/octet-stream"}));t.http()(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),u=a(i.data,o);t.util.callbackAdapter(null,u,n,s,e)}).catch(function(r){t.util.debug("Pipe Run Call Failed. "+r),t.util.callbackAdapter(r,null,n,s,e)})}})}}}},function(t,n,e){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=e(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(n){if(!(this instanceof t.pipe))return new t.pipe(n);var e=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var n=this,e=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),u=i.get(r,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.load.apply(n,e)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(e){var r=i.get(e,"data",{});n.pipe=i.assign({},r),n.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof u&&u.call(n,null,r)}).catch(function(e){n.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof u&&u.call(n,e,null)}),this)},save:function(){var n=this,e=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),u=i.get(r,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.save.apply(n,e)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),u=i.get(r,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(e){var r=i.get(e,"data",{});n.pipe=i.assign({},r),n.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof u&&u.call(n,null,n.pipe)}).catch(function(e){n.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof u&&u.call(n,e,null)}),this)},run:function(){var n=Array.from(arguments);return n.unshift(this),t.pipes.run.apply(null,n)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},clearParams:function(t){return i.isArray(t)?this._params=i.omit(this._params,t):i.isNil(t)&&(this._params={}),this},getParams:function(){return i.assign({},this._params)},toCode:function(n){return t.task.toCode(this.pipe.task,t)}});return i.each(t.task,function(t,n){"toCode"!=n&&(e[n]=function(){return e.addTask(t.apply(e,arguments))})}),void 0!==n&&("string"==typeof n||n instanceof String?e.pipe.eid=n:"object"===(void 0===n?"undefined":r(n))&&(n.hasOwnProperty("pipe")?e.pipe=JSON.parse(JSON.stringify(n.pipe)):n.hasOwnProperty("task")?e.pipe=JSON.parse(JSON.stringify(n)):n.hasOwnProperty("op")&&(e.pipe.task=n))),e}}},function(t,n,e){"use strict";var r=e(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?r.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return r.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)&&r.includes(i,n)?this._setInfo("method",n):this},url:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("url",n):this},auth:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)&&r.includes(o,n)?("none"==n&&(n=""),this._setInfo("auth",n)):this},username:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("username",n):this},password:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("password",n):this},token:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("token",n):this},accessToken:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("access_token",n):this},refreshToken:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isString(n)?this._setInfo("refresh_token",n):this},expires:function(){var t=Array.from(arguments),n=r.get(t,"[0]");return r.isNumber(n)&&(n=""+n),r.isString(n)?this._setInfo("expires",n):this},data:function(){var t=Array.from(arguments),n=r.get(t,"[0]");if(!r.isPlainObject(n))return this;var e=this._getInfo("data",{});return n=r.assign({},e,n),this._setInfo("data",n)},clearData:function(){var t=Array.from(arguments);if(0==t.length)return this._setInfo("data",{});1==t.length&&r.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[]));var n=this._getInfo("data",{}),e=r.omit(n,t);return this._setInfo("data",e)},headers:function(){var t=Array.from(arguments),n=r.get(t,"[0]");if(!r.isPlainObject(n))return this;var e=this._getInfo("headers",{});return n=r.assign({},e,n),this._setInfo("headers",n)},clearHeaders:function(){var t=Array.from(arguments);if(0==t.length)return this._setInfo("headers",{});1==t.length&&r.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[]));var n=this._getInfo("headers",{}),e=r.omit(n,t);return this._setInfo("headers",e)},load:function(){var n=this,e=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),u=r.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.load.apply(n,e)},50),this):r.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(e){var i=r.get(e,"data",{});n.connection=r.assign({},i),n.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof u&&u.call(n,null,i)}).catch(function(e){n.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof u&&u.call(n,e,null)}),this)},save:function(){var n=this,e=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),u=r.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.save.apply(n,e)},50),this):(r.isPlainObject(o)&&(r.assign(this.connection,r.pick(o,["name","description","ename"])),u=r.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+r.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(e){var i=r.get(e,"data",{});n.connection=r.assign({},i),n.saving=!1,t.util.debug("Connection Saved."),"function"==typeof u&&u.call(n,null,n.connection)}).catch(function(e){n.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof u&&u.call(n,e,null)}),this)},_getInfo:function(t,n){return r.get(this.connection,"connection_info."+t,n)},_setInfo:function(t,n){return r.set(this.connection,"connection_info."+t,n),this}}):new t.connection}}}]).default}); \ No newline at end of file diff --git a/dist/orig/flexio.js b/dist/orig/flexio.js new file mode 100644 index 0000000..9ef0af1 --- /dev/null +++ b/dist/orig/flexio.js @@ -0,0 +1,23097 @@ +/*! + * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * (c) 2018 Gold Prairie LLC + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Flexio"] = factory(); + else + root["Flexio"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 12); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** + * @license + * Lodash <https://lodash.com/> + * Copyright JS Foundation and other contributors <https://js.foundation/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '4.17.4'; + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** Error message constants. */ + var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', + FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** Used to compose bitmasks for function metadata. */ + var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + + /** Used as default options for `_.truncate`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2, + LAZY_WHILE_FLAG = 3; + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used to associate wrap methods with their bit flags. */ + var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] + ]; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + domExcTag = '[object DOMException]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + nullTag = '[object Null]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', + weakMapTag = '[object WeakMap]', + weakSetTag = '[object WeakSet]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reUnescapedHtml = /[&<>"']/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g, + reTrimStart = /^\s+/, + reTrimEnd = /\s+$/; + + /** Used to match wrap detail comments. */ + var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, + reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + + /** Used to match words composed of alphanumeric characters. */ + var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** Used to match Latin Unicode letters (excluding mathematical operators). */ + var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + + /** Used to compose unicode capture groups. */ + var rsApos = "['\u2019]", + rsAstral = '[' + rsAstralRange + ']', + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)', + rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match apostrophes. */ + var reApos = RegExp(rsApos, 'g'); + + /** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ + var reComboMark = RegExp(rsCombo, 'g'); + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** Used to match complex or compound words. */ + var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji + ].join('|'), 'g'); + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** Used to detect strings that need a more robust regexp to match words. */ + var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', + 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** Used to map Latin Unicode letters to basic Latin letters. */ + var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Built-in method references without a dependency on `root`. */ + var freeParseFloat = parseFloat, + freeParseInt = parseInt; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); + + /** Detect free variable `exports`. */ + var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; + + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); + + /* Node.js helper references. */ + var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, + nodeIsDate = nodeUtil && nodeUtil.isDate, + nodeIsMap = nodeUtil && nodeUtil.isMap, + nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, + nodeIsSet = nodeUtil && nodeUtil.isSet, + nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /*--------------------------------------------------------------------------*/ + + /** + * Adds the key-value `pair` to `map`. + * + * @private + * @param {Object} map The map to modify. + * @param {Array} pair The key-value pair to add. + * @returns {Object} Returns `map`. + */ + function addMapEntry(map, pair) { + // Don't return `map.set` because it's not chainable in IE 11. + map.set(pair[0], pair[1]); + return map; + } + + /** + * Adds `value` to `set`. + * + * @private + * @param {Object} set The set to modify. + * @param {*} value The value to add. + * @returns {Object} Returns `set`. + */ + function addSetEntry(set, value) { + // Don't return `set.add` because it's not chainable in IE 11. + set.add(value); + return set; + } + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } + + /** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; + } + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); + + /** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function asciiToArray(string) { + return string.split(''); + } + + /** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function asciiWords(string) { + return string.match(reAsciiWord) || []; + } + + /** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } + + /** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } + + /** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ + function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; + } + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ + function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; + } + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } + + /** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ + function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); + } + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + + /** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ + function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ + function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; + } + + /** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ + function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; + } + + /** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + var deburrLetter = basePropertyOf(deburredLetters); + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + var escapeHtmlChar = basePropertyOf(htmlEscapes); + + /** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } + + /** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ + function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); + } + + /** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ + function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; + } + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; + } + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } + + /** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ + function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; + } + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; + } + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } + + /** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } + + /** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ + function unicodeToArray(string) { + return string.match(reUnicode) || []; + } + + /** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ + function unicodeWords(string) { + return string.match(reUnicodeWord) || []; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the `context` object. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Util + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'foo': _.constant('foo') }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'bar': lodash.constant('bar') }); + * + * _.isFunction(_.foo); + * // => true + * _.isFunction(_.bar); + * // => false + * + * lodash.isFunction(lodash.foo); + * // => false + * lodash.isFunction(lodash.bar); + * // => true + * + * // Create a suped-up `defer` in Node.js. + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + var runInContext = (function runInContext(context) { + context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); + + /** Built-in constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for built-in method references. */ + var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to detect overreaching core-js shims. */ + var coreJsData = context['__core-js_shared__']; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = root._; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Built-in value references. */ + var Buffer = moduleExports ? context.Buffer : undefined, + Symbol = context.Symbol, + Uint8Array = context.Uint8Array, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, + getPrototype = overArg(Object.getPrototypeOf, Object), + objectCreate = Object.create, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + splice = arrayProto.splice, + spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, + symIterator = Symbol ? Symbol.iterator : undefined, + symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); + + /** Mocked built-ins. */ + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, + ctxNow = Date && Date.now !== root.Date.now && Date.now, + ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeFloor = Math.floor, + nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeIsFinite = context.isFinite, + nativeJoin = arrayProto.join, + nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = Date.now, + nativeParseInt = context.parseInt, + nativeRandom = Math.random, + nativeReverse = arrayProto.reverse; + + /* Built-in method references that are verified to be native. */ + var DataView = getNative(context, 'DataView'), + Map = getNative(context, 'Map'), + Promise = getNative(context, 'Promise'), + Set = getNative(context, 'Set'), + WeakMap = getNative(context, 'WeakMap'), + nativeCreate = getNative(Object, 'create'); + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /** Used to lookup unminified function names. */ + var realNames = {}; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + /** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ + function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; + } + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': lodash + } + }; + + // Ensure wrappers are instances of `baseLodash`. + lodash.prototype = baseLodash.prototype; + lodash.prototype.constructor = lodash; + + LodashWrapper.prototype = baseCreate(baseLodash.prototype); + LodashWrapper.prototype.constructor = LodashWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; + } + + // Ensure `LazyWrapper` is an instance of `baseLodash`. + LazyWrapper.prototype = baseCreate(baseLodash.prototype); + LazyWrapper.prototype.constructor = LazyWrapper; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } + + // Add methods to `Hash`. + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } + + // Add methods to `ListCache`. + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } + + // Add methods to `MapCache`. + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } + + // Add methods to `SetCache`. + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } + + // Add methods to `Stack`. + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } + + /** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ + function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; + } + + /** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); + } + + /** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); + } + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } + + /** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ + function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; + } + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } + + /** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ + function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; + } + + /** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ + function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; + } + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, baseClone, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } + + /** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ + function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; + } + + /** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ + function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ + function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); + } + + /** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); + + /** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEachRight = createBaseEach(baseForOwnRight, true); + + /** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseForRight = createBaseFor(true); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ + function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); + } + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } + + /** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ + function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); + } + + /** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ + function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ + function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; + } + + /** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ + function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } + + /** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ + function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; + } + + /** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ + function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; + } + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } + + /** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ + function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; + } + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + if (isObject(srcValue)) { + stack || (stack = new Stack); + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(object[key], srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = object[key], + srcValue = source[key], + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } + + /** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ + function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; + } + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + var index = -1; + iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } + + /** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ + function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ + function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; + } + + /** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ + function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); + } + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } + + /** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ + function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; + } + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } + + /** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ + function baseSample(collection) { + return arraySample(values(collection)); + } + + /** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ + function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); + } + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } + + /** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + /** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ + function baseShuffle(collection) { + return shuffleSelf(values(collection)); + } + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); + } + + /** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function baseSortedIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array == null ? 0 : array.length, + valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; + } + + /** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ + function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; + } + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ + function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; + } + + /** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); + } + + /** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ + function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); + } + + /** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ + function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); + } + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } + + /** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ + function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; + } + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } + + /** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + var castRest = baseRest; + + /** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ + function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); + } + + /** + * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). + * + * @private + * @param {number|Object} id The timer id or timeout object of the timer to clear. + */ + var clearTimeout = ctxClearTimeout || function(id) { + return root.clearTimeout(id); + }; + + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; + } + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } + + /** + * Creates a clone of `map`. + * + * @private + * @param {Object} map The map to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned map. + */ + function cloneMap(map, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(mapToArray(map), CLONE_DEEP_FLAG) : mapToArray(map); + return arrayReduce(array, addMapEntry, new map.constructor); + } + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } + + /** + * Creates a clone of `set`. + * + * @private + * @param {Object} set The set to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned set. + */ + function cloneSet(set, isDeep, cloneFunc) { + var array = isDeep ? cloneFunc(setToArray(set), CLONE_DEEP_FLAG) : setToArray(set); + return arrayReduce(array, addSetEntry, new set.constructor); + } + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; + } + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } + + /** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, getIteratee(iteratee, 2), accumulator); + }; + } + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; + } + + /** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ + function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; + } + + /** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; + } + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = getIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } + + /** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ + function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); + } + + /** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ + function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; + } + + /** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ + function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; + } + + /** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ + function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(getIteratee())); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); + } + + /** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ + function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); + } + + /** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ + function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } + + /** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ + function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; + } + + /** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); + } + + /** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ + function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; + } + + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; + + /** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ + function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); + } + + /** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ + function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; + } + + /** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ + function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; + } + + /** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ + function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(array); + if (stacked && stack.get(other)) { + return stacked == other; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked && stack.get(other)) { + return stacked == other; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ + function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; + } + + /** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ + function getHolder(func) { + var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; + return object.placeholder; + } + + /** + * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, + * this function returns the custom method, otherwise it returns `baseIteratee`. + * If arguments are provided, the chosen function is invoked with them and + * its result is returned. + * + * @private + * @param {*} [value] The value to convert to an iteratee. + * @param {number} [arity] The arity of the created iteratee. + * @returns {Function} Returns the chosen function or its result. + */ + function getIteratee() { + var result = lodash.iteratee || iteratee; + result = result === iteratee ? baseIteratee : result; + return arguments.length ? result(arguments[0], arguments[1]) : result; + } + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; + + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ + function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; + } + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {Function} cloneFunc The function to clone values. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, cloneFunc, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return cloneMap(object, isDeep, cloneFunc); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return cloneSet(object, isDeep, cloneFunc); + + case symbolTag: + return cloneSymbol(object); + } + } + + /** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ + function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); + } + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); + } + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } + + /** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ + function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; + } + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } + + /** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ + var isMaskable = coreJsData ? isFunction : stubFalse; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } + + /** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ + function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = shortOut(baseSetData); + + /** + * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @returns {number|Object} Returns the timer id or timeout object. + */ + var setTimeout = ctxSetTimeout || function(func, wait) { + return root.setTimeout(func, wait); + }; + + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); + + /** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ + function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); + } + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } + + /** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ + function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; + } + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (reLeadingDot.test(string)) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } + + /** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ + function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ + function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); + } + + /** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ + var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ + var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; + }); + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true, true) + : []; + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), true) + : []; + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ + function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, getIteratee(predicate, 3), index); + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, getIteratee(predicate, 3), index, true); + } + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } + + /** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ + function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; + } + + /** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ + function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); + } + + /** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ + function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ + function head(array) { + return (array && array.length) ? array[0] : undefined; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ + function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; + } + + /** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ + var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ + var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, getIteratee(iteratee, 2)) + : []; + }); + + /** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ + var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; + }); + + /** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ + function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); + } + + /** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ + function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; + } + + /** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ + var pull = baseRest(pullAll); + + /** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ + function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ + function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, getIteratee(iteratee, 2)) + : array; + } + + /** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ + function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; + } + + /** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ + var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; + }); + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = getIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; + } + + /** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function reverse(array) { + return array == null ? array : nativeReverse.call(array); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ + function sortedIndex(array, value) { + return baseSortedIndex(array, value); + } + + /** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ + function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); + } + + /** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ + function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ + function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); + } + + /** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ + function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); + } + + /** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ + function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ + function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; + } + + /** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ + function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, getIteratee(iteratee, 2)) + : []; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ + function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ + function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3), false, true) + : []; + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ + function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, getIteratee(predicate, 3)) + : []; + } + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + /** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); + }); + + /** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ + function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; + } + + /** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ + function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ + function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); + } + + /** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ + function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); + } + + /** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ + var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; + }); + + /** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ + var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); + }); + + /** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ + var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); + }); + + /** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ + var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); + }); + + /** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ + var zip = baseRest(unzip); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } + + /** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ + function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); + } + + /** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ + var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor) { + interceptor(value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ + function thru(value, interceptor) { + return interceptor(value); + } + + /** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ + var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); + }); + + /** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ + function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; + } + + /** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ + function wrapperToIterator() { + return this; + } + + /** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); + } + + /** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + var findLast = createFind(findLastIndex); + + /** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ + function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); + } + + /** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ + function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); + } + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ + function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } + }); + + /** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ + function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); + } + + /** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; + }); + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ + var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); + }); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ + function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ + function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(getIteratee(predicate, 3))); + } + + /** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ + function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); + } + + /** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ + function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); + } + + /** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, getIteratee(predicate, 3)); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + /*------------------------------------------------------------------------*/ + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = ctxNow || function() { + return root.Date.now(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ + function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); + }); + + /** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); + }); + + /** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ + function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + result = wait - timeSinceLastCall; + + return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ + var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); + }); + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ + var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); + }); + + /** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ + function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); + } + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } + + // Expose `MapCache`. + memoize.Cache = MapCache; + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ + function once(func) { + return before(2, func); + } + + /** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ + var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(getIteratee())) + : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); + }); + + /** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); + }); + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); + }); + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ + var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); + }); + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ + function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); + } + + /** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); + } + + /** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ + function unary(func) { + return ary(func, 1); + } + + /** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '<p>' + func(text) + '</p>'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '<p>fred, barney, & pebbles</p>' + */ + function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ + function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; + } + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ + function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } + + /** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ + function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); + } + + /** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ + function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); + } + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } + + /** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ + var gt = createRelationalOperation(baseGt); + + /** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ + var gte = createRelationalOperation(function(value, other) { + return value >= other; + }); + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + /** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ + var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); + } + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + + /** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement('<body>'); + * // => false + */ + function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); + } + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ + function isEqual(value, other) { + return baseIsEqual(value, other); + } + + /** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ + function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ + function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); + } + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } + + /** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ + function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + /** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ + function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); + } + + /** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ + function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ + function isNil(value) { + return value == null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + + /** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ + function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } + + /** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ + function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; + } + + /** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ + function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; + } + + /** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ + var lt = createRelationalOperation(baseLt); + + /** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ + var lte = createRelationalOperation(function(value, other) { + return value <= other; + }); + + /** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ + function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); + } + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } + + /** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ + function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; + } + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } + + /** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ + function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); + } + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ + var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } + }); + + /** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ + var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); + }); + + /** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); + }); + + /** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); + }); + + /** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ + var at = flatRest(baseAt); + + /** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); + } + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(args) { + args.push(undefined, customDefaultsAssignIn); + return apply(assignInWith, undefined, args); + }); + + /** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ + var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); + }); + + /** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate) { + return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); + } + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ + function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, getIteratee(iteratee, 3), keysIn); + } + + /** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forOwn(object, iteratee) { + return object && baseForOwn(object, getIteratee(iteratee, 3)); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ + function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, getIteratee(iteratee, 3)); + } + + /** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ + function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); + } + + /** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ + function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); + } + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ + var invert = createInverter(function(result, value, key) { + result[value] = key; + }, constant(identity)); + + /** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ + var invertBy = createInverter(function(result, value, key) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + }, getIteratee); + + /** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ + var invoke = baseRest(baseInvoke); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } + + /** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ + function mapKeys(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = getIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + /** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ + var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); + }); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ + var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; + }); + + /** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ + function omitBy(object, predicate) { + return pickBy(object, negate(getIteratee(predicate))); + } + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + /** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ + function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = getIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); + } + + /** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ + function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; + } + + /** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ + function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); + } + + /** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ + function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); + } + + /** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ + var toPairs = createToPairs(keys); + + /** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ + var toPairsIn = createToPairs(keysIn); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = getIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ + function unset(object, path) { + return object == null ? true : baseUnset(object, path); + } + + /** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ + function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); + } + + /** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ + function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); + } + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ + function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); + } + + /** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ + function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); + } + + /** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); + }); + + /** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ + function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); + } + + /** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; + } + + /** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; + } + + /** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ + var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); + }); + + /** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ + var lowerFirst = createCaseFirst('toLowerCase'); + + /** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); + } + + /** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ + function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; + } + + /** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ + function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); + } + + /** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ + function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); + } + + /** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ + function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); + } + + /** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='lodash.templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<b><%- value %></b>'); + * compiled({ 'value': '<script>' }); + * // => '<b><script></b>' + * + * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. + * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the internal `print` function in "evaluate" delimiters. + * var compiled = _.template('<% print("hello " + user); %>!'); + * compiled({ 'user': 'barney' }); + * // => 'hello barney!' + * + * // Use the ES template literal delimiter as an "interpolate" delimiter. + * // Disable support by replacing the "interpolate" delimiter. + * var compiled = _.template('hello ${ user }!'); + * compiled({ 'user': 'pebbles' }); + * // => 'hello pebbles!' + * + * // Use backslashes to treat delimiters as plain text. + * var compiled = _.template('<%= "\\<%- value %\\>" %>'); + * compiled({ 'value': 'ignored' }); + * // => '<%- value %>' + * + * // Use the `imports` option to import `jQuery` as `jq`. + * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; + * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the `sourceURL` option to specify a custom sourceURL for the template. + * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. + * + * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. + * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * // var __t, __p = ''; + * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; + * // return __p; + * // } + * + * // Use custom template delimiters. + * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; + * var compiled = _.template('hello {{ user }}!'); + * compiled({ 'user': 'mustache' }); + * // => 'hello mustache!' + * + * // Use the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and stack traces. + * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ + function template(string, options, guard) { + // Based on John Resig's `tmpl` implementation + // (http://ejohn.org/blog/javascript-micro-templating/) + // and Laura Doktorova's doT.js (https://github.com/olado/doT). + var settings = lodash.templateSettings; + + if (guard && isIterateeCall(string, options, guard)) { + options = undefined; + } + string = toString(string); + options = assignInWith({}, options, settings, customDefaultsAssignIn); + + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), + importsKeys = keys(imports), + importsValues = baseValues(imports, importsKeys); + + var isEscaping, + isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // Compile the regexp to match each delimiter. + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + // Use a sourceURL for easier debugging. + var sourceURL = '//# sourceURL=' + + ('sourceURL' in options + ? options.sourceURL + : ('lodash.templateSources[' + (++templateCounter) + ']') + ) + '\n'; + + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // Escape characters that can't be included in string literals. + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // Replace delimiters with snippets. + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // The JS engine embedded in Adobe products needs `match` returned in + // order to produce the correct `offset` value. + return match; + }); + + source += "';\n"; + + // If `variable` is not specified wrap a with-statement around the generated + // code to add the data object to the top of the scope chain. + var variable = options.variable; + if (!variable) { + source = 'with (obj) {\n' + source + '\n}\n'; + } + // Cleanup code by stripping empty strings. + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // Frame code as the function body. + source = 'function(' + (variable || 'obj') + ') {\n' + + (variable + ? '' + : 'obj || (obj = {});\n' + ) + + "var __t, __p = ''" + + (isEscaping + ? ', __e = _.escape' + : '' + ) + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + var result = attempt(function() { + return Function(importsKeys, sourceURL + 'return ' + source) + .apply(undefined, importsValues); + }); + + // Provide the compiled function's source by its `toString` method or + // the `source` property as a convenience for inlining compiled templates. + result.source = source; + if (isError(result)) { + throw result; + } + return result; + } + + /** + * Converts `string`, as a whole, to lower case just like + * [String#toLowerCase](https://mdn.io/toLowerCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.toLower('--Foo-Bar--'); + * // => '--foo-bar--' + * + * _.toLower('fooBar'); + * // => 'foobar' + * + * _.toLower('__FOO_BAR__'); + * // => '__foo_bar__' + */ + function toLower(value) { + return toString(value).toLowerCase(); + } + + /** + * Converts `string`, as a whole, to upper case just like + * [String#toUpperCase](https://mdn.io/toUpperCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.toUpper('--foo-bar--'); + * // => '--FOO-BAR--' + * + * _.toUpper('fooBar'); + * // => 'FOOBAR' + * + * _.toUpper('__foo_bar__'); + * // => '__FOO_BAR__' + */ + function toUpper(value) { + return toString(value).toUpperCase(); + } + + /** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ + function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrim, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); + } + + /** + * Removes trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimEnd(' abc '); + * // => ' abc' + * + * _.trimEnd('-_-abc-_-', '_-'); + * // => '-_-abc' + */ + function trimEnd(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrimEnd, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + + return castSlice(strSymbols, 0, end).join(''); + } + + /** + * Removes leading whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimStart(' abc '); + * // => 'abc ' + * + * _.trimStart('-_-abc-_-', '_-'); + * // => 'abc-_-' + */ + function trimStart(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrimStart, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + start = charsStartIndex(strSymbols, stringToArray(chars)); + + return castSlice(strSymbols, start).join(''); + } + + /** + * Truncates `string` if it's longer than the given maximum string length. + * The last characters of the truncated string are replaced with the omission + * string which defaults to "...". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to truncate. + * @param {Object} [options={}] The options object. + * @param {number} [options.length=30] The maximum string length. + * @param {string} [options.omission='...'] The string to indicate text is omitted. + * @param {RegExp|string} [options.separator] The separator pattern to truncate to. + * @returns {string} Returns the truncated string. + * @example + * + * _.truncate('hi-diddly-ho there, neighborino'); + * // => 'hi-diddly-ho there, neighbo...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': ' ' + * }); + * // => 'hi-diddly-ho there,...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': /,? +/ + * }); + * // => 'hi-diddly-ho there...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'omission': ' [...]' + * }); + * // => 'hi-diddly-ho there, neig [...]' + */ + function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, + omission = DEFAULT_TRUNC_OMISSION; + + if (isObject(options)) { + var separator = 'separator' in options ? options.separator : separator; + length = 'length' in options ? toInteger(options.length) : length; + omission = 'omission' in options ? baseToString(options.omission) : omission; + } + string = toString(string); + + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result = strSymbols + ? castSlice(strSymbols, 0, end).join('') + : string.slice(0, end); + + if (separator === undefined) { + return result + omission; + } + if (strSymbols) { + end += (result.length - end); + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, + substring = result; + + if (!separator.global) { + separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); + } + separator.lastIndex = 0; + while ((match = separator.exec(substring))) { + var newEnd = match.index; + } + result = result.slice(0, newEnd === undefined ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result.lastIndexOf(separator); + if (index > -1) { + result = result.slice(0, index); + } + } + return result + omission; + } + + /** + * The inverse of `_.escape`; this method converts the HTML entities + * `&`, `<`, `>`, `"`, and `'` in `string` to + * their corresponding characters. + * + * **Note:** No other HTML entities are unescaped. To unescape additional + * HTML entities use a third-party library like [_he_](https://mths.be/he). + * + * @static + * @memberOf _ + * @since 0.6.0 + * @category String + * @param {string} [string=''] The string to unescape. + * @returns {string} Returns the unescaped string. + * @example + * + * _.unescape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function unescape(string) { + string = toString(string); + return (string && reHasEscapedHtml.test(string)) + ? string.replace(reEscapedHtml, unescapeHtmlChar) + : string; + } + + /** + * Converts `string`, as space separated words, to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.upperCase('--foo-bar'); + * // => 'FOO BAR' + * + * _.upperCase('fooBar'); + * // => 'FOO BAR' + * + * _.upperCase('__foo_bar__'); + * // => 'FOO BAR' + */ + var upperCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toUpperCase(); + }); + + /** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ + var upperFirst = createCaseFirst('toUpperCase'); + + /** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ + function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined : pattern; + + if (pattern === undefined) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; + } + + /*------------------------------------------------------------------------*/ + + /** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Function} func The function to attempt. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // Avoid throwing errors for invalid selectors. + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ + var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined, args); + } catch (e) { + return isError(e) ? e : new Error(e); + } + }); + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. + * + * **Note:** This method doesn't set the "length" property of bound functions. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'click': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view, ['click']); + * jQuery(element).on('click', view.click); + * // => Logs 'clicked docs' when clicked. + */ + var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; + }); + + /** + * Creates a function that iterates over `pairs` and invokes the corresponding + * function of the first predicate to return truthy. The predicate-function + * pairs are invoked with the `this` binding and arguments of the created + * function. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Array} pairs The predicate-function pairs. + * @returns {Function} Returns the new composite function. + * @example + * + * var func = _.cond([ + * [_.matches({ 'a': 1 }), _.constant('matches A')], + * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], + * [_.stubTrue, _.constant('no match')] + * ]); + * + * func({ 'a': 1, 'b': 2 }); + * // => 'matches A' + * + * func({ 'a': 0, 'b': 1 }); + * // => 'matches B' + * + * func({ 'a': '1', 'b': '2' }); + * // => 'no match' + */ + function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, + toIteratee = getIteratee(); + + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); + } + + /** + * Creates a function that invokes the predicate properties of `source` with + * the corresponding property values of a given object, returning `true` if + * all predicates return truthy, else `false`. + * + * **Note:** The created function is equivalent to `_.conformsTo` with + * `source` partially applied. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 2, 'b': 1 }, + * { 'a': 1, 'b': 2 } + * ]; + * + * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); + * // => [{ 'a': 1, 'b': 2 }] + */ + function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } + + /** + * Checks `value` to determine whether a default value should be returned in + * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, + * or `undefined`. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Util + * @param {*} value The value to check. + * @param {*} defaultValue The default value. + * @returns {*} Returns the resolved value. + * @example + * + * _.defaultTo(1, 10); + * // => 1 + * + * _.defaultTo(undefined, 10); + * // => 10 + */ + function defaultTo(value, defaultValue) { + return (value == null || value !== value) ? defaultValue : value; + } + + /** + * Creates a function that returns the result of invoking the given functions + * with the `this` binding of the created function, where each successive + * invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flowRight + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow([_.add, square]); + * addSquare(1, 2); + * // => 9 + */ + var flow = createFlow(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the given functions from right to left. + * + * @static + * @since 3.0.0 + * @memberOf _ + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flow + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight([square, _.add]); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createFlow(true); + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } + + /** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ + function iteratee(func) { + return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between a given + * object and `source`, returning `true` if the given object has equivalent + * property values, else `false`. + * + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); + * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + */ + function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that performs a partial deep comparison between the + * value at `path` of a given object to `srcValue`, returning `true` if the + * object value is equivalent, else `false`. + * + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.find(objects, _.matchesProperty('a', 4)); + * // => { 'a': 4, 'b': 5, 'c': 6 } + */ + function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); + } + + /** + * Creates a function that invokes the method at `path` of a given object. + * Any additional arguments are provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var objects = [ + * { 'a': { 'b': _.constant(2) } }, + * { 'a': { 'b': _.constant(1) } } + * ]; + * + * _.map(objects, _.method('a.b')); + * // => [2, 1] + * + * _.map(objects, _.method(['a', 'b'])); + * // => [2, 1] + */ + var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; + }); + + /** + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path of `object`. Any additional arguments are + * provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var array = _.times(3, _.constant), + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.methodOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); + * // => [2, 0] + */ + var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; + }); + + /** + * Adds all own enumerable string keyed function properties of a source + * object to the destination object. If `object` is a function, then methods + * are added to its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.chain=true] Specify whether mixins are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ + function mixin(object, source, options) { + var props = keys(source), + methodNames = baseFunctions(source, props); + + if (options == null && + !(isObject(source) && (methodNames.length || !props.length))) { + options = source; + source = object; + object = this; + methodNames = baseFunctions(source, keys(source)); + } + var chain = !(isObject(options) && 'chain' in options) || !!options.chain, + isFunc = isFunction(object); + + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = copyArray(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + + return object; + } + + /** + * Reverts the `_` variable to its previous value and returns a reference to + * the `lodash` function. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @returns {Function} Returns the `lodash` function. + * @example + * + * var lodash = _.noConflict(); + */ + function noConflict() { + if (root._ === this) { + root._ = oldDash; + } + return this; + } + + /** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() { + // No operation performed. + } + + /** + * Creates a function that gets the argument at index `n`. If `n` is negative, + * the nth argument from the end is returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [n=0] The index of the argument to return. + * @returns {Function} Returns the new pass-thru function. + * @example + * + * var func = _.nthArg(1); + * func('a', 'b', 'c', 'd'); + * // => 'b' + * + * var func = _.nthArg(-2); + * func('a', 'b', 'c', 'd'); + * // => 'c' + */ + function nthArg(n) { + n = toInteger(n); + return baseRest(function(args) { + return baseNth(args, n); + }); + } + + /** + * Creates a function that invokes `iteratees` with the arguments it receives + * and returns their results. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to invoke. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.over([Math.max, Math.min]); + * + * func(1, 2, 3, 4); + * // => [4, 1] + */ + var over = createOver(arrayMap); + + /** + * Creates a function that checks if **all** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overEvery([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => false + * + * func(NaN); + * // => false + */ + var overEvery = createOver(arrayEvery); + + /** + * Creates a function that checks if **any** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overSome([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => true + * + * func(NaN); + * // => false + */ + var overSome = createOver(arraySome); + + /** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } + + /** + * The opposite of `_.property`; this method creates a function that returns + * the value at a given path of `object`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + * @example + * + * var array = [0, 1, 2], + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); + * // => [2, 0] + */ + function propertyOf(object) { + return function(path) { + return object == null ? undefined : baseGet(object, path); + }; + } + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + var range = createRange(); + + /** + * This method is like `_.range` except that it populates values in + * descending order. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.range + * @example + * + * _.rangeRight(4); + * // => [3, 2, 1, 0] + * + * _.rangeRight(-4); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 5); + * // => [4, 3, 2, 1] + * + * _.rangeRight(0, 20, 5); + * // => [15, 10, 5, 0] + * + * _.rangeRight(0, -4, -1); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 4, 0); + * // => [1, 1, 1] + * + * _.rangeRight(0); + * // => [] + */ + var rangeRight = createRange(true); + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + + /** + * This method returns a new empty object. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Object} Returns the new empty object. + * @example + * + * var objects = _.times(2, _.stubObject); + * + * console.log(objects); + * // => [{}, {}] + * + * console.log(objects[0] === objects[1]); + * // => false + */ + function stubObject() { + return {}; + } + + /** + * This method returns an empty string. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {string} Returns the empty string. + * @example + * + * _.times(2, _.stubString); + * // => ['', ''] + */ + function stubString() { + return ''; + } + + /** + * This method returns `true`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `true`. + * @example + * + * _.times(2, _.stubTrue); + * // => [true, true] + */ + function stubTrue() { + return true; + } + + /** + * Invokes the iteratee `n` times, returning an array of the results of + * each invocation. The iteratee is invoked with one argument; (index). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of results. + * @example + * + * _.times(3, String); + * // => ['0', '1', '2'] + * + * _.times(4, _.constant(0)); + * // => [0, 0, 0, 0] + */ + function times(n, iteratee) { + n = toInteger(n); + if (n < 1 || n > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, + length = nativeMin(n, MAX_ARRAY_LENGTH); + + iteratee = getIteratee(iteratee); + n -= MAX_ARRAY_LENGTH; + + var result = baseTimes(length, iteratee); + while (++index < n) { + iteratee(index); + } + return result; + } + + /** + * Converts `value` to a property path array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {*} value The value to convert. + * @returns {Array} Returns the new property path array. + * @example + * + * _.toPath('a.b.c'); + * // => ['a', 'b', 'c'] + * + * _.toPath('a[0].b.c'); + * // => ['a', '0', 'b', 'c'] + */ + function toPath(value) { + if (isArray(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); + } + + /** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; + } + + /*------------------------------------------------------------------------*/ + + /** + * Adds two numbers. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {number} augend The first number in an addition. + * @param {number} addend The second number in an addition. + * @returns {number} Returns the total. + * @example + * + * _.add(6, 4); + * // => 10 + */ + var add = createMathOperation(function(augend, addend) { + return augend + addend; + }, 0); + + /** + * Computes `number` rounded up to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ + var ceil = createRound('ceil'); + + /** + * Divide two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} dividend The first number in a division. + * @param {number} divisor The second number in a division. + * @returns {number} Returns the quotient. + * @example + * + * _.divide(6, 4); + * // => 1.5 + */ + var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; + }, 1); + + /** + * Computes `number` rounded down to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ + var floor = createRound('floor'); + + /** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ + function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; + } + + /** + * This method is like `_.max` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the maximum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.maxBy(objects, function(o) { return o.n; }); + * // => { 'n': 2 } + * + * // The `_.property` iteratee shorthand. + * _.maxBy(objects, 'n'); + * // => { 'n': 2 } + */ + function maxBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) + : undefined; + } + + /** + * Computes the mean of the values in `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the mean. + * @example + * + * _.mean([4, 2, 8, 6]); + * // => 5 + */ + function mean(array) { + return baseMean(array, identity); + } + + /** + * This method is like `_.mean` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be averaged. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the mean. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.meanBy(objects, function(o) { return o.n; }); + * // => 5 + * + * // The `_.property` iteratee shorthand. + * _.meanBy(objects, 'n'); + * // => 5 + */ + function meanBy(array, iteratee) { + return baseMean(array, getIteratee(iteratee, 2)); + } + + /** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ + function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; + } + + /** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ + function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) + : undefined; + } + + /** + * Multiply two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} multiplier The first number in a multiplication. + * @param {number} multiplicand The second number in a multiplication. + * @returns {number} Returns the product. + * @example + * + * _.multiply(6, 4); + * // => 24 + */ + var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; + }, 1); + + /** + * Computes `number` rounded to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round. + * @param {number} [precision=0] The precision to round to. + * @returns {number} Returns the rounded number. + * @example + * + * _.round(4.006); + * // => 4 + * + * _.round(4.006, 2); + * // => 4.01 + * + * _.round(4060, -2); + * // => 4100 + */ + var round = createRound('round'); + + /** + * Subtract two numbers. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {number} minuend The first number in a subtraction. + * @param {number} subtrahend The second number in a subtraction. + * @returns {number} Returns the difference. + * @example + * + * _.subtract(6, 4); + * // => 2 + */ + var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; + }, 0); + + /** + * Computes the sum of the values in `array`. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 2, 8, 6]); + * // => 20 + */ + function sum(array) { + return (array && array.length) + ? baseSum(array, identity) + : 0; + } + + /** + * This method is like `_.sum` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be summed. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the sum. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.sumBy(objects, function(o) { return o.n; }); + * // => 20 + * + * // The `_.property` iteratee shorthand. + * _.sumBy(objects, 'n'); + * // => 20 + */ + function sumBy(array, iteratee) { + return (array && array.length) + ? baseSum(array, getIteratee(iteratee, 2)) + : 0; + } + + /*------------------------------------------------------------------------*/ + + // Add methods that return wrapped values in chain sequences. + lodash.after = after; + lodash.ary = ary; + lodash.assign = assign; + lodash.assignIn = assignIn; + lodash.assignInWith = assignInWith; + lodash.assignWith = assignWith; + lodash.at = at; + lodash.before = before; + lodash.bind = bind; + lodash.bindAll = bindAll; + lodash.bindKey = bindKey; + lodash.castArray = castArray; + lodash.chain = chain; + lodash.chunk = chunk; + lodash.compact = compact; + lodash.concat = concat; + lodash.cond = cond; + lodash.conforms = conforms; + lodash.constant = constant; + lodash.countBy = countBy; + lodash.create = create; + lodash.curry = curry; + lodash.curryRight = curryRight; + lodash.debounce = debounce; + lodash.defaults = defaults; + lodash.defaultsDeep = defaultsDeep; + lodash.defer = defer; + lodash.delay = delay; + lodash.difference = difference; + lodash.differenceBy = differenceBy; + lodash.differenceWith = differenceWith; + lodash.drop = drop; + lodash.dropRight = dropRight; + lodash.dropRightWhile = dropRightWhile; + lodash.dropWhile = dropWhile; + lodash.fill = fill; + lodash.filter = filter; + lodash.flatMap = flatMap; + lodash.flatMapDeep = flatMapDeep; + lodash.flatMapDepth = flatMapDepth; + lodash.flatten = flatten; + lodash.flattenDeep = flattenDeep; + lodash.flattenDepth = flattenDepth; + lodash.flip = flip; + lodash.flow = flow; + lodash.flowRight = flowRight; + lodash.fromPairs = fromPairs; + lodash.functions = functions; + lodash.functionsIn = functionsIn; + lodash.groupBy = groupBy; + lodash.initial = initial; + lodash.intersection = intersection; + lodash.intersectionBy = intersectionBy; + lodash.intersectionWith = intersectionWith; + lodash.invert = invert; + lodash.invertBy = invertBy; + lodash.invokeMap = invokeMap; + lodash.iteratee = iteratee; + lodash.keyBy = keyBy; + lodash.keys = keys; + lodash.keysIn = keysIn; + lodash.map = map; + lodash.mapKeys = mapKeys; + lodash.mapValues = mapValues; + lodash.matches = matches; + lodash.matchesProperty = matchesProperty; + lodash.memoize = memoize; + lodash.merge = merge; + lodash.mergeWith = mergeWith; + lodash.method = method; + lodash.methodOf = methodOf; + lodash.mixin = mixin; + lodash.negate = negate; + lodash.nthArg = nthArg; + lodash.omit = omit; + lodash.omitBy = omitBy; + lodash.once = once; + lodash.orderBy = orderBy; + lodash.over = over; + lodash.overArgs = overArgs; + lodash.overEvery = overEvery; + lodash.overSome = overSome; + lodash.partial = partial; + lodash.partialRight = partialRight; + lodash.partition = partition; + lodash.pick = pick; + lodash.pickBy = pickBy; + lodash.property = property; + lodash.propertyOf = propertyOf; + lodash.pull = pull; + lodash.pullAll = pullAll; + lodash.pullAllBy = pullAllBy; + lodash.pullAllWith = pullAllWith; + lodash.pullAt = pullAt; + lodash.range = range; + lodash.rangeRight = rangeRight; + lodash.rearg = rearg; + lodash.reject = reject; + lodash.remove = remove; + lodash.rest = rest; + lodash.reverse = reverse; + lodash.sampleSize = sampleSize; + lodash.set = set; + lodash.setWith = setWith; + lodash.shuffle = shuffle; + lodash.slice = slice; + lodash.sortBy = sortBy; + lodash.sortedUniq = sortedUniq; + lodash.sortedUniqBy = sortedUniqBy; + lodash.split = split; + lodash.spread = spread; + lodash.tail = tail; + lodash.take = take; + lodash.takeRight = takeRight; + lodash.takeRightWhile = takeRightWhile; + lodash.takeWhile = takeWhile; + lodash.tap = tap; + lodash.throttle = throttle; + lodash.thru = thru; + lodash.toArray = toArray; + lodash.toPairs = toPairs; + lodash.toPairsIn = toPairsIn; + lodash.toPath = toPath; + lodash.toPlainObject = toPlainObject; + lodash.transform = transform; + lodash.unary = unary; + lodash.union = union; + lodash.unionBy = unionBy; + lodash.unionWith = unionWith; + lodash.uniq = uniq; + lodash.uniqBy = uniqBy; + lodash.uniqWith = uniqWith; + lodash.unset = unset; + lodash.unzip = unzip; + lodash.unzipWith = unzipWith; + lodash.update = update; + lodash.updateWith = updateWith; + lodash.values = values; + lodash.valuesIn = valuesIn; + lodash.without = without; + lodash.words = words; + lodash.wrap = wrap; + lodash.xor = xor; + lodash.xorBy = xorBy; + lodash.xorWith = xorWith; + lodash.zip = zip; + lodash.zipObject = zipObject; + lodash.zipObjectDeep = zipObjectDeep; + lodash.zipWith = zipWith; + + // Add aliases. + lodash.entries = toPairs; + lodash.entriesIn = toPairsIn; + lodash.extend = assignIn; + lodash.extendWith = assignInWith; + + // Add methods to `lodash.prototype`. + mixin(lodash, lodash); + + /*------------------------------------------------------------------------*/ + + // Add methods that return unwrapped values in chain sequences. + lodash.add = add; + lodash.attempt = attempt; + lodash.camelCase = camelCase; + lodash.capitalize = capitalize; + lodash.ceil = ceil; + lodash.clamp = clamp; + lodash.clone = clone; + lodash.cloneDeep = cloneDeep; + lodash.cloneDeepWith = cloneDeepWith; + lodash.cloneWith = cloneWith; + lodash.conformsTo = conformsTo; + lodash.deburr = deburr; + lodash.defaultTo = defaultTo; + lodash.divide = divide; + lodash.endsWith = endsWith; + lodash.eq = eq; + lodash.escape = escape; + lodash.escapeRegExp = escapeRegExp; + lodash.every = every; + lodash.find = find; + lodash.findIndex = findIndex; + lodash.findKey = findKey; + lodash.findLast = findLast; + lodash.findLastIndex = findLastIndex; + lodash.findLastKey = findLastKey; + lodash.floor = floor; + lodash.forEach = forEach; + lodash.forEachRight = forEachRight; + lodash.forIn = forIn; + lodash.forInRight = forInRight; + lodash.forOwn = forOwn; + lodash.forOwnRight = forOwnRight; + lodash.get = get; + lodash.gt = gt; + lodash.gte = gte; + lodash.has = has; + lodash.hasIn = hasIn; + lodash.head = head; + lodash.identity = identity; + lodash.includes = includes; + lodash.indexOf = indexOf; + lodash.inRange = inRange; + lodash.invoke = invoke; + lodash.isArguments = isArguments; + lodash.isArray = isArray; + lodash.isArrayBuffer = isArrayBuffer; + lodash.isArrayLike = isArrayLike; + lodash.isArrayLikeObject = isArrayLikeObject; + lodash.isBoolean = isBoolean; + lodash.isBuffer = isBuffer; + lodash.isDate = isDate; + lodash.isElement = isElement; + lodash.isEmpty = isEmpty; + lodash.isEqual = isEqual; + lodash.isEqualWith = isEqualWith; + lodash.isError = isError; + lodash.isFinite = isFinite; + lodash.isFunction = isFunction; + lodash.isInteger = isInteger; + lodash.isLength = isLength; + lodash.isMap = isMap; + lodash.isMatch = isMatch; + lodash.isMatchWith = isMatchWith; + lodash.isNaN = isNaN; + lodash.isNative = isNative; + lodash.isNil = isNil; + lodash.isNull = isNull; + lodash.isNumber = isNumber; + lodash.isObject = isObject; + lodash.isObjectLike = isObjectLike; + lodash.isPlainObject = isPlainObject; + lodash.isRegExp = isRegExp; + lodash.isSafeInteger = isSafeInteger; + lodash.isSet = isSet; + lodash.isString = isString; + lodash.isSymbol = isSymbol; + lodash.isTypedArray = isTypedArray; + lodash.isUndefined = isUndefined; + lodash.isWeakMap = isWeakMap; + lodash.isWeakSet = isWeakSet; + lodash.join = join; + lodash.kebabCase = kebabCase; + lodash.last = last; + lodash.lastIndexOf = lastIndexOf; + lodash.lowerCase = lowerCase; + lodash.lowerFirst = lowerFirst; + lodash.lt = lt; + lodash.lte = lte; + lodash.max = max; + lodash.maxBy = maxBy; + lodash.mean = mean; + lodash.meanBy = meanBy; + lodash.min = min; + lodash.minBy = minBy; + lodash.stubArray = stubArray; + lodash.stubFalse = stubFalse; + lodash.stubObject = stubObject; + lodash.stubString = stubString; + lodash.stubTrue = stubTrue; + lodash.multiply = multiply; + lodash.nth = nth; + lodash.noConflict = noConflict; + lodash.noop = noop; + lodash.now = now; + lodash.pad = pad; + lodash.padEnd = padEnd; + lodash.padStart = padStart; + lodash.parseInt = parseInt; + lodash.random = random; + lodash.reduce = reduce; + lodash.reduceRight = reduceRight; + lodash.repeat = repeat; + lodash.replace = replace; + lodash.result = result; + lodash.round = round; + lodash.runInContext = runInContext; + lodash.sample = sample; + lodash.size = size; + lodash.snakeCase = snakeCase; + lodash.some = some; + lodash.sortedIndex = sortedIndex; + lodash.sortedIndexBy = sortedIndexBy; + lodash.sortedIndexOf = sortedIndexOf; + lodash.sortedLastIndex = sortedLastIndex; + lodash.sortedLastIndexBy = sortedLastIndexBy; + lodash.sortedLastIndexOf = sortedLastIndexOf; + lodash.startCase = startCase; + lodash.startsWith = startsWith; + lodash.subtract = subtract; + lodash.sum = sum; + lodash.sumBy = sumBy; + lodash.template = template; + lodash.times = times; + lodash.toFinite = toFinite; + lodash.toInteger = toInteger; + lodash.toLength = toLength; + lodash.toLower = toLower; + lodash.toNumber = toNumber; + lodash.toSafeInteger = toSafeInteger; + lodash.toString = toString; + lodash.toUpper = toUpper; + lodash.trim = trim; + lodash.trimEnd = trimEnd; + lodash.trimStart = trimStart; + lodash.truncate = truncate; + lodash.unescape = unescape; + lodash.uniqueId = uniqueId; + lodash.upperCase = upperCase; + lodash.upperFirst = upperFirst; + + // Add aliases. + lodash.each = forEach; + lodash.eachRight = forEachRight; + lodash.first = head; + + mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; + }()), { 'chain': false }); + + /*------------------------------------------------------------------------*/ + + /** + * The semantic version number. + * + * @static + * @memberOf _ + * @type {string} + */ + lodash.VERSION = VERSION; + + // Assign default placeholders. + arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { + lodash[methodName].placeholder = lodash; + }); + + // Add `LazyWrapper` methods for `_.drop` and `_.take` variants. + arrayEach(['drop', 'take'], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n) { + n = n === undefined ? 1 : nativeMax(toInteger(n), 0); + + var result = (this.__filtered__ && !index) + ? new LazyWrapper(this) + : this.clone(); + + if (result.__filtered__) { + result.__takeCount__ = nativeMin(n, result.__takeCount__); + } else { + result.__views__.push({ + 'size': nativeMin(n, MAX_ARRAY_LENGTH), + 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') + }); + } + return result; + }; + + LazyWrapper.prototype[methodName + 'Right'] = function(n) { + return this.reverse()[methodName](n).reverse(); + }; + }); + + // Add `LazyWrapper` methods that accept an `iteratee` value. + arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { + var type = index + 1, + isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + + LazyWrapper.prototype[methodName] = function(iteratee) { + var result = this.clone(); + result.__iteratees__.push({ + 'iteratee': getIteratee(iteratee, 3), + 'type': type + }); + result.__filtered__ = result.__filtered__ || isFilter; + return result; + }; + }); + + // Add `LazyWrapper` methods for `_.head` and `_.last`. + arrayEach(['head', 'last'], function(methodName, index) { + var takeName = 'take' + (index ? 'Right' : ''); + + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; + }); + + // Add `LazyWrapper` methods for `_.initial` and `_.tail`. + arrayEach(['initial', 'tail'], function(methodName, index) { + var dropName = 'drop' + (index ? '' : 'Right'); + + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; + }); + + LazyWrapper.prototype.compact = function() { + return this.filter(identity); + }; + + LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); + }; + + LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); + }; + + LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == 'function') { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); + }); + + LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(getIteratee(predicate))); + }; + + LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + + var result = this; + if (result.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result); + } + if (start < 0) { + result = result.takeRight(-start); + } else if (start) { + result = result.drop(start); + } + if (end !== undefined) { + end = toInteger(end); + result = end < 0 ? result.dropRight(-end) : result.take(end - start); + } + return result; + }; + + LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); + }; + + LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); + }; + + // Add `LazyWrapper` methods to `lodash.prototype`. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), + isTaker = /^(?:head|last)$/.test(methodName), + lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], + retUnwrapped = isTaker || /^find/.test(methodName); + + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, + args = isTaker ? [1] : arguments, + isLazy = value instanceof LazyWrapper, + iteratee = args[0], + useLazy = isLazy || isArray(value); + + var interceptor = function(value) { + var result = lodashFunc.apply(lodash, arrayPush([value], args)); + return (isTaker && chainAll) ? result[0] : result; + }; + + if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { + // Avoid lazy use if the iteratee has a "length" value other than `1`. + isLazy = useLazy = false; + } + var chainAll = this.__chain__, + isHybrid = !!this.__actions__.length, + isUnwrapped = retUnwrapped && !chainAll, + onlyLazy = isLazy && !isHybrid; + + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result = func.apply(value, args); + result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); + return new LodashWrapper(result, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result = this.thru(interceptor); + return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; + }; + }); + + // Add `Array` methods to `lodash.prototype`. + arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { + var func = arrayProto[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:pop|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value) { + return func.apply(isArray(value) ? value : [], args); + }); + }; + }); + + // Map minified method names to their real names. + baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = (lodashFunc.name + ''), + names = realNames[key] || (realNames[key] = []); + + names.push({ 'name': methodName, 'func': lodashFunc }); + } + }); + + realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{ + 'name': 'wrapper', + 'func': undefined + }]; + + // Add methods to `LazyWrapper`. + LazyWrapper.prototype.clone = lazyClone; + LazyWrapper.prototype.reverse = lazyReverse; + LazyWrapper.prototype.value = lazyValue; + + // Add chain sequence methods to the `lodash` wrapper. + lodash.prototype.at = wrapperAt; + lodash.prototype.chain = wrapperChain; + lodash.prototype.commit = wrapperCommit; + lodash.prototype.next = wrapperNext; + lodash.prototype.plant = wrapperPlant; + lodash.prototype.reverse = wrapperReverse; + lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue; + + // Add lazy aliases. + lodash.prototype.first = lodash.prototype.head; + + if (symIterator) { + lodash.prototype[symIterator] = wrapperToIterator; + } + return lodash; + }); + + /*--------------------------------------------------------------------------*/ + + // Export lodash. + var _ = runInContext(); + + // Some AMD build optimizers, like r.js, check for condition patterns like: + if (true) { + // Expose Lodash on the global object to prevent errors when Lodash is + // loaded by a script tag in the presence of an AMD loader. + // See http://requirejs.org/docs/errors.html#mismatch for more details. + // Use `_.noConflict` to remove Lodash from the global object. + root._ = _; + + // Define as an anonymous module so, through path mapping, it can be + // referenced as the "underscore" module. + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return _; + }.call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } + // Check for `exports` after `define` in case a build optimizer adds it. + else if (freeModule) { + // Export for Node.js. + (freeModule.exports = _)._ = _; + // Export for CommonJS support. + freeExports._ = _; + } + else { + // Export to the global object. + root._ = _; + } +}.call(this)); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6), __webpack_require__(14)(module))) + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var util = {}; +module.exports = util; + +util.isPipeObject = function (obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.hasOwnProperty('pipe') && _typeof(obj.pipe) === 'object'; +}; + +util.isPipeJson = function (obj) { + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.hasOwnProperty('op') && obj.hasOwnProperty('params'); +}; + +util.isNodeJs = function () { + return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'; +}; + +util.arrayBufferToString = function (buf) { + + if (this.isNodeJs()) { + return buf.toString('utf-8'); + } else { + + if ("TextDecoder" in window) { + return new TextDecoder('utf-8').decode(buf); + } else { + var uint8arr = new Uint8Array(buf); + var utf8str = ''; + var i, + len = uint8arr.length; + for (i = 0; i < len; ++i) { + utf8str += String.fromCharCode(uint8arr[i]); + } + return decodeURIComponent(escape(utf8str)); + } + } +}; + +util.callbackAdapter = function (err, response, resolve, reject, callback) { + if (typeof callback == 'function') { + callback(err, response); + } else { + if (err) { + reject(err); + } else { + resolve(response); + } + } +}; + +module.exports.getUtilObject = function (Flexio) { + + return new function () { + + for (var method in util) { + if (util.hasOwnProperty(method)) { + this[method] = util[method]; + } + } + + this.debug = function (msg) { + var cfg = Flexio.getConfig(); + if (cfg.debug) { + var msg = 'flexio-sdk-js: ' + msg; + + console.log(msg); + } + return this; + }; + }(); +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = { + TASK_OP_CALC: 'calc', + TASK_OP_COMMENT: 'comment', + TASK_OP_CONVERT: 'convert', + TASK_OP_COPY: 'copy', + TASK_OP_CREATE: 'create', + TASK_OP_CUSTOM: 'custom', + TASK_OP_DISTINCT: 'distinct', + TASK_OP_DUMP: 'dump', + TASK_OP_DUPLICATE: 'duplicate', + TASK_OP_ECHO: 'echo', + TASK_OP_EMAIL_SEND: 'email', + TASK_OP_EXECUTE: 'execute', + TASK_OP_FIND_REPLACE: 'replace', + TASK_OP_FILTER: 'filter', + TASK_OP_FOREACH: 'foreach', + TASK_OP_GROUP: 'group', + TASK_OP_INSERT: 'insert', + TASK_OP_LIMIT: 'limit', + TASK_OP_LIST: 'list', + TASK_OP_MERGE: 'merge', + TASK_OP_MKDIR: 'mkdir', + TASK_OP_NOP: 'nop', + TASK_OP_PROMPT: 'prompt', + TASK_OP_R: 'r', + TASK_OP_READ: 'read', + TASK_OP_RENAME: 'rename', + TASK_OP_RENDER: 'render', + TASK_OP_REQUEST: 'request', + TASK_OP_SEARCH: 'search', + TASK_OP_SELECT: 'select', + TASK_OP_SEQUENCE: 'sequence', + TASK_OP_SET: 'set', + TASK_OP_SLEEP: 'sleep', + TASK_OP_SORT: 'sort', + TASK_OP_TRANSFORM: 'transform', + TASK_OP_WRITE: 'write' +}; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(7); +var isBuffer = __webpack_require__(17); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object' && !isArray(obj)) { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = merge(result[key], val); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim +}; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var utils = __webpack_require__(3); +var normalizeHeaderName = __webpack_require__(19); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(8); + } else if (typeof process !== 'undefined') { + // For node use HTTP adapter + adapter = __webpack_require__(8); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 6 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var utils = __webpack_require__(3); +var settle = __webpack_require__(20); +var buildURL = __webpack_require__(22); +var parseHeaders = __webpack_require__(23); +var isURLSameOrigin = __webpack_require__(24); +var createError = __webpack_require__(9); +var btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(25); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + var loadEvent = 'onreadystatechange'; + var xDomain = false; + + // For IE 8/9 CORS support + // Only supports POST and GET calls and doesn't returns the response headers. + // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest. + if (process.env.NODE_ENV !== 'test' && + typeof window !== 'undefined' && + window.XDomainRequest && !('withCredentials' in request) && + !isURLSameOrigin(config.url)) { + request = new window.XDomainRequest(); + loadEvent = 'onload'; + xDomain = true; + request.onprogress = function handleProgress() {}; + request.ontimeout = function handleTimeout() {}; + } + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = config.auth.password || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request[loadEvent] = function handleLoad() { + if (!request || (request.readyState !== 4 && !xDomain)) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) + status: request.status === 1223 ? 204 : request.status, + statusText: request.status === 1223 ? 'No Content' : request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + var cookies = __webpack_require__(26); + + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (config.withCredentials) { + request.withCredentials = true; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (requestData === undefined) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var enhanceError = __webpack_require__(21); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + + +var Flexio = __webpack_require__(13); + +exports.default = Flexio; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var _ = __webpack_require__(0); +var axios = __webpack_require__(15); +var task = __webpack_require__(34); + +var base_url = 'https://www.flex.io/api/v1'; + +var cfg = { + token: '', + baseUrl: 'https://www.flex.io/api/v1', + insecure: false, + debug: false +}; + +var pipeToCode = function pipeToCode(task_arr) { + var retval = _.map(task_arr, function (t) { + var cmd_str = Flexio.task.toCode(t); + + if (_.get(t, 'params.lang', '') != 'python') cmd_str = cmd_str.replace(/\n/g, '\n '); + + return cmd_str; + }); + + var retval = ['Flexio.pipe()'].concat(retval); + + return retval.join('\n .'); +}; + +var Flexio = { + version: __webpack_require__(63).version, + + _init: function _init() { + this.connections = __webpack_require__(64).getConnectionsObject(this); + this.pipes = __webpack_require__(65).getPipesObject(this); + this.util = __webpack_require__(1).getUtilObject(this); + this._http = null; + + var getPipeConstructor = __webpack_require__(66).getPipeConstructor; + this.pipe = getPipeConstructor(this); + + + var getConnectionConstructor = __webpack_require__(67).getConnectionConstructor; + this.connection = getConnectionConstructor(this); + }, + setup: function setup(token, params) { + cfg = _.assign(cfg, { token: token }, params); + this._http = null; + this._createHttp(); + return this; + }, + getConfig: function getConfig() { + return _.assign({}, cfg); + }, + http: function http() { + if (!this._http) this._createHttp(); + + return this._http; + }, + + + task: task, + + _createHttp: function _createHttp() { + var axios_opts = { + baseURL: cfg.baseUrl, + headers: { 'Authorization': 'Bearer ' + cfg.token } + }; + + if (cfg.insecure === true) process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; + + this._http = axios.create(axios_opts); + } +}; + +Flexio._init(); + +module.exports = Flexio; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) + +/***/ }), +/* 14 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(16); + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var bind = __webpack_require__(7); +var Axios = __webpack_require__(18); +var defaults = __webpack_require__(5); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(utils.merge(defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(11); +axios.CancelToken = __webpack_require__(32); +axios.isCancel = __webpack_require__(10); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(33); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + + +/***/ }), +/* 17 */ +/***/ (function(module, exports) { + +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ + +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} + +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} + + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var defaults = __webpack_require__(5); +var utils = __webpack_require__(3); +var InterceptorManager = __webpack_require__(27); +var dispatchRequest = __webpack_require__(28); +var isAbsoluteURL = __webpack_require__(30); +var combineURLs = __webpack_require__(31); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = utils.merge({ + url: arguments[0] + }, arguments[1]); + } + + config = utils.merge(defaults, this.defaults, { method: 'get' }, config); + config.method = config.method.toLowerCase(); + + // Support baseURL config + if (config.baseURL && !isAbsoluteURL(config.url)) { + config.url = combineURLs(config.baseURL, config.url); + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(utils.merge(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createError = __webpack_require__(9); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + // Note: status is not exposed by XDomainRequest + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + error.request = request; + error.response = response; + return error; +}; + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +function encode(val) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } + + if (!utils.isArray(val)) { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; + + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js + +var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + +function E() { + this.message = 'String contains an invalid character'; +} +E.prototype = new Error; +E.prototype.code = 5; +E.prototype.name = 'InvalidCharacterError'; + +function btoa(input) { + var str = String(input); + var output = ''; + for ( + // initialize result and counter + var block, charCode, idx = 0, map = chars; + // if the next str index does not exist: + // change the mapping table to "=" + // check if d has no fractional digits + str.charAt(idx | 0) || (map = '=', idx % 1); + // "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8 + output += map.charAt(63 & block >> 8 - idx % 1 * 8) + ) { + charCode = str.charCodeAt(idx += 3 / 4); + if (charCode > 0xFF) { + throw new E(); + } + block = block << 8 | charCode; + } + return output; +} + +module.exports = btoa; + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); +var transformData = __webpack_require__(29); +var isCancel = __webpack_require__(10); +var defaults = __webpack_require__(5); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers || {} + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(3); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Cancel = __webpack_require__(11); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var taskOps = __webpack_require__(2); + +var createFn = __webpack_require__(35); +var convertFn = __webpack_require__(36); +var copyFn = __webpack_require__(37); +var dumpFn = __webpack_require__(38); +var echoFn = __webpack_require__(39); +var emailFn = __webpack_require__(40); +var executeFn = __webpack_require__(41); +var filterFn = __webpack_require__(46); +var foreachFn = __webpack_require__(47); +var insertFn = __webpack_require__(48); +var limitFn = __webpack_require__(49); +var mergeFn = __webpack_require__(50); +var mkdirFn = __webpack_require__(51); +var listFn = __webpack_require__(52); +var readFn = __webpack_require__(53); +var renderFn = __webpack_require__(54); +var requestFn = __webpack_require__(55); +var selectFn = __webpack_require__(56); +var sequenceFn = __webpack_require__(57); +var setFn = __webpack_require__(58); +var sleepFn = __webpack_require__(59); +var taskFn = __webpack_require__(60); +var transformFn = __webpack_require__(61); +var writeFn = __webpack_require__(62); + +var toCode = function toCode(json, Flexio) { + var op = _.get(json, 'op', ''); + + switch (op) { + default: + return taskFn.toCode(json); + + case taskOps.TASK_OP_CREATE: + return createFn.toCode(json, Flexio); + case taskOps.TASK_OP_CONVERT: + return convertFn.toCode(json, Flexio); + case taskOps.TASK_OP_COPY: + return copyFn.toCode(json, Flexio); + case taskOps.TASK_OP_DUMP: + return dumpFn.toCode(json, Flexio); + case taskOps.TASK_OP_ECHO: + return echoFn.toCode(json, Flexio); + case taskOps.TASK_OP_EMAIL_SEND: + return emailFn.toCode(json, Flexio); + case taskOps.TASK_OP_EXECUTE: + return executeFn.toCode(json, Flexio); + case taskOps.TASK_OP_FILTER: + return filterFn.toCode(json, Flexio); + case taskOps.TASK_OP_FOREACH: + return foreachFn.toCode(json, Flexio); + case taskOps.TASK_OP_INSERT: + return insertFn.toCode(json, Flexio); + case taskOps.TASK_OP_LIMIT: + return limitFn.toCode(json, Flexio); + case taskOps.TASK_OP_LIST: + return listFn.toCode(json, Flexio); + case taskOps.TASK_OP_MERGE: + return mergeFn.toCode(json, Flexio); + case taskOps.TASK_OP_MKDIR: + return mkdirFn.toCode(json, Flexio); + case taskOps.TASK_OP_READ: + return readFn.toCode(json, Flexio); + case taskOps.TASK_OP_RENDER: + return renderFn.toCode(json, Flexio); + case taskOps.TASK_OP_REQUEST: + return requestFn.toCode(json, Flexio); + case taskOps.TASK_OP_SELECT: + return selectFn.toCode(json, Flexio); + case taskOps.TASK_OP_SEQUENCE: + return sequenceFn.toCode(json, Flexio); + case taskOps.TASK_OP_SET: + return setFn.toCode(json, Flexio); + case taskOps.TASK_OP_SLEEP: + return sleepFn.toCode(json, Flexio); + case taskOps.TASK_OP_TRANSFORM: + return transformFn.toCode(json, Flexio); + case taskOps.TASK_OP_WRITE: + return writeFn.toCode(json, Flexio); + } +}; + +module.exports = { + create: createFn, + convert: convertFn, + copy: copyFn, + dump: dumpFn, + echo: echoFn, + email: emailFn, + execute: executeFn.execute, + insert: insertFn, + filter: filterFn, + + foreach: foreachFn, + javascript: executeFn.javascript, + limit: limitFn, + list: listFn, + merge: mergeFn, + mkdir: mkdirFn, + python: executeFn.python, + read: readFn, + render: renderFn, + request: requestFn, + select: selectFn, + sequence: sequenceFn, + set: setFn, + sleep: sleepFn, + task: taskFn, + transform: transformFn, + write: writeFn, + + toCode: toCode +}; + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var create = function create(p0, p1) { + + if (Array.isArray(p0)) { + return { + op: taskOps.TASK_OP_CREATE, + params: { + content_type: "application/vnd.flexio.table", + columns: p0 + } + }; + } else { + var ret = { + op: taskOps.TASK_OP_CREATE, + params: { + path: p0 + } + }; + + if (p1 !== undefined) { + if (Array.isArray(p1)) { + ret.params.columns = p1; + } else { + ret.params.content_type = p1; + } + } + + return ret; + } +}; + +create.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || undefined; + var content_type = JSON.stringify(params.content_type) || undefined; + var columns = JSON.stringify(params.columns) || undefined; + + if (path !== undefined) { + + if (columns !== undefined) { + return 'create(' + path + ', ' + columns + ')'; + } else if (content_type !== undefined) { + return 'create(' + path + ', ' + content_type + ')'; + } else { + return 'create(' + path + ')'; + } + } else { + + if (columns !== undefined) { + return 'create(' + columns + ')'; + } else if (content_type !== undefined) { + return ''; + } + } +}; + +module.exports = create; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var DELIMITER_NONE = '{none}'; +var DELIMITER_COMMA = '{comma}'; +var DELIMITER_SEMICOLON = '{semicolon}'; +var DELIMITER_PIPE = '{pipe}'; +var DELIMITER_TAB = '{tab}'; +var DELIMITER_SPACE = '{space}'; + +var TEXT_QUALIFIER_NONE = '{none}'; +var TEXT_QUALIFIER_SINGLE_QUOTE = '{single-quote}'; +var TEXT_QUALIFIER_DOUBLE_QUOTE = '{double-quote}'; + +var FORMAT_DELIMITED_TEXT = 'delimited'; +var FORMAT_FIXED_LENGTH = 'fixed'; +var FORMAT_JSON = 'json'; +var FORMAT_RSS = 'rss'; +var FORMAT_PDF = 'pdf'; +var FORMAT_TABLE = 'table'; + +var SHORTHAND_CSV = 'csv'; +var SHORTHAND_TSV = 'tsv'; + +var FORMAT_CSV = { + format: FORMAT_DELIMITED_TEXT, + delimiter: DELIMITER_COMMA, + header: true, + qualifier: TEXT_QUALIFIER_DOUBLE_QUOTE +}; + +var FORMAT_TSV = { + format: FORMAT_DELIMITED_TEXT, + delimiter: DELIMITER_TAB, + header: true, + qualifier: TEXT_QUALIFIER_NONE +}; + +var convert = function convert(input, output) { + + var task = { + op: taskOps.TASK_OP_CONVERT, + params: {} + }; + + if (_.isString(input)) { + if (input == SHORTHAND_CSV) _.set(task, 'params.input', FORMAT_CSV);else if (input == SHORTHAND_TSV) _.set(task, 'params.input', FORMAT_TSV);else _.set(task, 'params.input.format', input); + } else if (_.isPlainObject(input)) { + _.set(task, 'params.input', input); + } + + if (_.isString(output)) { + if (output == SHORTHAND_CSV) _.set(task, 'params.output', FORMAT_CSV);else if (output == SHORTHAND_TSV) _.set(task, 'params.output', FORMAT_TSV);else _.set(task, 'params.output.format', output); + } else if (_.isPlainObject(output)) { + _.set(task, 'params.output', output); + } + + return task; +}; + +convert.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var input = _.get(params, 'input', {}); + var output = _.get(params, 'output', {}); + + var p1; + var p2; + + if (_.isEqual(input, FORMAT_CSV)) p1 = SHORTHAND_CSV; + if (_.isEqual(output, FORMAT_CSV)) p2 = SHORTHAND_CSV; + + if (_.isEqual(input, FORMAT_TSV)) p1 = SHORTHAND_TSV; + if (_.isEqual(output, FORMAT_TSV)) p2 = SHORTHAND_TSV; + + if (_.isEmpty(_.omit(input, ['format']))) p1 = _.get(input, 'format', ''); + if (_.isEmpty(_.omit(output, ['format']))) p2 = _.get(output, 'format', ''); + + if (!p1) p1 = input; + if (!p2) p2 = output; + + return 'convert(' + JSON.stringify(p1) + ', ' + JSON.stringify(p2) + ')'; +}; + +module.exports = convert; + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var copy = function copy(from, to, options) { + var ret = { + op: taskOps.TASK_OP_COPY, + params: { + from: from, + to: to + } + }; + + if (_.isPlainObject(options)) { + ret.params.options = options; + } + return ret; +}; + +copy.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var from = JSON.stringify(params.from) || '""'; + var to = JSON.stringify(params.to) || '""'; + var options = params.hasOwnProperty('options') && _.isPlainObject(params.options) ? JSON.stringify(params.options) : null; + + var ret = 'copy(' + from + ', ' + to; + if (options !== null) { + ret += ', ' + options; + } + return ret + ')'; +}; + +module.exports = copy; + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var dump = function dump(msg) { + return { + op: taskOps.TASK_OP_DUMP, + params: { + msg: msg + } + }; +}; + +dump.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var msg = JSON.stringify(params.msg) || '""'; + return 'dump(' + msg + ')'; +}; + +module.exports = dump; + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var echo = function echo(msg) { + return { + op: taskOps.TASK_OP_ECHO, + params: { + msg: msg + } + }; +}; + +echo.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var msg = JSON.stringify(params.msg) || '""'; + return 'echo(' + msg + ')'; +}; + +module.exports = echo; + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var email = function email(params) { + if (!_.isPlainObject(params)) throw 'The first function parameter must be an object'; + + if (!_.has(params, 'to')) throw 'The `to` parameter is required'; + + if (!_.has(params, 'body_text')) throw 'The `body_text` parameter is required'; + + return { + op: taskOps.TASK_OP_EMAIL_SEND, + params: params + }; +}; + +email.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + return 'email(' + JSON.stringify(params, null, 2) + ')'; +}; + +module.exports = email; + +/***/ }), +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, Buffer) { + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); + +var isNodeJs = function isNodeJs() { + return typeof process !== 'undefined'; +}; + +var toBase64 = function toBase64(str) { + try { + if (isNodeJs()) { + return Buffer(str, 'utf8').toString('base64'); + } else { + return btoa(unescape(encodeURIComponent(str))); + } + } catch (e) { + return e; + } +}; + +var fromBase64 = function fromBase64(str) { + try { + if (isNodeJs()) { + return Buffer.from(str, 'base64').toString('utf8'); + } else { + return decodeURIComponent(escape(atob(str))); + } + } catch (e) { + return e; + } +}; + +var getJsFunctionBody = function getJsFunctionBody(f) { + var body; + + try { + body = f.toString(); + + body = body.substring(body.indexOf('{') + 1, body.lastIndexOf('}')); + } catch (e) { + body = ''; + } + + return body; +}; + +var getJsExport = function getJsExport(f) { + if (_.isString(f)) return f; + + if (_.isFunction(f)) { + var body; + + if (f.length == 0) { + body = getJsFunctionBody(f); + return 'exports.flexio_handler = function(context) ' + body; + } else { + body = f.toString(); + if (body.substring(0, 8) == 'function') { + body = body.slice(8); + } else { + var arrow = body.indexOf('=>'); + var brace = body.indexOf('{'); + + if (arrow >= 0 && arrow < brace) { + body = body.replace('=>\s*{', '{'); + } + } + return 'exports.flexio_handler = function' + body; + } + } +}; + +var execute = function execute() { + var args = Array.from(arguments); + var param0 = _.get(args, '[0]', null); + var param1 = _.get(args, '[1]', null); + var param2 = _.get(args, '[2]', null); + var lang, code, check; + + var task = { + op: taskOps.TASK_OP_EXECUTE, + params: {} + }; + + if (param0 == 'python' || param0 == 'javascript') { + lang = param0; + code = param1; + if (code === null || code === undefined) { + code = ''; + } + check = param2; + } else { + lang = 'javascript'; + code = param0; + check = param1; + } + + if (lang == 'javascript') { + code = getJsExport(code); + } + + _.set(task, 'params.lang', lang); + + var http_regex = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/; + if (code.match(http_regex)) { + _.set(task, 'params.path', code); + } else { + _.set(task, 'params.code', toBase64(code)); + } + + if (check !== null) { + _.set(task, 'params.integrity', check); + } + + return task; +}; + +var javascript = function javascript() { + var args = Array.from(arguments); + args.unshift('javascript'); + return execute.apply(this, args); +}; + +var python = function python() { + var args = Array.from(arguments); + args.unshift('python'); + return execute.apply(this, args); +}; + +var toCode = function toCode(json) { + var params = _.get(json, 'params', {}); + var lang = params.lang || ''; + var code = fromBase64(params.code || ''); + + switch (lang) { + case 'javascript': + code = code.replace('exports.flexio_handler =', ''); + return 'javascript(' + code.trim() + ')'; + case 'python': + return 'python(`\n' + code + '\n`)'; + default: + return 'execute(' + JSON.stringify(lang) + ', `\n' + code + '\n`)'; + } +}; + +module.exports = { + execute: execute, + javascript: javascript, + python: python, + toCode: toCode +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4), __webpack_require__(42).Buffer)) + +/***/ }), +/* 42 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(43) +var ieee754 = __webpack_require__(44) +var isArray = __webpack_require__(45) + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '<Buffer ' + str + '>' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(6))) + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function placeHoldersCount (b64) { + var len = b64.length + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + // base64 is 4/3 + up to two characters of the original data + return (b64.length * 3 / 4) - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, l, tmp, placeHolders, arr + var len = b64.length + placeHolders = placeHoldersCount(b64) + + arr = new Arr((len * 3 / 4) - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len + + var L = 0 + + for (i = 0; i < l; i += 4) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] + arr[L++] = (tmp >> 16) & 0xFF + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[L++] = tmp & 0xFF + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var output = '' + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + output += lookup[tmp >> 2] + output += lookup[(tmp << 4) & 0x3F] + output += '==' + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) + output += lookup[tmp >> 10] + output += lookup[(tmp >> 4) & 0x3F] + output += lookup[(tmp << 2) & 0x3F] + output += '=' + } + + parts.push(output) + + return parts.join('') +} + + +/***/ }), +/* 44 */ +/***/ (function(module, exports) { + +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), +/* 45 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var filter = function filter(where) { + + if (_.isNil(where)) throw 'The `filter` parameter is required'; + + return { + op: taskOps.TASK_OP_FILTER, + params: { + where: where + } + }; +}; + +filter.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var where = JSON.stringify(params.where) || '""'; + return 'filter(' + where + ')'; +}; + +module.exports = filter; + +/***/ }), +/* 47 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var foreach = function foreach(p0, p1) { + + var res = { + op: taskOps.TASK_OP_FOREACH, + params: {} + }; + + if (typeof p0 === 'string' || p0 instanceof String) { + res.params.spec = p0; + } + + if (util.isPipeObject(p0)) { + res.params.run = p0.pipe.task; + } else if (util.isPipeObject(p1)) { + res.params.run = p1.pipe.task; + } + + return res; +}; + +foreach.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}), + p = []; + if (params.hasOwnProperty('spec')) { + p.push(JSON.stringify(params.spec)); + } + if (params.hasOwnProperty('run')) { + p.push(Flexio.task.toCode(params.run, Flexio)); + } + + return 'foreach(' + p.join(', ') + ')'; +}; + +module.exports = foreach; + +/***/ }), +/* 48 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var insert = function insert(path, values) { + + var data; + if (Array.isArray(values)) data = values;else data = [values]; + + return { + op: taskOps.TASK_OP_INSERT, + params: { + path: path, + values: data + } + }; +}; + +insert.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = _.get(params, 'path', undefined); + var values = _.get(params, 'values', undefined); + + if (!Array.isArray(values)) values = [values]; + + path = JSON.stringify(path); + values = JSON.stringify(values); + + return 'insert(' + path + ', ' + values + ')'; +}; + +module.exports = insert; + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var limit = function limit(value) { + value = _.defaultTo(value, 10); + + return { + op: taskOps.TASK_OP_LIMIT, + params: { + value: value + } + }; +}; + +limit.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var val = JSON.stringify(params.value) || ''; + return 'limit(' + val + ')'; +}; + +module.exports = limit; + +/***/ }), +/* 50 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var merge = function merge(path) { + + if (Array.isArray(path)) { + var files = path; + } else { + var files = []; + for (var i = 0; i < arguments.length; ++i) { + files.push(arguments[i]); + } + } + + return { + op: taskOps.TASK_OP_MERGE, + params: { + files: files + } + }; +}; + +merge.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var files = _.get(params, 'files', []); + for (var i = 0; i < files.length; ++i) { + if (typeof files[i] === 'string' || files[i] instanceof String) { + files[i] = JSON.stringify(files[i]); + } else { + files[i] = Flexio.merge.toCode(files[i], Flexio); + } + } + + var param = files.length >= 10 ? '[' + files.join(', ') + ']' : files.join(', '); + return 'merge(' + param + ')'; +}; + +module.exports = merge; + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var mkdir = function mkdir(path) { + return { + op: taskOps.TASK_OP_MKDIR, + params: { + path: path + } + }; +}; + +mkdir.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'mkdir(' + path + ')'; +}; + +module.exports = mkdir; + +/***/ }), +/* 52 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var list = function list(path) { + return { + op: taskOps.TASK_OP_LIST, + params: { + path: path + } + }; +}; + +list.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'list(' + path + ')'; +}; + +module.exports = list; + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var read = function read(path) { + return { + op: taskOps.TASK_OP_READ, + params: { + path: path + } + }; +}; + +read.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'read(' + path + ')'; +}; + +module.exports = read; + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); + +var defaults = { + format: 'png', + width: 800, + height: 600, + scrollbars: false +}; + +var render = function render(url, options) { + var args = Array.from(arguments); + var url = _.get(args, '[0]', ''); + var params = _.get(args, '[1]', {}); + + if (_.isNil(url)) throw 'The `url` parameter is required'; + + if (_.isPlainObject(_.get(args, '[0]', {}))) { + var params = _.get(args, '[0]', {}); + } else { + var params = _.assign({}, defaults, options, { url: url }); + } + + return { + op: taskOps.TASK_OP_RENDER, + params: params + }; +}; + +render.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var url = JSON.stringify(params.url) || ''; + var opts = _.omit(params, ['url']); + + if (_.isEqual(opts, defaults)) return 'render(' + url + ')';else return 'render(' + url + ', ' + JSON.stringify(opts, null, 2) + ')'; +}; + +module.exports = render; + +/***/ }), +/* 55 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var request = function request() { + var args = Array.from(arguments); + var url = _.get(args, '[0]', ''); + var params = _.get(args, '[1]', {}); + + if (_.isPlainObject(_.get(args, '[0]', {}))) { + params = _.get(args, '[0]', {}); + } else { + params = _.assign({}, { url: url }, params); + } + + params = _.assign({ method: 'GET' }, params); + + return { + op: taskOps.TASK_OP_REQUEST, + params: params + }; +}; + +request.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var url = _.get(params, 'url', ''); + var opts = _.omit(params, ['url']); + if (_.get(opts, 'method', '') == 'GET') opts = _.omit(opts, ['method']); + + if (_.isEmpty(opts)) return 'request(' + JSON.stringify(url) + ')';else return 'request(' + JSON.stringify(url) + ', ' + JSON.stringify(opts, null, 2) + ')'; +}; + +module.exports = request; + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var select = function select() { + var columns = Array.from(arguments); + + if (columns.length == 1 && _.isArray(_.get(columns, '[0]'))) columns = _.get(columns, '[0]', []); + + return { + op: taskOps.TASK_OP_SELECT, + params: { + columns: columns + } + }; +}; + +select.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var cols = JSON.stringify(params.columns) || ''; + if (cols.indexOf('[') != -1 && cols.indexOf(']') != -1) cols = cols.substring(1, cols.length - 1); + return 'select(' + cols + ')'; +}; + +module.exports = select; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var sequence = function sequence(steps) { + + return { + op: taskOps.TASK_OP_SEQUENCE, + params: { + steps: steps + } + }; +}; + +sequence.toCode = function (json, Flexio) { + var retval = _.map(json.params.items, function (t) { + + var cmd_str = Flexio.task.toCode(t, Flexio); + + if (_.get(t, 'params.lang', '') != 'python') cmd_str = cmd_str.replace(/\n/g, '\n '); + + return cmd_str; + }); + + var retval = ['Flexio.pipe()'].concat(retval); + + return retval.join('\n .'); +}; + +module.exports = sequence; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var set = function set(variable, value) { + + if (util.isPipeObject(value)) value = value.pipe.task; + + return { + op: taskOps.TASK_OP_SET, + params: { + "var": variable, + "value": value + } + }; +}; + +set.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var variable = _.get(params, 'variable', ''); + var value = _.get(params, 'value', ''); + + variable = JSON.stringify(variable); + + if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null && value.hasOwnProperty('op')) { + value = Flexio.task.toCode(value, Flexio); + } else { + value = JSON.stringify(value); + } + + return 'set(' + variable + ', ' + value + ')'; +}; + +module.exports = set; + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var sleep = function sleep(value) { + value = _.defaultTo(value, 10); + + return { + op: taskOps.TASK_OP_SLEEP, + params: { + value: value + } + }; +}; + +sleep.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var val = JSON.stringify(params.value) || ''; + return 'sleep(' + val + ')'; +}; + +module.exports = sleep; + +/***/ }), +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var task = function task(json) { + return json; +}; + +task.toCode = function (json, Flexio) { + return 'task(' + JSON.stringify(json, null, 2) + ')'; +}; + +module.exports = task; + +/***/ }), +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var transform = function transform(value) { + var args = Array.from(arguments); + + var default_params = { operations: [] }; + var params = {}; + var columns = undefined; + var operations = []; + + var arg1 = _.get(args, '[0]'); + + if (_.isPlainObject(arg1)) { + if (args.length == 1 && _.has(arg1, 'operations')) { + params = _.pick(arg1, ['columns', 'operations']); + params = _.assign(default_params, params); + } else { + operations = [].concat(args); + params = { operations: operations }; + } + + return { + op: taskOps.TASK_OP_TRANSFORM, + params: params + }; + } + + return { + op: taskOps.TASK_OP_TRANSFORM, + params: { + columns: columns, + operations: operations + } + }; +}; + +transform.toCode = function (json, Flexio) { + var params = json.hasOwnProperty('params') ? json.params : {}; + if (!params.hasOwnProperty('columns') && params.hasOwnProperty('operations') && Array.isArray(params.operations) && params.operations.length == 1) return "transform(" + JSON.stringify(params.operations[0]) + ")"; + return "transform(" + JSON.stringify(params) + ")"; +}; + +module.exports = transform; + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); +var taskOps = __webpack_require__(2); +var write = function write(path) { + return { + op: taskOps.TASK_OP_WRITE, + params: { + path: path + } + }; +}; + +write.toCode = function (json, Flexio) { + var params = _.get(json, 'params', {}); + var path = JSON.stringify(params.path) || '""'; + return 'write(' + path + ')'; +}; + +module.exports = write; + +/***/ }), +/* 63 */ +/***/ (function(module, exports) { + +module.exports = {"name":"flexio-sdk-js","version":"1.20.2","description":"Javascript SDK for managing Flex.io resources and services","author":"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js","main":"src/main.js","--browser":"src/main.js","browser":"dist/flexio.min.js","scripts":{"dev":"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js","build":"npm run build:debug && npm run build:release && npm run build:examples","test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/flexiodata/flexio-sdk-js.git"},"keywords":[],"license":"Apache-2.0","bugs":{"url":"https://github.com/flexiodata/flexio-sdk-js/issues"},"homepage":"https://github.com/flexiodata/flexio-sdk-js/","dependencies":{"axios":"^0.16.2","lodash":"^4.17.4","vue-highlightjs":"^1.3.3"},"devDependencies":{"autoprefixer":"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-lodash":"^3.2.11","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0","vue":"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4","webpack":"^3.5.5","webpack-dev-server":"^2.8.2"}} + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); +var util = __webpack_require__(1); + +module.exports = {}; +module.exports.getConnectionsObject = function (Flexio) { + + return new function () { + + this.create = function (conn, callback) { + + var data; + if (_.isPlainObject(conn)) { + data = conn; + } else if (conn instanceof Flexio.connection) { + data = conn.connection; + } else { + throw "Unknown connection object type"; + } + + return new Promise(function (resolve, reject) { + Flexio.http().post('/connections', data).then(function (response) { + Flexio.util.callbackAdapter(null, response.data, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Flexio.connections.create(): Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.list = function (callback) { + var args = Array.from(arguments); + var callback = _.get(args, '[0]'); + + return new Promise(function (resolve, reject) { + Flexio.util.debug('Requesting Connections...'); + Flexio.http().get('/connections').then(function (response) { + var items = _.get(response, 'data', []); + Flexio.util.debug('Success!'); + Flexio.util.callbackAdapter(null, items, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + }(); +}; + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); + +module.exports = {}; +module.exports.getPipesObject = function (Flexio) { + + return new function () { + + this.create = function (pipe, callback) { + + var data; + if (_.isPlainObject(pipe)) { + data = pipe; + } else if (pipe instanceof Flexio.pipe) { + data = pipe.pipe; + } else { + throw "Unknown pipe object type"; + } + + return new Promise(function (resolve, reject) { + Flexio.http().post('/pipes', data).then(function (response) { + Flexio.util.callbackAdapter(null, response.data, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Flexio.pipes.create(): Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.list = function (callback) { + var args = Array.from(arguments); + var callback = _.get(args, '[0]'); + + return new Promise(function (resolve, reject) { + Flexio.util.debug('Requesting Pipes...'); + + Flexio.http().get('/pipes').then(function (response) { + var items = _.get(response, 'data', []); + Flexio.util.debug('Success!'); + Flexio.util.callbackAdapter(null, items, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Failed.'); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }); + }; + + this.run = function () { + var args = Array.from(arguments); + args.push(null, null, null); + + var run_params = {}; + var callback; + var pipe_identifier; + var tasks_array = null; + + if (args[0] instanceof Flexio.pipe) { + pipe_identifier = _.get(args[0], 'pipe.eid', ''); + tasks_array = _.get(args[0], 'pipe.task', ''); + } else if (Array.isArray(args[0])) { + pipe_identifier = ''; + tasks_array = args[0]; + } else { + pipe_identifier = args[0]; + } + + if (_.isPlainObject(args[1])) { + run_params = args[1]; + } + + if (_.isFunction(args[1])) { + callback = args[1]; + } else if (_.isFunction(args[2])) { + callback = args[2]; + } else { + callback = null; + } + + var getResponseObjectFromArrayBuffer = function getResponseObjectFromArrayBuffer(arraybuffer, content_type) { + return { + contentType: content_type, + buffer: arraybuffer, + get blob() { + return new Blob([this.buffer], { "type": content_type }); + }, + get text() { + return Flexio.util.arrayBufferToString(this.buffer); + }, + get data() { + try { + return JSON.parse(Flexio.util.arrayBufferToString(this.buffer)); + } catch (e) { + return null; + } + } + }; + }; + + return new Promise(function (resolve, reject) { + + Flexio.util.debug('Running Pipe `' + (pipe_identifier.length == 0 ? '[Pipe Object/Task Array]' : pipe_identifier) + '`...'); + + if (pipe_identifier.length == 0) { + + var create_params = { + name: 'SDK Pipe', + description: 'SDK Pipe', + task: tasks_array, + + process_mode: 'R' + }; + + Flexio.http().post('/processes', create_params).then(function (response) { + var obj = _.get(response, 'data', {}); + var process_eid = _.get(obj, 'eid', ''); + Flexio.util.debug('Created Process.'); + + var http_config = { + method: 'post', + url: '/processes/' + process_eid + '/run', + responseType: 'arraybuffer' + }; + + if (run_params.hasOwnProperty('data')) { + http_config.data = run_params.data; + } + + if (run_params.hasOwnProperty('query')) { + http_config.params = run_params.query; + } + + var http = Flexio.http(); + http(http_config).then(function (response) { + Flexio.util.debug('Process Complete.'); + var content_type = _.get(response, 'headers.content-type', 'text/plain'); + var response_object = getResponseObjectFromArrayBuffer(response.data, content_type); + Flexio.util.callbackAdapter(null, response_object, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Process Run Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + }).catch(function (error) { + Flexio.util.debug('Process Create Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + } else { + + var http_config = { + method: 'post', + url: '/pipes/' + pipe_identifier + '/run', + responseType: 'arraybuffer' + }; + + if (run_params.hasOwnProperty('data')) { + http_config.data = run_params.data; + } + + if (run_params.hasOwnProperty('query')) { + http_config.params = run_params.query; + } + + if (run_params.hasOwnProperty('contentType')) { + http_config.headers = { 'Content-Type': run_params.contentType }; + } else { + if (http_config.hasOwnProperty('data')) { + if (_.isPlainObject(http_config.data)) {} else if (_.isString(http_config.data)) { + http_config.headers = { 'Content-Type': 'text/plain' }; + } else { + http_config.headers = { 'Content-Type': 'application/octet-stream' }; + } + } + } + + var http = Flexio.http(); + http(http_config).then(function (response) { + Flexio.util.debug('Process Complete.'); + var content_type = _.get(response, 'headers.content-type', 'text/plain'); + var response_object = getResponseObjectFromArrayBuffer(response.data, content_type); + Flexio.util.callbackAdapter(null, response_object, resolve, reject, callback); + }).catch(function (error) { + Flexio.util.debug('Pipe Run Call Failed. ' + error); + Flexio.util.callbackAdapter(error, null, resolve, reject, callback); + }); + } + }); + }; + }(); +}; + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _ = __webpack_require__(0); + +module.exports = {}; +module.exports.getPipeConstructor = function (Flexio) { + + return function (pipeconstruct_param) { + + if (!(this instanceof Flexio.pipe)) { + return new Flexio.pipe(pipeconstruct_param); + } + + var pipeobj = _.assign(this, { + + pipe: { + name: 'Untitled', + description: '', + task: { op: 'sequence', params: { items: [] } } + }, + processes: [], + _params: {}, + loading: false, + saving: false, + running: false, + + getJSON: function getJSON() { + return _.assign({}, this.pipe); + }, + getProcesses: function getProcesses() { + return [].concat(this.processes); + }, + getLastProcess: function getLastProcess() { + return _.last(this.processes); + }, + addTask: function addTask(task) { + this.pipe.task.params.items.push(task); + return this; + }, + clearTasks: function clearTasks() { + this.pipe.task.params.items = []; + return this; + }, + getTasks: function getTasks() { + return this.pipe.task.params.items; + }, + load: function load() { + var _this = this, + _arguments = arguments; + + var args = Array.from(arguments); + var identifier = _.get(args, '[0]'); + var callback = _.get(args, '[1]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this.load.apply(_this, _arguments); + }, 50); + return this; + } + + if (_.isNil(identifier)) return Flexio.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."); + + this.loading = true; + Flexio.util.debug('Loading Pipe `' + identifier + '`...'); + + Flexio.http().get('/pipes/' + identifier).then(function (response) { + var obj = _.get(response, 'data', {}); + _this.pipe = _.assign({}, obj); + _this.loading = false; + Flexio.util.debug('Pipe Loaded.'); + + if (typeof callback == 'function') callback.call(_this, null, obj); + }).catch(function (error) { + _this.loading = false; + Flexio.util.debug('Pipe Load Failed. '); + + if (typeof callback == 'function') callback.call(_this, error, null); + }); + + return this; + }, + save: function save() { + var _this2 = this, + _arguments2 = arguments; + + var args = Array.from(arguments); + var params = _.get(args, '[0]'); + var callback = _.get(args, '[0]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this2.save.apply(_this2, _arguments2); + }, 50); + return this; + } + + if (_.isPlainObject(params)) { + _.assign(this.pipe, _.pick(params, ['name', 'description', 'ename'])); + callback = _.get(args, '[1]'); + } + + this.saving = true; + Flexio.util.debug('Saving Pipe `' + _.get(this.pipe, 'name', 'Untitled Pipe') + '`...'); + + Flexio.http().post('/pipes', this.pipe).then(function (response) { + var pipe = _.get(response, 'data', {}); + _this2.pipe = _.assign({}, pipe); + _this2.saving = false; + Flexio.util.debug('Pipe Saved.'); + + if (typeof callback == 'function') callback.call(_this2, null, _this2.pipe); + }).catch(function (error) { + _this2.saving = false; + Flexio.util.debug('Pipe Save Failed.'); + + if (typeof callback == 'function') callback.call(_this2, error, null); + }); + + return this; + }, + run: function run() { + var args = Array.from(arguments); + args.unshift(this); + return Flexio.pipes.run.apply(null, args); + }, + params: function params(_params) { + this._params = _.assign({}, this.getParams(), _params); + return this; + }, + clearParams: function clearParams(keys) { + if (_.isArray(keys)) this._params = _.omit(this._params, keys);else if (_.isNil(keys)) this._params = {}; + + return this; + }, + getParams: function getParams() { + return _.assign({}, this._params); + }, + toCode: function toCode(p) { + return Flexio.task.toCode(this.pipe.task, Flexio); + } + }); + + _.each(Flexio.task, function (taskFn, task_name) { + if (task_name != 'toCode') { + pipeobj[task_name] = function () { + return pipeobj.addTask(taskFn.apply(pipeobj, arguments)); + }; + } + }); + + if (pipeconstruct_param !== undefined) { + if (typeof pipeconstruct_param === 'string' || pipeconstruct_param instanceof String) { + pipeobj.pipe.eid = pipeconstruct_param; + } else if ((typeof pipeconstruct_param === 'undefined' ? 'undefined' : _typeof(pipeconstruct_param)) === 'object') { + if (pipeconstruct_param.hasOwnProperty('pipe')) { + pipeobj.pipe = JSON.parse(JSON.stringify(pipeconstruct_param.pipe)); + } else if (pipeconstruct_param.hasOwnProperty('task')) { + pipeobj.pipe = JSON.parse(JSON.stringify(pipeconstruct_param)); + } else if (pipeconstruct_param.hasOwnProperty('op')) { + pipeobj.pipe.task = pipeconstruct_param; + } + } + } + + return pipeobj; + }; +}; + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(0); + +var method_types = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']; +var allowed_auth = ['', 'basic', 'bearer', 'oauth2']; + +function toBase64(str) { + try { + return btoa(unescape(encodeURIComponent(str))); + } catch (e) { + return ''; + } +} + +function fromBase64(str) { + try { + return decodeURIComponent(escape(atob(str))); + } catch (e) { + return ''; + } +} + +module.exports = {}; +module.exports.getConnectionConstructor = function (Flexio) { + + return function () { + + if (!(this instanceof Flexio.connection)) { + return new Flexio.connection(); + } + + var retval = _.assign(this, { + + connection: { + name: 'Untitled', + description: '', + connection_type: "http", + connection_info: { + method: '', + url: '', + auth: '', + username: '', + password: '', + token: '', + access_token: '', + refresh_token: '', + expires: '', + data: {}, + headers: {} } + }, + loading: false, + saving: false, + running: false, + + getJSON: function getJSON() { + return _.assign({}, this.connection); + }, + name: function name(value) { + this.connection.name = value; + return this; + }, + description: function description(value) { + this.connection.description = value; + return this; + }, + method: function method() { + var args = Array.from(arguments); + var method = _.get(args, '[0]'); + + if (!_.isString(method)) return this; + + if (!_.includes(method_types, method)) return this; + + return this._setInfo('method', method); + }, + url: function url() { + var args = Array.from(arguments); + var url = _.get(args, '[0]'); + + if (!_.isString(url)) return this; + + return this._setInfo('url', url); + }, + auth: function auth() { + var args = Array.from(arguments); + var auth = _.get(args, '[0]'); + + if (!_.isString(auth)) return this; + + if (!_.includes(allowed_auth, auth)) return this; + + if (auth == 'none') auth = ''; + + return this._setInfo('auth', auth); + }, + username: function username() { + var args = Array.from(arguments); + var username = _.get(args, '[0]'); + + if (!_.isString(username)) return this; + + return this._setInfo('username', username); + }, + password: function password() { + var args = Array.from(arguments); + var password = _.get(args, '[0]'); + + if (!_.isString(password)) return this; + + return this._setInfo('password', password); + }, + token: function token() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('token', token); + }, + accessToken: function accessToken() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('access_token', token); + }, + refreshToken: function refreshToken() { + var args = Array.from(arguments); + var token = _.get(args, '[0]'); + + if (!_.isString(token)) return this; + + return this._setInfo('refresh_token', token); + }, + expires: function expires() { + var args = Array.from(arguments); + var expires = _.get(args, '[0]'); + + if (_.isNumber(expires)) expires = '' + expires; + + if (!_.isString(expires)) return this; + + return this._setInfo('expires', expires); + }, + data: function data() { + var args = Array.from(arguments); + var data = _.get(args, '[0]'); + + if (!_.isPlainObject(data)) return this; + + var existing_data = this._getInfo('data', {}); + data = _.assign({}, existing_data, data); + + return this._setInfo('data', data); + }, + clearData: function clearData() { + var keys = Array.from(arguments); + + if (keys.length == 0) return this._setInfo('data', {}); + + if (keys.length == 1 && _.isArray(_.get(keys, '[0]'))) keys = _.get(keys, '[0]', []); + + var existing_data = this._getInfo('data', {}); + var data = _.omit(existing_data, keys); + + return this._setInfo('data', data); + }, + headers: function headers() { + var args = Array.from(arguments); + var headers = _.get(args, '[0]'); + + if (!_.isPlainObject(headers)) return this; + + var existing_headers = this._getInfo('headers', {}); + headers = _.assign({}, existing_headers, headers); + + return this._setInfo('headers', headers); + }, + clearHeaders: function clearHeaders() { + var keys = Array.from(arguments); + + if (keys.length == 0) return this._setInfo('headers', {}); + + if (keys.length == 1 && _.isArray(_.get(keys, '[0]'))) keys = _.get(keys, '[0]', []); + + var existing_headers = this._getInfo('headers', {}); + var headers = _.omit(existing_headers, keys); + + return this._setInfo('headers', headers); + }, + load: function load() { + var _this = this, + _arguments = arguments; + + var args = Array.from(arguments); + var identifier = _.get(args, '[0]'); + var callback = _.get(args, '[1]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this.load.apply(_this, _arguments); + }, 50); + return this; + } + + if (_.isNil(identifier)) return Flexio.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."); + + this.loading = true; + Flexio.util.debug('Loading Connection `' + identifier + '`...'); + + Flexio.http().get('/connections/' + identifier).then(function (response) { + var connection = _.get(response, 'data', {}); + _this.connection = _.assign({}, connection); + _this.loading = false; + Flexio.util.debug('Connection Loaded.'); + + if (typeof callback == 'function') callback.call(_this, null, connection); + }).catch(function (error) { + _this.loading = false; + Flexio.util.debug('Connection Load Failed.'); + + if (typeof callback == 'function') callback.call(_this, error, null); + }); + + return this; + }, + save: function save() { + var _this2 = this, + _arguments2 = arguments; + + var args = Array.from(arguments); + var params = _.get(args, '[0]'); + var callback = _.get(args, '[0]'); + + if (this.loading === true || this.saving === true || this.running === true) { + setTimeout(function () { + _this2.save.apply(_this2, _arguments2); + }, 50); + return this; + } + + if (_.isPlainObject(params)) { + _.assign(this.connection, _.pick(params, ['name', 'description', 'ename'])); + callback = _.get(args, '[1]'); + } + + this.saving = true; + Flexio.util.debug('Saving Connection `' + _.get(this.connection, 'name', 'Untitled Connection') + '`...'); + + Flexio.http().post('/connections', this.connection).then(function (response) { + var connection = _.get(response, 'data', {}); + _this2.connection = _.assign({}, connection); + _this2.saving = false; + Flexio.util.debug('Connection Saved.'); + + if (typeof callback == 'function') callback.call(_this2, null, _this2.connection); + }).catch(function (error) { + _this2.saving = false; + Flexio.util.debug('Connection Save Failed.'); + + if (typeof callback == 'function') callback.call(_this2, error, null); + }); + + return this; + }, + _getInfo: function _getInfo(key, default_val) { + return _.get(this.connection, 'connection_info.' + key, default_val); + }, + _setInfo: function _setInfo(key, val) { + _.set(this.connection, 'connection_info.' + key, val); + return this; + } + }); + + return retval; + }; +}; + +/***/ }) +/******/ ])["default"]; +}); \ No newline at end of file diff --git a/dist/orig/flexio.min.js b/dist/orig/flexio.min.js new file mode 100644 index 0000000..01f3180 --- /dev/null +++ b/dist/orig/flexio.min.js @@ -0,0 +1,17 @@ +/*! + * Flex.io Javascript SDK v1.20.2 (https://github.com/flexiodata/flexio-sdk-js) + * (c) 2018 Gold Prairie LLC + */ +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.Flexio=n():t.Flexio=n()}(this,function(){return function(t){function n(e){if(r[e])return r[e].exports;var i=r[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var r={};return n.m=t,n.c=r,n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=12)}([function(t,n,r){(function(t,e){var i;(function(){function o(t,n){return t.set(n[0],n[1]),t}function u(t,n){return t.add(n),t}function a(t,n,r){switch(r.length){case 0:return t.call(n);case 1:return t.call(n,r[0]);case 2:return t.call(n,r[0],r[1]);case 3:return t.call(n,r[0],r[1],r[2])}return t.apply(n,r)}function f(t,n,r,e){for(var i=-1,o=null==t?0:t.length;++i<o;){var u=t[i];n(e,u,r(u),t)}return e}function s(t,n){for(var r=-1,e=null==t?0:t.length;++r<e&&!1!==n(t[r],r,t););return t}function c(t,n){for(var r=null==t?0:t.length;r--&&!1!==n(t[r],r,t););return t}function l(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(!n(t[r],r,t))return!1;return!0}function p(t,n){for(var r=-1,e=null==t?0:t.length,i=0,o=[];++r<e;){var u=t[r];n(u,r,t)&&(o[i++]=u)}return o}function h(t,n){return!!(null==t?0:t.length)&&O(t,n,0)>-1}function g(t,n,r){for(var e=-1,i=null==t?0:t.length;++e<i;)if(r(n,t[e]))return!0;return!1}function d(t,n){for(var r=-1,e=null==t?0:t.length,i=Array(e);++r<e;)i[r]=n(t[r],r,t);return i}function v(t,n){for(var r=-1,e=n.length,i=t.length;++r<e;)t[i+r]=n[r];return t}function _(t,n,r,e){var i=-1,o=null==t?0:t.length;for(e&&o&&(r=t[++i]);++i<o;)r=n(r,t[i],i,t);return r}function y(t,n,r,e){var i=null==t?0:t.length;for(e&&i&&(r=t[--i]);i--;)r=n(r,t[i],i,t);return r}function m(t,n){for(var r=-1,e=null==t?0:t.length;++r<e;)if(n(t[r],r,t))return!0;return!1}function b(t){return t.split("")}function w(t){return t.match(Fn)||[]}function A(t,n,r){var e;return r(t,function(t,r,i){if(n(t,r,i))return e=r,!1}),e}function S(t,n,r,e){for(var i=t.length,o=r+(e?1:-1);e?o--:++o<i;)if(n(t[o],o,t))return o;return-1}function O(t,n,r){return n===n?G(t,n,r):S(t,E,r)}function x(t,n,r,e){for(var i=r-1,o=t.length;++i<o;)if(e(t[i],n))return i;return-1}function E(t){return t!==t}function T(t,n){var r=null==t?0:t.length;return r?k(t,n)/r:Nt}function P(t){return function(n){return null==n?it:n[t]}}function R(t){return function(n){return null==t?it:t[n]}}function C(t,n,r,e,i){return i(t,function(t,i,o){r=e?(e=!1,t):n(r,t,i,o)}),r}function j(t,n){var r=t.length;for(t.sort(n);r--;)t[r]=t[r].value;return t}function k(t,n){for(var r,e=-1,i=t.length;++e<i;){var o=n(t[e]);o!==it&&(r=r===it?o:r+o)}return r}function I(t,n){for(var r=-1,e=Array(t);++r<t;)e[r]=n(r);return e}function U(t,n){return d(n,function(n){return[n,t[n]]})}function N(t){return function(n){return t(n)}}function L(t,n){return d(n,function(n){return t[n]})}function B(t,n){return t.has(n)}function D(t,n){for(var r=-1,e=t.length;++r<e&&O(n,t[r],0)>-1;);return r}function K(t,n){for(var r=t.length;r--&&O(n,t[r],0)>-1;);return r}function M(t,n){for(var r=t.length,e=0;r--;)t[r]===n&&++e;return e}function F(t){return"\\"+Pr[t]}function z(t,n){return null==t?it:t[n]}function q(t){return mr.test(t)}function J(t){return br.test(t)}function Y(t){for(var n,r=[];!(n=t.next()).done;)r.push(n.value);return r}function W(t){var n=-1,r=Array(t.size);return t.forEach(function(t,e){r[++n]=[e,t]}),r}function $(t,n){return function(r){return t(n(r))}}function H(t,n){for(var r=-1,e=t.length,i=0,o=[];++r<e;){var u=t[r];u!==n&&u!==ct||(t[r]=ct,o[i++]=r)}return o}function V(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=t}),r}function Z(t){var n=-1,r=Array(t.size);return t.forEach(function(t){r[++n]=[t,t]}),r}function G(t,n,r){for(var e=r-1,i=t.length;++e<i;)if(t[e]===n)return e;return-1}function X(t,n,r){for(var e=r+1;e--;)if(t[e]===n)return e;return e}function Q(t){return q(t)?nt(t):Yr(t)}function tt(t){return q(t)?rt(t):b(t)}function nt(t){for(var n=_r.lastIndex=0;_r.test(t);)++n;return n}function rt(t){return t.match(_r)||[]}function et(t){return t.match(yr)||[]}var it,ot=200,ut="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",at="Expected a function",ft="__lodash_hash_undefined__",st=500,ct="__lodash_placeholder__",lt=1,pt=2,ht=4,gt=1,dt=2,vt=1,_t=2,yt=4,mt=8,bt=16,wt=32,At=64,St=128,Ot=256,xt=512,Et=30,Tt="...",Pt=800,Rt=16,Ct=1,jt=2,kt=1/0,It=9007199254740991,Ut=1.7976931348623157e308,Nt=NaN,Lt=4294967295,Bt=Lt-1,Dt=Lt>>>1,Kt=[["ary",St],["bind",vt],["bindKey",_t],["curry",mt],["curryRight",bt],["flip",xt],["partial",wt],["partialRight",At],["rearg",Ot]],Mt="[object Arguments]",Ft="[object Array]",zt="[object AsyncFunction]",qt="[object Boolean]",Jt="[object Date]",Yt="[object DOMException]",Wt="[object Error]",$t="[object Function]",Ht="[object GeneratorFunction]",Vt="[object Map]",Zt="[object Number]",Gt="[object Null]",Xt="[object Object]",Qt="[object Proxy]",tn="[object RegExp]",nn="[object Set]",rn="[object String]",en="[object Symbol]",on="[object Undefined]",un="[object WeakMap]",an="[object WeakSet]",fn="[object ArrayBuffer]",sn="[object DataView]",cn="[object Float32Array]",ln="[object Float64Array]",pn="[object Int8Array]",hn="[object Int16Array]",gn="[object Int32Array]",dn="[object Uint8Array]",vn="[object Uint8ClampedArray]",_n="[object Uint16Array]",yn="[object Uint32Array]",mn=/\b__p \+= '';/g,bn=/\b(__p \+=) '' \+/g,wn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,An=/&(?:amp|lt|gt|quot|#39);/g,Sn=/[&<>"']/g,On=RegExp(An.source),xn=RegExp(Sn.source),En=/<%-([\s\S]+?)%>/g,Tn=/<%([\s\S]+?)%>/g,Pn=/<%=([\s\S]+?)%>/g,Rn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Cn=/^\w*$/,jn=/^\./,kn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,In=/[\\^$.*+?()[\]{}|]/g,Un=RegExp(In.source),Nn=/^\s+|\s+$/g,Ln=/^\s+/,Bn=/\s+$/,Dn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Kn=/\{\n\/\* \[wrapped with (.+)\] \*/,Mn=/,? & /,Fn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zn=/\\(\\)?/g,qn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Jn=/\w*$/,Yn=/^[-+]0x[0-9a-f]+$/i,Wn=/^0b[01]+$/i,$n=/^\[object .+?Constructor\]$/,Hn=/^0o[0-7]+$/i,Vn=/^(?:0|[1-9]\d*)$/,Zn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Gn=/($^)/,Xn=/['\n\r\u2028\u2029\\]/g,Qn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",tr="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nr="["+tr+"]",rr="["+Qn+"]",er="[a-z\\xdf-\\xf6\\xf8-\\xff]",ir="[^\\ud800-\\udfff"+tr+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",or="\\ud83c[\\udffb-\\udfff]",ur="(?:\\ud83c[\\udde6-\\uddff]){2}",ar="[\\ud800-\\udbff][\\udc00-\\udfff]",fr="[A-Z\\xc0-\\xd6\\xd8-\\xde]",sr="(?:"+er+"|"+ir+")",cr="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",lr="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",ur,ar].join("|")+")[\\ufe0e\\ufe0f]?"+cr+")*",pr="[\\ufe0e\\ufe0f]?"+cr+lr,hr="(?:"+["[\\u2700-\\u27bf]",ur,ar].join("|")+")"+pr,gr="(?:"+["[^\\ud800-\\udfff]"+rr+"?",rr,ur,ar,"[\\ud800-\\udfff]"].join("|")+")",dr=RegExp("['’]","g"),vr=RegExp(rr,"g"),_r=RegExp(or+"(?="+or+")|"+gr+pr,"g"),yr=RegExp([fr+"?"+er+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[nr,fr,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[nr,fr+sr,"$"].join("|")+")",fr+"?"+sr+"+(?:['’](?:d|ll|m|re|s|t|ve))?",fr+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",hr].join("|"),"g"),mr=RegExp("[\\u200d\\ud800-\\udfff"+Qn+"\\ufe0e\\ufe0f]"),br=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,wr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ar=-1,Sr={};Sr[cn]=Sr[ln]=Sr[pn]=Sr[hn]=Sr[gn]=Sr[dn]=Sr[vn]=Sr[_n]=Sr[yn]=!0,Sr[Mt]=Sr[Ft]=Sr[fn]=Sr[qt]=Sr[sn]=Sr[Jt]=Sr[Wt]=Sr[$t]=Sr[Vt]=Sr[Zt]=Sr[Xt]=Sr[tn]=Sr[nn]=Sr[rn]=Sr[un]=!1;var Or={};Or[Mt]=Or[Ft]=Or[fn]=Or[sn]=Or[qt]=Or[Jt]=Or[cn]=Or[ln]=Or[pn]=Or[hn]=Or[gn]=Or[Vt]=Or[Zt]=Or[Xt]=Or[tn]=Or[nn]=Or[rn]=Or[en]=Or[dn]=Or[vn]=Or[_n]=Or[yn]=!0,Or[Wt]=Or[$t]=Or[un]=!1;var xr={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Er={"&":"&","<":"<",">":">",'"':""","'":"'"},Tr={"&":"&","<":"<",">":">",""":'"',"'":"'"},Pr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Rr=parseFloat,Cr=parseInt,jr="object"==typeof t&&t&&t.Object===Object&&t,kr="object"==typeof self&&self&&self.Object===Object&&self,Ir=jr||kr||Function("return this")(),Ur="object"==typeof n&&n&&!n.nodeType&&n,Nr=Ur&&"object"==typeof e&&e&&!e.nodeType&&e,Lr=Nr&&Nr.exports===Ur,Br=Lr&&jr.process,Dr=function(){try{return Br&&Br.binding&&Br.binding("util")}catch(t){}}(),Kr=Dr&&Dr.isArrayBuffer,Mr=Dr&&Dr.isDate,Fr=Dr&&Dr.isMap,zr=Dr&&Dr.isRegExp,qr=Dr&&Dr.isSet,Jr=Dr&&Dr.isTypedArray,Yr=P("length"),Wr=R(xr),$r=R(Er),Hr=R(Tr),Vr=function t(n){function r(t){if(uf(t)&&!_p(t)&&!(t instanceof b)){if(t instanceof i)return t;if(_c.call(t,"__wrapped__"))return ru(t)}return new i(t)}function e(){}function i(t,n){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!n,this.__index__=0,this.__values__=it}function b(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Lt,this.__views__=[]}function R(){var t=new b(this.__wrapped__);return t.__actions__=Bi(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Bi(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Bi(this.__views__),t}function G(){if(this.__filtered__){var t=new b(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function nt(){var t=this.__wrapped__.value(),n=this.__dir__,r=_p(t),e=n<0,i=r?t.length:0,o=To(0,i,this.__views__),u=o.start,a=o.end,f=a-u,s=e?a:u-1,c=this.__iteratees__,l=c.length,p=0,h=$c(f,this.__takeCount__);if(!r||!e&&i==f&&h==f)return yi(t,this.__actions__);var g=[];t:for(;f--&&p<h;){s+=n;for(var d=-1,v=t[s];++d<l;){var _=c[d],y=_.iteratee,m=_.type,b=y(v);if(m==jt)v=b;else if(!b){if(m==Ct)continue t;break t}}g[p++]=v}return g}function rt(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function Fn(){this.__data__=el?el(null):{},this.size=0}function Qn(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n}function tr(t){var n=this.__data__;if(el){var r=n[t];return r===ft?it:r}return _c.call(n,t)?n[t]:it}function nr(t){var n=this.__data__;return el?n[t]!==it:_c.call(n,t)}function rr(t,n){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=el&&n===it?ft:n,this}function er(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function ir(){this.__data__=[],this.size=0}function or(t){var n=this.__data__,r=Zr(n,t);return!(r<0)&&(r==n.length-1?n.pop():jc.call(n,r,1),--this.size,!0)}function ur(t){var n=this.__data__,r=Zr(n,t);return r<0?it:n[r][1]}function ar(t){return Zr(this.__data__,t)>-1}function fr(t,n){var r=this.__data__,e=Zr(r,t);return e<0?(++this.size,r.push([t,n])):r[e][1]=n,this}function sr(t){var n=-1,r=null==t?0:t.length;for(this.clear();++n<r;){var e=t[n];this.set(e[0],e[1])}}function cr(){this.size=0,this.__data__={hash:new rt,map:new(Qc||er),string:new rt}}function lr(t){var n=So(this,t).delete(t);return this.size-=n?1:0,n}function pr(t){return So(this,t).get(t)}function hr(t){return So(this,t).has(t)}function gr(t,n){var r=So(this,t),e=r.size;return r.set(t,n),this.size+=r.size==e?0:1,this}function _r(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new sr;++n<r;)this.add(t[n])}function yr(t){return this.__data__.set(t,ft),this}function mr(t){return this.__data__.has(t)}function br(t){var n=this.__data__=new er(t);this.size=n.size}function xr(){this.__data__=new er,this.size=0}function Er(t){var n=this.__data__,r=n.delete(t);return this.size=n.size,r}function Tr(t){return this.__data__.get(t)}function Pr(t){return this.__data__.has(t)}function jr(t,n){var r=this.__data__;if(r instanceof er){var e=r.__data__;if(!Qc||e.length<ot-1)return e.push([t,n]),this.size=++r.size,this;r=this.__data__=new sr(e)}return r.set(t,n),this.size=r.size,this}function kr(t,n){var r=_p(t),e=!r&&vp(t),i=!r&&!e&&mp(t),o=!r&&!e&&!i&&Op(t),u=r||e||i||o,a=u?I(t.length,cc):[],f=a.length;for(var s in t)!n&&!_c.call(t,s)||u&&("length"==s||i&&("offset"==s||"parent"==s)||o&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||No(s,f))||a.push(s);return a}function Ur(t){var n=t.length;return n?t[Qe(0,n-1)]:it}function Nr(t,n){return Xo(Bi(t),re(n,0,t.length))}function Br(t){return Xo(Bi(t))}function Dr(t,n,r){(r===it||Ya(t[n],r))&&(r!==it||n in t)||te(t,n,r)}function Yr(t,n,r){var e=t[n];_c.call(t,n)&&Ya(e,r)&&(r!==it||n in t)||te(t,n,r)}function Zr(t,n){for(var r=t.length;r--;)if(Ya(t[r][0],n))return r;return-1}function Gr(t,n,r,e){return dl(t,function(t,i,o){n(e,t,r(t),o)}),e}function Xr(t,n){return t&&Di(n,Ff(n),t)}function Qr(t,n){return t&&Di(n,zf(n),t)}function te(t,n,r){"__proto__"==n&&Nc?Nc(t,n,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[n]=r}function ne(t,n){for(var r=-1,e=n.length,i=ec(e),o=null==t;++r<e;)i[r]=o?it:Df(t,n[r]);return i}function re(t,n,r){return t===t&&(r!==it&&(t=t<=r?t:r),n!==it&&(t=t>=n?t:n)),t}function ee(t,n,r,e,i,o){var u,a=n<,f=n&pt,c=n&ht;if(r&&(u=i?r(t,e,i,o):r(t)),u!==it)return u;if(!of(t))return t;var l=_p(t);if(l){if(u=Co(t),!a)return Bi(t,u)}else{var p=Tl(t),h=p==$t||p==Ht;if(mp(t))return xi(t,a);if(p==Xt||p==Mt||h&&!i){if(u=f||h?{}:jo(t),!a)return f?Mi(t,Qr(u,t)):Ki(t,Xr(u,t))}else{if(!Or[p])return i?t:{};u=ko(t,p,ee,a)}}o||(o=new br);var g=o.get(t);if(g)return g;o.set(t,u);var d=c?f?mo:yo:f?zf:Ff,v=l?it:d(t);return s(v||t,function(e,i){v&&(i=e,e=t[i]),Yr(u,i,ee(e,n,r,i,t,o))}),u}function ie(t){var n=Ff(t);return function(r){return oe(r,t,n)}}function oe(t,n,r){var e=r.length;if(null==t)return!e;for(t=fc(t);e--;){var i=r[e],o=n[i],u=t[i];if(u===it&&!(i in t)||!o(u))return!1}return!0}function ue(t,n,r){if("function"!=typeof t)throw new lc(at);return Cl(function(){t.apply(it,r)},n)}function ae(t,n,r,e){var i=-1,o=h,u=!0,a=t.length,f=[],s=n.length;if(!a)return f;r&&(n=d(n,N(r))),e?(o=g,u=!1):n.length>=ot&&(o=B,u=!1,n=new _r(n));t:for(;++i<a;){var c=t[i],l=null==r?c:r(c);if(c=e||0!==c?c:0,u&&l===l){for(var p=s;p--;)if(n[p]===l)continue t;f.push(c)}else o(n,l,e)||f.push(c)}return f}function fe(t,n){var r=!0;return dl(t,function(t,e,i){return r=!!n(t,e,i)}),r}function se(t,n,r){for(var e=-1,i=t.length;++e<i;){var o=t[e],u=n(o);if(null!=u&&(a===it?u===u&&!_f(u):r(u,a)))var a=u,f=o}return f}function ce(t,n,r,e){var i=t.length;for(r=Sf(r),r<0&&(r=-r>i?0:i+r),e=e===it||e>i?i:Sf(e),e<0&&(e+=i),e=r>e?0:Of(e);r<e;)t[r++]=n;return t}function le(t,n){var r=[];return dl(t,function(t,e,i){n(t,e,i)&&r.push(t)}),r}function pe(t,n,r,e,i){var o=-1,u=t.length;for(r||(r=Uo),i||(i=[]);++o<u;){var a=t[o];n>0&&r(a)?n>1?pe(a,n-1,r,e,i):v(i,a):e||(i[i.length]=a)}return i}function he(t,n){return t&&_l(t,n,Ff)}function ge(t,n){return t&&yl(t,n,Ff)}function de(t,n){return p(n,function(n){return nf(t[n])})}function ve(t,n){n=Si(n,t);for(var r=0,e=n.length;null!=t&&r<e;)t=t[Qo(n[r++])];return r&&r==e?t:it}function _e(t,n,r){var e=n(t);return _p(t)?e:v(e,r(t))}function ye(t){return null==t?t===it?on:Gt:Uc&&Uc in fc(t)?Eo(t):Wo(t)}function me(t,n){return t>n}function be(t,n){return null!=t&&_c.call(t,n)}function we(t,n){return null!=t&&n in fc(t)}function Ae(t,n,r){return t>=$c(n,r)&&t<Wc(n,r)}function Se(t,n,r){for(var e=r?g:h,i=t[0].length,o=t.length,u=o,a=ec(o),f=1/0,s=[];u--;){var c=t[u];u&&n&&(c=d(c,N(n))),f=$c(c.length,f),a[u]=!r&&(n||i>=120&&c.length>=120)?new _r(u&&c):it}c=t[0];var l=-1,p=a[0];t:for(;++l<i&&s.length<f;){var v=c[l],_=n?n(v):v;if(v=r||0!==v?v:0,!(p?B(p,_):e(s,_,r))){for(u=o;--u;){var y=a[u];if(!(y?B(y,_):e(t[u],_,r)))continue t}p&&p.push(_),s.push(v)}}return s}function Oe(t,n,r,e){return he(t,function(t,i,o){n(e,r(t),i,o)}),e}function xe(t,n,r){n=Si(n,t),t=Ho(t,n);var e=null==t?t:t[Qo(wu(n))];return null==e?it:a(e,t,r)}function Ee(t){return uf(t)&&ye(t)==Mt}function Te(t){return uf(t)&&ye(t)==fn}function Pe(t){return uf(t)&&ye(t)==Jt}function Re(t,n,r,e,i){return t===n||(null==t||null==n||!uf(t)&&!uf(n)?t!==t&&n!==n:Ce(t,n,r,e,Re,i))}function Ce(t,n,r,e,i,o){var u=_p(t),a=_p(n),f=u?Ft:Tl(t),s=a?Ft:Tl(n);f=f==Mt?Xt:f,s=s==Mt?Xt:s;var c=f==Xt,l=s==Xt,p=f==s;if(p&&mp(t)){if(!mp(n))return!1;u=!0,c=!1}if(p&&!c)return o||(o=new br),u||Op(t)?ho(t,n,r,e,i,o):go(t,n,f,r,e,i,o);if(!(r>)){var h=c&&_c.call(t,"__wrapped__"),g=l&&_c.call(n,"__wrapped__");if(h||g){var d=h?t.value():t,v=g?n.value():n;return o||(o=new br),i(d,v,r,e,o)}}return!!p&&(o||(o=new br),vo(t,n,r,e,i,o))}function je(t){return uf(t)&&Tl(t)==Vt}function ke(t,n,r,e){var i=r.length,o=i,u=!e;if(null==t)return!o;for(t=fc(t);i--;){var a=r[i];if(u&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++i<o;){a=r[i];var f=a[0],s=t[f],c=a[1];if(u&&a[2]){if(s===it&&!(f in t))return!1}else{var l=new br;if(e)var p=e(s,c,f,t,n,l);if(!(p===it?Re(c,s,gt|dt,e,l):p))return!1}}return!0}function Ie(t){return!(!of(t)||Mo(t))&&(nf(t)?Sc:$n).test(tu(t))}function Ue(t){return uf(t)&&ye(t)==tn}function Ne(t){return uf(t)&&Tl(t)==nn}function Le(t){return uf(t)&&ef(t.length)&&!!Sr[ye(t)]}function Be(t){return"function"==typeof t?t:null==t?js:"object"==typeof t?_p(t)?qe(t[0],t[1]):ze(t):Ks(t)}function De(t){if(!Fo(t))return Yc(t);var n=[];for(var r in fc(t))_c.call(t,r)&&"constructor"!=r&&n.push(r);return n}function Ke(t){if(!of(t))return Yo(t);var n=Fo(t),r=[];for(var e in t)("constructor"!=e||!n&&_c.call(t,e))&&r.push(e);return r}function Me(t,n){return t<n}function Fe(t,n){var r=-1,e=Wa(t)?ec(t.length):[];return dl(t,function(t,i,o){e[++r]=n(t,i,o)}),e}function ze(t){var n=Oo(t);return 1==n.length&&n[0][2]?qo(n[0][0],n[0][1]):function(r){return r===t||ke(r,t,n)}}function qe(t,n){return Bo(t)&&zo(n)?qo(Qo(t),n):function(r){var e=Df(r,t);return e===it&&e===n?Mf(r,t):Re(n,e,gt|dt)}}function Je(t,n,r,e,i){t!==n&&_l(n,function(o,u){if(of(o))i||(i=new br),Ye(t,n,u,r,Je,e,i);else{var a=e?e(t[u],o,u+"",t,n,i):it;a===it&&(a=o),Dr(t,u,a)}},zf)}function Ye(t,n,r,e,i,o,u){var a=t[r],f=n[r],s=u.get(f);if(s)return void Dr(t,r,s);var c=o?o(a,f,r+"",t,n,u):it,l=c===it;if(l){var p=_p(f),h=!p&&mp(f),g=!p&&!h&&Op(f);c=f,p||h||g?_p(a)?c=a:$a(a)?c=Bi(a):h?(l=!1,c=xi(f,!0)):g?(l=!1,c=ki(f,!0)):c=[]:gf(f)||vp(f)?(c=a,vp(a)?c=Ef(a):(!of(a)||e&&nf(a))&&(c=jo(f))):l=!1}l&&(u.set(f,c),i(c,f,e,o,u),u.delete(f)),Dr(t,r,c)}function We(t,n){var r=t.length;if(r)return n+=n<0?r:0,No(n,r)?t[n]:it}function $e(t,n,r){var e=-1;return n=d(n.length?n:[js],N(Ao())),j(Fe(t,function(t,r,i){return{criteria:d(n,function(n){return n(t)}),index:++e,value:t}}),function(t,n){return Ui(t,n,r)})}function He(t,n){return Ve(t,n,function(n,r){return Mf(t,r)})}function Ve(t,n,r){for(var e=-1,i=n.length,o={};++e<i;){var u=n[e],a=ve(t,u);r(a,u)&&oi(o,Si(u,t),a)}return o}function Ze(t){return function(n){return ve(n,t)}}function Ge(t,n,r,e){var i=e?x:O,o=-1,u=n.length,a=t;for(t===n&&(n=Bi(n)),r&&(a=d(t,N(r)));++o<u;)for(var f=0,s=n[o],c=r?r(s):s;(f=i(a,c,f,e))>-1;)a!==t&&jc.call(a,f,1),jc.call(t,f,1);return t}function Xe(t,n){for(var r=t?n.length:0,e=r-1;r--;){var i=n[r];if(r==e||i!==o){var o=i;No(i)?jc.call(t,i,1):di(t,i)}}return t}function Qe(t,n){return t+Mc(Zc()*(n-t+1))}function ti(t,n,r,e){for(var i=-1,o=Wc(Kc((n-t)/(r||1)),0),u=ec(o);o--;)u[e?o:++i]=t,t+=r;return u}function ni(t,n){var r="";if(!t||n<1||n>It)return r;do{n%2&&(r+=t),(n=Mc(n/2))&&(t+=t)}while(n);return r}function ri(t,n){return jl($o(t,n,js),t+"")}function ei(t){return Ur(ts(t))}function ii(t,n){var r=ts(t);return Xo(r,re(n,0,r.length))}function oi(t,n,r,e){if(!of(t))return t;n=Si(n,t);for(var i=-1,o=n.length,u=o-1,a=t;null!=a&&++i<o;){var f=Qo(n[i]),s=r;if(i!=u){var c=a[f];s=e?e(c,f,a):it,s===it&&(s=of(c)?c:No(n[i+1])?[]:{})}Yr(a,f,s),a=a[f]}return t}function ui(t){return Xo(ts(t))}function ai(t,n,r){var e=-1,i=t.length;n<0&&(n=-n>i?0:i+n),r=r>i?i:r,r<0&&(r+=i),i=n>r?0:r-n>>>0,n>>>=0;for(var o=ec(i);++e<i;)o[e]=t[e+n];return o}function fi(t,n){var r;return dl(t,function(t,e,i){return!(r=n(t,e,i))}),!!r}function si(t,n,r){var e=0,i=null==t?e:t.length;if("number"==typeof n&&n===n&&i<=Dt){for(;e<i;){var o=e+i>>>1,u=t[o];null!==u&&!_f(u)&&(r?u<=n:u<n)?e=o+1:i=o}return i}return ci(t,n,js,r)}function ci(t,n,r,e){n=r(n);for(var i=0,o=null==t?0:t.length,u=n!==n,a=null===n,f=_f(n),s=n===it;i<o;){var c=Mc((i+o)/2),l=r(t[c]),p=l!==it,h=null===l,g=l===l,d=_f(l);if(u)var v=e||g;else v=s?g&&(e||p):a?g&&p&&(e||!h):f?g&&p&&!h&&(e||!d):!h&&!d&&(e?l<=n:l<n);v?i=c+1:o=c}return $c(o,Bt)}function li(t,n){for(var r=-1,e=t.length,i=0,o=[];++r<e;){var u=t[r],a=n?n(u):u;if(!r||!Ya(a,f)){var f=a;o[i++]=0===u?0:u}}return o}function pi(t){return"number"==typeof t?t:_f(t)?Nt:+t}function hi(t){if("string"==typeof t)return t;if(_p(t))return d(t,hi)+"";if(_f(t))return hl?hl.call(t):"";var n=t+"";return"0"==n&&1/t==-kt?"-0":n}function gi(t,n,r){var e=-1,i=h,o=t.length,u=!0,a=[],f=a;if(r)u=!1,i=g;else if(o>=ot){var s=n?null:Sl(t);if(s)return V(s);u=!1,i=B,f=new _r}else f=n?[]:a;t:for(;++e<o;){var c=t[e],l=n?n(c):c;if(c=r||0!==c?c:0,u&&l===l){for(var p=f.length;p--;)if(f[p]===l)continue t;n&&f.push(l),a.push(c)}else i(f,l,r)||(f!==a&&f.push(l),a.push(c))}return a}function di(t,n){return n=Si(n,t),null==(t=Ho(t,n))||delete t[Qo(wu(n))]}function vi(t,n,r,e){return oi(t,n,r(ve(t,n)),e)}function _i(t,n,r,e){for(var i=t.length,o=e?i:-1;(e?o--:++o<i)&&n(t[o],o,t););return r?ai(t,e?0:o,e?o+1:i):ai(t,e?o+1:0,e?i:o)}function yi(t,n){var r=t;return r instanceof b&&(r=r.value()),_(n,function(t,n){return n.func.apply(n.thisArg,v([t],n.args))},r)}function mi(t,n,r){var e=t.length;if(e<2)return e?gi(t[0]):[];for(var i=-1,o=ec(e);++i<e;)for(var u=t[i],a=-1;++a<e;)a!=i&&(o[i]=ae(o[i]||u,t[a],n,r));return gi(pe(o,1),n,r)}function bi(t,n,r){for(var e=-1,i=t.length,o=n.length,u={};++e<i;){var a=e<o?n[e]:it;r(u,t[e],a)}return u}function wi(t){return $a(t)?t:[]}function Ai(t){return"function"==typeof t?t:js}function Si(t,n){return _p(t)?t:Bo(t,n)?[t]:kl(Pf(t))}function Oi(t,n,r){var e=t.length;return r=r===it?e:r,!n&&r>=e?t:ai(t,n,r)}function xi(t,n){if(n)return t.slice();var r=t.length,e=Tc?Tc(r):new t.constructor(r);return t.copy(e),e}function Ei(t){var n=new t.constructor(t.byteLength);return new Ec(n).set(new Ec(t)),n}function Ti(t,n){var r=n?Ei(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}function Pi(t,n,r){return _(n?r(W(t),lt):W(t),o,new t.constructor)}function Ri(t){var n=new t.constructor(t.source,Jn.exec(t));return n.lastIndex=t.lastIndex,n}function Ci(t,n,r){return _(n?r(V(t),lt):V(t),u,new t.constructor)}function ji(t){return pl?fc(pl.call(t)):{}}function ki(t,n){var r=n?Ei(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}function Ii(t,n){if(t!==n){var r=t!==it,e=null===t,i=t===t,o=_f(t),u=n!==it,a=null===n,f=n===n,s=_f(n);if(!a&&!s&&!o&&t>n||o&&u&&f&&!a&&!s||e&&u&&f||!r&&f||!i)return 1;if(!e&&!o&&!s&&t<n||s&&r&&i&&!e&&!o||a&&r&&i||!u&&i||!f)return-1}return 0}function Ui(t,n,r){for(var e=-1,i=t.criteria,o=n.criteria,u=i.length,a=r.length;++e<u;){var f=Ii(i[e],o[e]);if(f){if(e>=a)return f;return f*("desc"==r[e]?-1:1)}}return t.index-n.index}function Ni(t,n,r,e){for(var i=-1,o=t.length,u=r.length,a=-1,f=n.length,s=Wc(o-u,0),c=ec(f+s),l=!e;++a<f;)c[a]=n[a];for(;++i<u;)(l||i<o)&&(c[r[i]]=t[i]);for(;s--;)c[a++]=t[i++];return c}function Li(t,n,r,e){for(var i=-1,o=t.length,u=-1,a=r.length,f=-1,s=n.length,c=Wc(o-a,0),l=ec(c+s),p=!e;++i<c;)l[i]=t[i];for(var h=i;++f<s;)l[h+f]=n[f];for(;++u<a;)(p||i<o)&&(l[h+r[u]]=t[i++]);return l}function Bi(t,n){var r=-1,e=t.length;for(n||(n=ec(e));++r<e;)n[r]=t[r];return n}function Di(t,n,r,e){var i=!r;r||(r={});for(var o=-1,u=n.length;++o<u;){var a=n[o],f=e?e(r[a],t[a],a,r,t):it;f===it&&(f=t[a]),i?te(r,a,f):Yr(r,a,f)}return r}function Ki(t,n){return Di(t,xl(t),n)}function Mi(t,n){return Di(t,El(t),n)}function Fi(t,n){return function(r,e){var i=_p(r)?f:Gr,o=n?n():{};return i(r,t,Ao(e,2),o)}}function zi(t){return ri(function(n,r){var e=-1,i=r.length,o=i>1?r[i-1]:it,u=i>2?r[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,u&&Lo(r[0],r[1],u)&&(o=i<3?it:o,i=1),n=fc(n);++e<i;){var a=r[e];a&&t(n,a,e,o)}return n})}function qi(t,n){return function(r,e){if(null==r)return r;if(!Wa(r))return t(r,e);for(var i=r.length,o=n?i:-1,u=fc(r);(n?o--:++o<i)&&!1!==e(u[o],o,u););return r}}function Ji(t){return function(n,r,e){for(var i=-1,o=fc(n),u=e(n),a=u.length;a--;){var f=u[t?a:++i];if(!1===r(o[f],f,o))break}return n}}function Yi(t,n,r){function e(){return(this&&this!==Ir&&this instanceof e?o:t).apply(i?r:this,arguments)}var i=n&vt,o=Hi(t);return e}function Wi(t){return function(n){n=Pf(n);var r=q(n)?tt(n):it,e=r?r[0]:n.charAt(0),i=r?Oi(r,1).join(""):n.slice(1);return e[t]()+i}}function $i(t){return function(n){return _(Es(us(n).replace(dr,"")),t,"")}}function Hi(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var r=gl(t.prototype),e=t.apply(r,n);return of(e)?e:r}}function Vi(t,n,r){function e(){for(var o=arguments.length,u=ec(o),f=o,s=wo(e);f--;)u[f]=arguments[f];var c=o<3&&u[0]!==s&&u[o-1]!==s?[]:H(u,s);return(o-=c.length)<r?uo(t,n,Xi,e.placeholder,it,u,c,it,it,r-o):a(this&&this!==Ir&&this instanceof e?i:t,this,u)}var i=Hi(t);return e}function Zi(t){return function(n,r,e){var i=fc(n);if(!Wa(n)){var o=Ao(r,3);n=Ff(n),r=function(t){return o(i[t],t,i)}}var u=t(n,r,e);return u>-1?i[o?n[u]:u]:it}}function Gi(t){return _o(function(n){var r=n.length,e=r,o=i.prototype.thru;for(t&&n.reverse();e--;){var u=n[e];if("function"!=typeof u)throw new lc(at);if(o&&!a&&"wrapper"==bo(u))var a=new i([],!0)}for(e=a?e:r;++e<r;){u=n[e];var f=bo(u),s="wrapper"==f?Ol(u):it;a=s&&Ko(s[0])&&s[1]==(St|mt|wt|Ot)&&!s[4].length&&1==s[9]?a[bo(s[0])].apply(a,s[3]):1==u.length&&Ko(u)?a[f]():a.thru(u)}return function(){var t=arguments,e=t[0];if(a&&1==t.length&&_p(e))return a.plant(e).value();for(var i=0,o=r?n[i].apply(this,t):e;++i<r;)o=n[i].call(this,o);return o}})}function Xi(t,n,r,e,i,o,u,a,f,s){function c(){for(var _=arguments.length,y=ec(_),m=_;m--;)y[m]=arguments[m];if(g)var b=wo(c),w=M(y,b);if(e&&(y=Ni(y,e,i,g)),o&&(y=Li(y,o,u,g)),_-=w,g&&_<s){var A=H(y,b);return uo(t,n,Xi,c.placeholder,r,y,A,a,f,s-_)}var S=p?r:this,O=h?S[t]:t;return _=y.length,a?y=Vo(y,a):d&&_>1&&y.reverse(),l&&f<_&&(y.length=f),this&&this!==Ir&&this instanceof c&&(O=v||Hi(O)),O.apply(S,y)}var l=n&St,p=n&vt,h=n&_t,g=n&(mt|bt),d=n&xt,v=h?it:Hi(t);return c}function Qi(t,n){return function(r,e){return Oe(r,t,n(e),{})}}function to(t,n){return function(r,e){var i;if(r===it&&e===it)return n;if(r!==it&&(i=r),e!==it){if(i===it)return e;"string"==typeof r||"string"==typeof e?(r=hi(r),e=hi(e)):(r=pi(r),e=pi(e)),i=t(r,e)}return i}}function no(t){return _o(function(n){return n=d(n,N(Ao())),ri(function(r){var e=this;return t(n,function(t){return a(t,e,r)})})})}function ro(t,n){n=n===it?" ":hi(n);var r=n.length;if(r<2)return r?ni(n,t):n;var e=ni(n,Kc(t/Q(n)));return q(n)?Oi(tt(e),0,t).join(""):e.slice(0,t)}function eo(t,n,r,e){function i(){for(var n=-1,f=arguments.length,s=-1,c=e.length,l=ec(c+f),p=this&&this!==Ir&&this instanceof i?u:t;++s<c;)l[s]=e[s];for(;f--;)l[s++]=arguments[++n];return a(p,o?r:this,l)}var o=n&vt,u=Hi(t);return i}function io(t){return function(n,r,e){return e&&"number"!=typeof e&&Lo(n,r,e)&&(r=e=it),n=Af(n),r===it?(r=n,n=0):r=Af(r),e=e===it?n<r?1:-1:Af(e),ti(n,r,e,t)}}function oo(t){return function(n,r){return"string"==typeof n&&"string"==typeof r||(n=xf(n),r=xf(r)),t(n,r)}}function uo(t,n,r,e,i,o,u,a,f,s){var c=n&mt,l=c?u:it,p=c?it:u,h=c?o:it,g=c?it:o;n|=c?wt:At,(n&=~(c?At:wt))&yt||(n&=~(vt|_t));var d=[t,n,i,h,l,g,p,a,f,s],v=r.apply(it,d);return Ko(t)&&Rl(v,d),v.placeholder=e,Zo(v,t,n)}function ao(t){var n=ac[t];return function(t,r){if(t=xf(t),r=null==r?0:$c(Sf(r),292)){var e=(Pf(t)+"e").split("e");return e=(Pf(n(e[0]+"e"+(+e[1]+r)))+"e").split("e"),+(e[0]+"e"+(+e[1]-r))}return n(t)}}function fo(t){return function(n){var r=Tl(n);return r==Vt?W(n):r==nn?Z(n):U(n,t(n))}}function so(t,n,r,e,i,o,u,a){var f=n&_t;if(!f&&"function"!=typeof t)throw new lc(at);var s=e?e.length:0;if(s||(n&=~(wt|At),e=i=it),u=u===it?u:Wc(Sf(u),0),a=a===it?a:Sf(a),s-=i?i.length:0,n&At){var c=e,l=i;e=i=it}var p=f?it:Ol(t),h=[t,n,r,e,i,c,l,o,u,a];if(p&&Jo(h,p),t=h[0],n=h[1],r=h[2],e=h[3],i=h[4],a=h[9]=h[9]===it?f?0:t.length:Wc(h[9]-s,0),!a&&n&(mt|bt)&&(n&=~(mt|bt)),n&&n!=vt)g=n==mt||n==bt?Vi(t,n,a):n!=wt&&n!=(vt|wt)||i.length?Xi.apply(it,h):eo(t,n,r,e);else var g=Yi(t,n,r);return Zo((p?ml:Rl)(g,h),t,n)}function co(t,n,r,e){return t===it||Ya(t,gc[r])&&!_c.call(e,r)?n:t}function lo(t,n,r,e,i,o){return of(t)&&of(n)&&(o.set(n,t),Je(t,n,it,lo,o),o.delete(n)),t}function po(t){return gf(t)?it:t}function ho(t,n,r,e,i,o){var u=r>,a=t.length,f=n.length;if(a!=f&&!(u&&f>a))return!1;var s=o.get(t);if(s&&o.get(n))return s==n;var c=-1,l=!0,p=r&dt?new _r:it;for(o.set(t,n),o.set(n,t);++c<a;){var h=t[c],g=n[c];if(e)var d=u?e(g,h,c,n,t,o):e(h,g,c,t,n,o);if(d!==it){if(d)continue;l=!1;break}if(p){if(!m(n,function(t,n){if(!B(p,n)&&(h===t||i(h,t,r,e,o)))return p.push(n)})){l=!1;break}}else if(h!==g&&!i(h,g,r,e,o)){l=!1;break}}return o.delete(t),o.delete(n),l}function go(t,n,r,e,i,o,u){switch(r){case sn:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case fn:return!(t.byteLength!=n.byteLength||!o(new Ec(t),new Ec(n)));case qt:case Jt:case Zt:return Ya(+t,+n);case Wt:return t.name==n.name&&t.message==n.message;case tn:case rn:return t==n+"";case Vt:var a=W;case nn:var f=e>if(a||(a=V),t.size!=n.size&&!f)return!1;var s=u.get(t);if(s)return s==n;e|=dt,u.set(t,n);var c=ho(a(t),a(n),e,i,o,u);return u.delete(t),c;case en:if(pl)return pl.call(t)==pl.call(n)}return!1}function vo(t,n,r,e,i,o){var u=r>,a=yo(t),f=a.length;if(f!=yo(n).length&&!u)return!1;for(var s=f;s--;){var c=a[s];if(!(u?c in n:_c.call(n,c)))return!1}var l=o.get(t);if(l&&o.get(n))return l==n;var p=!0;o.set(t,n),o.set(n,t);for(var h=u;++s<f;){c=a[s];var g=t[c],d=n[c];if(e)var v=u?e(d,g,c,n,t,o):e(g,d,c,t,n,o);if(!(v===it?g===d||i(g,d,r,e,o):v)){p=!1;break}h||(h="constructor"==c)}if(p&&!h){var _=t.constructor,y=n.constructor;_!=y&&"constructor"in t&&"constructor"in n&&!("function"==typeof _&&_ instanceof _&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(n),p}function _o(t){return jl($o(t,it,hu),t+"")}function yo(t){return _e(t,Ff,xl)}function mo(t){return _e(t,zf,El)}function bo(t){for(var n=t.name+"",r=ol[n],e=_c.call(ol,n)?r.length:0;e--;){var i=r[e],o=i.func;if(null==o||o==t)return i.name}return n}function wo(t){return(_c.call(r,"placeholder")?r:t).placeholder}function Ao(){var t=r.iteratee||ks;return t=t===ks?Be:t,arguments.length?t(arguments[0],arguments[1]):t}function So(t,n){var r=t.__data__;return Do(n)?r["string"==typeof n?"string":"hash"]:r.map}function Oo(t){for(var n=Ff(t),r=n.length;r--;){var e=n[r],i=t[e];n[r]=[e,i,zo(i)]}return n}function xo(t,n){var r=z(t,n);return Ie(r)?r:it}function Eo(t){var n=_c.call(t,Uc),r=t[Uc];try{t[Uc]=it;var e=!0}catch(t){}var i=bc.call(t);return e&&(n?t[Uc]=r:delete t[Uc]),i}function To(t,n,r){for(var e=-1,i=r.length;++e<i;){var o=r[e],u=o.size;switch(o.type){case"drop":t+=u;break;case"dropRight":n-=u;break;case"take":n=$c(n,t+u);break;case"takeRight":t=Wc(t,n-u)}}return{start:t,end:n}}function Po(t){var n=t.match(Kn);return n?n[1].split(Mn):[]}function Ro(t,n,r){n=Si(n,t);for(var e=-1,i=n.length,o=!1;++e<i;){var u=Qo(n[e]);if(!(o=null!=t&&r(t,u)))break;t=t[u]}return o||++e!=i?o:!!(i=null==t?0:t.length)&&ef(i)&&No(u,i)&&(_p(t)||vp(t))}function Co(t){var n=t.length,r=t.constructor(n);return n&&"string"==typeof t[0]&&_c.call(t,"index")&&(r.index=t.index,r.input=t.input),r}function jo(t){return"function"!=typeof t.constructor||Fo(t)?{}:gl(Pc(t))}function ko(t,n,r,e){var i=t.constructor;switch(n){case fn:return Ei(t);case qt:case Jt:return new i(+t);case sn:return Ti(t,e);case cn:case ln:case pn:case hn:case gn:case dn:case vn:case _n:case yn:return ki(t,e);case Vt:return Pi(t,e,r);case Zt:case rn:return new i(t);case tn:return Ri(t);case nn:return Ci(t,e,r);case en:return ji(t)}}function Io(t,n){var r=n.length;if(!r)return t;var e=r-1;return n[e]=(r>1?"& ":"")+n[e],n=n.join(r>2?", ":" "),t.replace(Dn,"{\n/* [wrapped with "+n+"] */\n")}function Uo(t){return _p(t)||vp(t)||!!(kc&&t&&t[kc])}function No(t,n){return!!(n=null==n?It:n)&&("number"==typeof t||Vn.test(t))&&t>-1&&t%1==0&&t<n}function Lo(t,n,r){if(!of(r))return!1;var e=typeof n;return!!("number"==e?Wa(r)&&No(n,r.length):"string"==e&&n in r)&&Ya(r[n],t)}function Bo(t,n){if(_p(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!_f(t))||(Cn.test(t)||!Rn.test(t)||null!=n&&t in fc(n))}function Do(t){var n=typeof t;return"string"==n||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==t:null===t}function Ko(t){var n=bo(t),e=r[n];if("function"!=typeof e||!(n in b.prototype))return!1;if(t===e)return!0;var i=Ol(e);return!!i&&t===i[0]}function Mo(t){return!!mc&&mc in t}function Fo(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||gc)}function zo(t){return t===t&&!of(t)}function qo(t,n){return function(r){return null!=r&&(r[t]===n&&(n!==it||t in fc(r)))}}function Jo(t,n){var r=t[1],e=n[1],i=r|e,o=i<(vt|_t|St),u=e==St&&r==mt||e==St&&r==Ot&&t[7].length<=n[8]||e==(St|Ot)&&n[7].length<=n[8]&&r==mt;if(!o&&!u)return t;e&vt&&(t[2]=n[2],i|=r&vt?0:yt);var a=n[3];if(a){var f=t[3];t[3]=f?Ni(f,a,n[4]):a,t[4]=f?H(t[3],ct):n[4]}return a=n[5],a&&(f=t[5],t[5]=f?Li(f,a,n[6]):a,t[6]=f?H(t[5],ct):n[6]),a=n[7],a&&(t[7]=a),e&St&&(t[8]=null==t[8]?n[8]:$c(t[8],n[8])),null==t[9]&&(t[9]=n[9]),t[0]=n[0],t[1]=i,t}function Yo(t){var n=[];if(null!=t)for(var r in fc(t))n.push(r);return n}function Wo(t){return bc.call(t)}function $o(t,n,r){return n=Wc(n===it?t.length-1:n,0),function(){for(var e=arguments,i=-1,o=Wc(e.length-n,0),u=ec(o);++i<o;)u[i]=e[n+i];i=-1;for(var f=ec(n+1);++i<n;)f[i]=e[i];return f[n]=r(u),a(t,this,f)}}function Ho(t,n){return n.length<2?t:ve(t,ai(n,0,-1))}function Vo(t,n){for(var r=t.length,e=$c(n.length,r),i=Bi(t);e--;){var o=n[e];t[e]=No(o,r)?i[o]:it}return t}function Zo(t,n,r){var e=n+"";return jl(t,Io(e,nu(Po(e),r)))}function Go(t){var n=0,r=0;return function(){var e=Hc(),i=Rt-(e-r);if(r=e,i>0){if(++n>=Pt)return arguments[0]}else n=0;return t.apply(it,arguments)}}function Xo(t,n){var r=-1,e=t.length,i=e-1;for(n=n===it?e:n;++r<n;){var o=Qe(r,i),u=t[o];t[o]=t[r],t[r]=u}return t.length=n,t}function Qo(t){if("string"==typeof t||_f(t))return t;var n=t+"";return"0"==n&&1/t==-kt?"-0":n}function tu(t){if(null!=t){try{return vc.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function nu(t,n){return s(Kt,function(r){var e="_."+r[0];n&r[1]&&!h(t,e)&&t.push(e)}),t.sort()}function ru(t){if(t instanceof b)return t.clone();var n=new i(t.__wrapped__,t.__chain__);return n.__actions__=Bi(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}function eu(t,n,r){n=(r?Lo(t,n,r):n===it)?1:Wc(Sf(n),0);var e=null==t?0:t.length;if(!e||n<1)return[];for(var i=0,o=0,u=ec(Kc(e/n));i<e;)u[o++]=ai(t,i,i+=n);return u}function iu(t){for(var n=-1,r=null==t?0:t.length,e=0,i=[];++n<r;){var o=t[n];o&&(i[e++]=o)}return i}function ou(){var t=arguments.length;if(!t)return[];for(var n=ec(t-1),r=arguments[0],e=t;e--;)n[e-1]=arguments[e];return v(_p(r)?Bi(r):[r],pe(n,1))}function uu(t,n,r){var e=null==t?0:t.length;return e?(n=r||n===it?1:Sf(n),ai(t,n<0?0:n,e)):[]}function au(t,n,r){var e=null==t?0:t.length;return e?(n=r||n===it?1:Sf(n),n=e-n,ai(t,0,n<0?0:n)):[]}function fu(t,n){return t&&t.length?_i(t,Ao(n,3),!0,!0):[]}function su(t,n){return t&&t.length?_i(t,Ao(n,3),!0):[]}function cu(t,n,r,e){var i=null==t?0:t.length;return i?(r&&"number"!=typeof r&&Lo(t,n,r)&&(r=0,e=i),ce(t,n,r,e)):[]}function lu(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=null==r?0:Sf(r);return i<0&&(i=Wc(e+i,0)),S(t,Ao(n,3),i)}function pu(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=e-1;return r!==it&&(i=Sf(r),i=r<0?Wc(e+i,0):$c(i,e-1)),S(t,Ao(n,3),i,!0)}function hu(t){return(null==t?0:t.length)?pe(t,1):[]}function gu(t){return(null==t?0:t.length)?pe(t,kt):[]}function du(t,n){return(null==t?0:t.length)?(n=n===it?1:Sf(n),pe(t,n)):[]}function vu(t){for(var n=-1,r=null==t?0:t.length,e={};++n<r;){var i=t[n];e[i[0]]=i[1]}return e}function _u(t){return t&&t.length?t[0]:it}function yu(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=null==r?0:Sf(r);return i<0&&(i=Wc(e+i,0)),O(t,n,i)}function mu(t){return(null==t?0:t.length)?ai(t,0,-1):[]}function bu(t,n){return null==t?"":Jc.call(t,n)}function wu(t){var n=null==t?0:t.length;return n?t[n-1]:it}function Au(t,n,r){var e=null==t?0:t.length;if(!e)return-1;var i=e;return r!==it&&(i=Sf(r),i=i<0?Wc(e+i,0):$c(i,e-1)),n===n?X(t,n,i):S(t,E,i,!0)}function Su(t,n){return t&&t.length?We(t,Sf(n)):it}function Ou(t,n){return t&&t.length&&n&&n.length?Ge(t,n):t}function xu(t,n,r){return t&&t.length&&n&&n.length?Ge(t,n,Ao(r,2)):t}function Eu(t,n,r){return t&&t.length&&n&&n.length?Ge(t,n,it,r):t}function Tu(t,n){var r=[];if(!t||!t.length)return r;var e=-1,i=[],o=t.length;for(n=Ao(n,3);++e<o;){var u=t[e];n(u,e,t)&&(r.push(u),i.push(e))}return Xe(t,i),r}function Pu(t){return null==t?t:Gc.call(t)}function Ru(t,n,r){var e=null==t?0:t.length;return e?(r&&"number"!=typeof r&&Lo(t,n,r)?(n=0,r=e):(n=null==n?0:Sf(n),r=r===it?e:Sf(r)),ai(t,n,r)):[]}function Cu(t,n){return si(t,n)}function ju(t,n,r){return ci(t,n,Ao(r,2))}function ku(t,n){var r=null==t?0:t.length;if(r){var e=si(t,n);if(e<r&&Ya(t[e],n))return e}return-1}function Iu(t,n){return si(t,n,!0)}function Uu(t,n,r){return ci(t,n,Ao(r,2),!0)}function Nu(t,n){if(null==t?0:t.length){var r=si(t,n,!0)-1;if(Ya(t[r],n))return r}return-1}function Lu(t){return t&&t.length?li(t):[]}function Bu(t,n){return t&&t.length?li(t,Ao(n,2)):[]}function Du(t){var n=null==t?0:t.length;return n?ai(t,1,n):[]}function Ku(t,n,r){return t&&t.length?(n=r||n===it?1:Sf(n),ai(t,0,n<0?0:n)):[]}function Mu(t,n,r){var e=null==t?0:t.length;return e?(n=r||n===it?1:Sf(n),n=e-n,ai(t,n<0?0:n,e)):[]}function Fu(t,n){return t&&t.length?_i(t,Ao(n,3),!1,!0):[]}function zu(t,n){return t&&t.length?_i(t,Ao(n,3)):[]}function qu(t){return t&&t.length?gi(t):[]}function Ju(t,n){return t&&t.length?gi(t,Ao(n,2)):[]}function Yu(t,n){return n="function"==typeof n?n:it,t&&t.length?gi(t,it,n):[]}function Wu(t){if(!t||!t.length)return[];var n=0;return t=p(t,function(t){if($a(t))return n=Wc(t.length,n),!0}),I(n,function(n){return d(t,P(n))})}function $u(t,n){if(!t||!t.length)return[];var r=Wu(t);return null==n?r:d(r,function(t){return a(n,it,t)})}function Hu(t,n){return bi(t||[],n||[],Yr)}function Vu(t,n){return bi(t||[],n||[],oi)}function Zu(t){var n=r(t);return n.__chain__=!0,n}function Gu(t,n){return n(t),t}function Xu(t,n){return n(t)}function Qu(){return Zu(this)}function ta(){return new i(this.value(),this.__chain__)}function na(){this.__values__===it&&(this.__values__=wf(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ra(){return this}function ea(t){for(var n,r=this;r instanceof e;){var i=ru(r);i.__index__=0,i.__values__=it,n?o.__wrapped__=i:n=i;var o=i;r=r.__wrapped__}return o.__wrapped__=t,n}function ia(){var t=this.__wrapped__;if(t instanceof b){var n=t;return this.__actions__.length&&(n=new b(this)),n=n.reverse(),n.__actions__.push({func:Xu,args:[Pu],thisArg:it}),new i(n,this.__chain__)}return this.thru(Pu)}function oa(){return yi(this.__wrapped__,this.__actions__)}function ua(t,n,r){var e=_p(t)?l:fe;return r&&Lo(t,n,r)&&(n=it),e(t,Ao(n,3))}function aa(t,n){return(_p(t)?p:le)(t,Ao(n,3))}function fa(t,n){return pe(ga(t,n),1)}function sa(t,n){return pe(ga(t,n),kt)}function ca(t,n,r){return r=r===it?1:Sf(r),pe(ga(t,n),r)}function la(t,n){return(_p(t)?s:dl)(t,Ao(n,3))}function pa(t,n){return(_p(t)?c:vl)(t,Ao(n,3))}function ha(t,n,r,e){t=Wa(t)?t:ts(t),r=r&&!e?Sf(r):0;var i=t.length;return r<0&&(r=Wc(i+r,0)),vf(t)?r<=i&&t.indexOf(n,r)>-1:!!i&&O(t,n,r)>-1}function ga(t,n){return(_p(t)?d:Fe)(t,Ao(n,3))}function da(t,n,r,e){return null==t?[]:(_p(n)||(n=null==n?[]:[n]),r=e?it:r,_p(r)||(r=null==r?[]:[r]),$e(t,n,r))}function va(t,n,r){var e=_p(t)?_:C,i=arguments.length<3;return e(t,Ao(n,4),r,i,dl)}function _a(t,n,r){var e=_p(t)?y:C,i=arguments.length<3;return e(t,Ao(n,4),r,i,vl)}function ya(t,n){return(_p(t)?p:le)(t,ka(Ao(n,3)))}function ma(t){return(_p(t)?Ur:ei)(t)}function ba(t,n,r){return n=(r?Lo(t,n,r):n===it)?1:Sf(n),(_p(t)?Nr:ii)(t,n)}function wa(t){return(_p(t)?Br:ui)(t)}function Aa(t){if(null==t)return 0;if(Wa(t))return vf(t)?Q(t):t.length;var n=Tl(t);return n==Vt||n==nn?t.size:De(t).length}function Sa(t,n,r){var e=_p(t)?m:fi;return r&&Lo(t,n,r)&&(n=it),e(t,Ao(n,3))}function Oa(t,n){if("function"!=typeof n)throw new lc(at);return t=Sf(t),function(){if(--t<1)return n.apply(this,arguments)}}function xa(t,n,r){return n=r?it:n,n=t&&null==n?t.length:n,so(t,St,it,it,it,it,n)}function Ea(t,n){var r;if("function"!=typeof n)throw new lc(at);return t=Sf(t),function(){return--t>0&&(r=n.apply(this,arguments)),t<=1&&(n=it),r}}function Ta(t,n,r){n=r?it:n;var e=so(t,mt,it,it,it,it,it,n);return e.placeholder=Ta.placeholder,e}function Pa(t,n,r){n=r?it:n;var e=so(t,bt,it,it,it,it,it,n);return e.placeholder=Pa.placeholder,e}function Ra(t,n,r){function e(n){var r=p,e=h;return p=h=it,y=n,d=t.apply(e,r)}function i(t){return y=t,v=Cl(a,n),m?e(t):d}function o(t){var r=t-_,e=t-y,i=n-r;return b?$c(i,g-e):i}function u(t){var r=t-_,e=t-y;return _===it||r>=n||r<0||b&&e>=g}function a(){var t=op();if(u(t))return f(t);v=Cl(a,o(t))}function f(t){return v=it,w&&p?e(t):(p=h=it,d)}function s(){v!==it&&Al(v),y=0,p=_=h=v=it}function c(){return v===it?d:f(op())}function l(){var t=op(),r=u(t);if(p=arguments,h=this,_=t,r){if(v===it)return i(_);if(b)return v=Cl(a,n),e(_)}return v===it&&(v=Cl(a,n)),d}var p,h,g,d,v,_,y=0,m=!1,b=!1,w=!0;if("function"!=typeof t)throw new lc(at);return n=xf(n)||0,of(r)&&(m=!!r.leading,b="maxWait"in r,g=b?Wc(xf(r.maxWait)||0,n):g,w="trailing"in r?!!r.trailing:w),l.cancel=s,l.flush=c,l}function Ca(t){return so(t,xt)}function ja(t,n){if("function"!=typeof t||null!=n&&"function"!=typeof n)throw new lc(at);var r=function(){var e=arguments,i=n?n.apply(this,e):e[0],o=r.cache;if(o.has(i))return o.get(i);var u=t.apply(this,e);return r.cache=o.set(i,u)||o,u};return r.cache=new(ja.Cache||sr),r}function ka(t){if("function"!=typeof t)throw new lc(at);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}function Ia(t){return Ea(2,t)}function Ua(t,n){if("function"!=typeof t)throw new lc(at);return n=n===it?n:Sf(n),ri(t,n)}function Na(t,n){if("function"!=typeof t)throw new lc(at);return n=null==n?0:Wc(Sf(n),0),ri(function(r){var e=r[n],i=Oi(r,0,n);return e&&v(i,e),a(t,this,i)})}function La(t,n,r){var e=!0,i=!0;if("function"!=typeof t)throw new lc(at);return of(r)&&(e="leading"in r?!!r.leading:e,i="trailing"in r?!!r.trailing:i),Ra(t,n,{leading:e,maxWait:n,trailing:i})}function Ba(t){return xa(t,1)}function Da(t,n){return lp(Ai(n),t)}function Ka(){if(!arguments.length)return[];var t=arguments[0];return _p(t)?t:[t]}function Ma(t){return ee(t,ht)}function Fa(t,n){return n="function"==typeof n?n:it,ee(t,ht,n)}function za(t){return ee(t,lt|ht)}function qa(t,n){return n="function"==typeof n?n:it,ee(t,lt|ht,n)}function Ja(t,n){return null==n||oe(t,n,Ff(n))}function Ya(t,n){return t===n||t!==t&&n!==n}function Wa(t){return null!=t&&ef(t.length)&&!nf(t)}function $a(t){return uf(t)&&Wa(t)}function Ha(t){return!0===t||!1===t||uf(t)&&ye(t)==qt}function Va(t){return uf(t)&&1===t.nodeType&&!gf(t)}function Za(t){if(null==t)return!0;if(Wa(t)&&(_p(t)||"string"==typeof t||"function"==typeof t.splice||mp(t)||Op(t)||vp(t)))return!t.length;var n=Tl(t);if(n==Vt||n==nn)return!t.size;if(Fo(t))return!De(t).length;for(var r in t)if(_c.call(t,r))return!1;return!0}function Ga(t,n){return Re(t,n)}function Xa(t,n,r){r="function"==typeof r?r:it;var e=r?r(t,n):it;return e===it?Re(t,n,it,r):!!e}function Qa(t){if(!uf(t))return!1;var n=ye(t);return n==Wt||n==Yt||"string"==typeof t.message&&"string"==typeof t.name&&!gf(t)}function tf(t){return"number"==typeof t&&qc(t)}function nf(t){if(!of(t))return!1;var n=ye(t);return n==$t||n==Ht||n==zt||n==Qt}function rf(t){return"number"==typeof t&&t==Sf(t)}function ef(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=It}function of(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function uf(t){return null!=t&&"object"==typeof t}function af(t,n){return t===n||ke(t,n,Oo(n))}function ff(t,n,r){return r="function"==typeof r?r:it,ke(t,n,Oo(n),r)}function sf(t){return hf(t)&&t!=+t}function cf(t){if(Pl(t))throw new oc(ut);return Ie(t)}function lf(t){return null===t}function pf(t){return null==t}function hf(t){return"number"==typeof t||uf(t)&&ye(t)==Zt}function gf(t){if(!uf(t)||ye(t)!=Xt)return!1;var n=Pc(t);if(null===n)return!0;var r=_c.call(n,"constructor")&&n.constructor;return"function"==typeof r&&r instanceof r&&vc.call(r)==wc}function df(t){return rf(t)&&t>=-It&&t<=It}function vf(t){return"string"==typeof t||!_p(t)&&uf(t)&&ye(t)==rn}function _f(t){return"symbol"==typeof t||uf(t)&&ye(t)==en}function yf(t){return t===it}function mf(t){return uf(t)&&Tl(t)==un}function bf(t){return uf(t)&&ye(t)==an}function wf(t){if(!t)return[];if(Wa(t))return vf(t)?tt(t):Bi(t);if(Ic&&t[Ic])return Y(t[Ic]());var n=Tl(t);return(n==Vt?W:n==nn?V:ts)(t)}function Af(t){if(!t)return 0===t?t:0;if((t=xf(t))===kt||t===-kt){return(t<0?-1:1)*Ut}return t===t?t:0}function Sf(t){var n=Af(t),r=n%1;return n===n?r?n-r:n:0}function Of(t){return t?re(Sf(t),0,Lt):0}function xf(t){if("number"==typeof t)return t;if(_f(t))return Nt;if(of(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=of(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Nn,"");var r=Wn.test(t);return r||Hn.test(t)?Cr(t.slice(2),r?2:8):Yn.test(t)?Nt:+t}function Ef(t){return Di(t,zf(t))}function Tf(t){return t?re(Sf(t),-It,It):0===t?t:0}function Pf(t){return null==t?"":hi(t)}function Rf(t,n){var r=gl(t);return null==n?r:Xr(r,n)}function Cf(t,n){return A(t,Ao(n,3),he)}function jf(t,n){return A(t,Ao(n,3),ge)}function kf(t,n){return null==t?t:_l(t,Ao(n,3),zf)}function If(t,n){return null==t?t:yl(t,Ao(n,3),zf)}function Uf(t,n){return t&&he(t,Ao(n,3))}function Nf(t,n){return t&&ge(t,Ao(n,3))}function Lf(t){return null==t?[]:de(t,Ff(t))}function Bf(t){return null==t?[]:de(t,zf(t))}function Df(t,n,r){var e=null==t?it:ve(t,n);return e===it?r:e}function Kf(t,n){return null!=t&&Ro(t,n,be)}function Mf(t,n){return null!=t&&Ro(t,n,we)}function Ff(t){return Wa(t)?kr(t):De(t)}function zf(t){return Wa(t)?kr(t,!0):Ke(t)}function qf(t,n){var r={};return n=Ao(n,3),he(t,function(t,e,i){te(r,n(t,e,i),t)}),r}function Jf(t,n){var r={};return n=Ao(n,3),he(t,function(t,e,i){te(r,e,n(t,e,i))}),r}function Yf(t,n){return Wf(t,ka(Ao(n)))}function Wf(t,n){if(null==t)return{};var r=d(mo(t),function(t){return[t]});return n=Ao(n),Ve(t,r,function(t,r){return n(t,r[0])})}function $f(t,n,r){n=Si(n,t);var e=-1,i=n.length;for(i||(i=1,t=it);++e<i;){var o=null==t?it:t[Qo(n[e])];o===it&&(e=i,o=r),t=nf(o)?o.call(t):o}return t}function Hf(t,n,r){return null==t?t:oi(t,n,r)}function Vf(t,n,r,e){return e="function"==typeof e?e:it,null==t?t:oi(t,n,r,e)}function Zf(t,n,r){var e=_p(t),i=e||mp(t)||Op(t);if(n=Ao(n,4),null==r){var o=t&&t.constructor;r=i?e?new o:[]:of(t)&&nf(o)?gl(Pc(t)):{}}return(i?s:he)(t,function(t,e,i){return n(r,t,e,i)}),r}function Gf(t,n){return null==t||di(t,n)}function Xf(t,n,r){return null==t?t:vi(t,n,Ai(r))}function Qf(t,n,r,e){return e="function"==typeof e?e:it,null==t?t:vi(t,n,Ai(r),e)}function ts(t){return null==t?[]:L(t,Ff(t))}function ns(t){return null==t?[]:L(t,zf(t))}function rs(t,n,r){return r===it&&(r=n,n=it),r!==it&&(r=xf(r),r=r===r?r:0),n!==it&&(n=xf(n),n=n===n?n:0),re(xf(t),n,r)}function es(t,n,r){return n=Af(n),r===it?(r=n,n=0):r=Af(r),t=xf(t),Ae(t,n,r)}function is(t,n,r){if(r&&"boolean"!=typeof r&&Lo(t,n,r)&&(n=r=it),r===it&&("boolean"==typeof n?(r=n,n=it):"boolean"==typeof t&&(r=t,t=it)),t===it&&n===it?(t=0,n=1):(t=Af(t),n===it?(n=t,t=0):n=Af(n)),t>n){var e=t;t=n,n=e}if(r||t%1||n%1){var i=Zc();return $c(t+i*(n-t+Rr("1e-"+((i+"").length-1))),n)}return Qe(t,n)}function os(t){return Zp(Pf(t).toLowerCase())}function us(t){return(t=Pf(t))&&t.replace(Zn,Wr).replace(vr,"")}function as(t,n,r){t=Pf(t),n=hi(n);var e=t.length;r=r===it?e:re(Sf(r),0,e);var i=r;return(r-=n.length)>=0&&t.slice(r,i)==n}function fs(t){return t=Pf(t),t&&xn.test(t)?t.replace(Sn,$r):t}function ss(t){return t=Pf(t),t&&Un.test(t)?t.replace(In,"\\$&"):t}function cs(t,n,r){t=Pf(t),n=Sf(n);var e=n?Q(t):0;if(!n||e>=n)return t;var i=(n-e)/2;return ro(Mc(i),r)+t+ro(Kc(i),r)}function ls(t,n,r){t=Pf(t),n=Sf(n);var e=n?Q(t):0;return n&&e<n?t+ro(n-e,r):t}function ps(t,n,r){t=Pf(t),n=Sf(n);var e=n?Q(t):0;return n&&e<n?ro(n-e,r)+t:t}function hs(t,n,r){return r||null==n?n=0:n&&(n=+n),Vc(Pf(t).replace(Ln,""),n||0)}function gs(t,n,r){return n=(r?Lo(t,n,r):n===it)?1:Sf(n),ni(Pf(t),n)}function ds(){var t=arguments,n=Pf(t[0]);return t.length<3?n:n.replace(t[1],t[2])}function vs(t,n,r){return r&&"number"!=typeof r&&Lo(t,n,r)&&(n=r=it),(r=r===it?Lt:r>>>0)?(t=Pf(t),t&&("string"==typeof n||null!=n&&!Ap(n))&&!(n=hi(n))&&q(t)?Oi(tt(t),0,r):t.split(n,r)):[]}function _s(t,n,r){return t=Pf(t),r=null==r?0:re(Sf(r),0,t.length),n=hi(n),t.slice(r,r+n.length)==n}function ys(t,n,e){var i=r.templateSettings;e&&Lo(t,n,e)&&(n=it),t=Pf(t),n=Rp({},n,i,co);var o,u,a=Rp({},n.imports,i.imports,co),f=Ff(a),s=L(a,f),c=0,l=n.interpolate||Gn,p="__p += '",h=sc((n.escape||Gn).source+"|"+l.source+"|"+(l===Pn?qn:Gn).source+"|"+(n.evaluate||Gn).source+"|$","g"),g="//# sourceURL="+("sourceURL"in n?n.sourceURL:"lodash.templateSources["+ ++Ar+"]")+"\n";t.replace(h,function(n,r,e,i,a,f){return e||(e=i),p+=t.slice(c,f).replace(Xn,F),r&&(o=!0,p+="' +\n__e("+r+") +\n'"),a&&(u=!0,p+="';\n"+a+";\n__p += '"),e&&(p+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),c=f+n.length,n}),p+="';\n";var d=n.variable;d||(p="with (obj) {\n"+p+"\n}\n"),p=(u?p.replace(mn,""):p).replace(bn,"$1").replace(wn,"$1;"),p="function("+(d||"obj")+") {\n"+(d?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(u?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var v=Gp(function(){return uc(f,g+"return "+p).apply(it,s)});if(v.source=p,Qa(v))throw v;return v}function ms(t){return Pf(t).toLowerCase()}function bs(t){return Pf(t).toUpperCase()}function ws(t,n,r){if((t=Pf(t))&&(r||n===it))return t.replace(Nn,"");if(!t||!(n=hi(n)))return t;var e=tt(t),i=tt(n);return Oi(e,D(e,i),K(e,i)+1).join("")}function As(t,n,r){if((t=Pf(t))&&(r||n===it))return t.replace(Bn,"");if(!t||!(n=hi(n)))return t;var e=tt(t);return Oi(e,0,K(e,tt(n))+1).join("")}function Ss(t,n,r){if((t=Pf(t))&&(r||n===it))return t.replace(Ln,"");if(!t||!(n=hi(n)))return t;var e=tt(t);return Oi(e,D(e,tt(n))).join("")}function Os(t,n){var r=Et,e=Tt;if(of(n)){var i="separator"in n?n.separator:i;r="length"in n?Sf(n.length):r,e="omission"in n?hi(n.omission):e}t=Pf(t);var o=t.length;if(q(t)){var u=tt(t);o=u.length}if(r>=o)return t;var a=r-Q(e);if(a<1)return e;var f=u?Oi(u,0,a).join(""):t.slice(0,a);if(i===it)return f+e;if(u&&(a+=f.length-a),Ap(i)){if(t.slice(a).search(i)){var s,c=f;for(i.global||(i=sc(i.source,Pf(Jn.exec(i))+"g")),i.lastIndex=0;s=i.exec(c);)var l=s.index;f=f.slice(0,l===it?a:l)}}else if(t.indexOf(hi(i),a)!=a){var p=f.lastIndexOf(i);p>-1&&(f=f.slice(0,p))}return f+e}function xs(t){return t=Pf(t),t&&On.test(t)?t.replace(An,Hr):t}function Es(t,n,r){return t=Pf(t),n=r?it:n,n===it?J(t)?et(t):w(t):t.match(n)||[]}function Ts(t){var n=null==t?0:t.length,r=Ao();return t=n?d(t,function(t){if("function"!=typeof t[1])throw new lc(at);return[r(t[0]),t[1]]}):[],ri(function(r){for(var e=-1;++e<n;){var i=t[e];if(a(i[0],this,r))return a(i[1],this,r)}})}function Ps(t){return ie(ee(t,lt))}function Rs(t){return function(){return t}}function Cs(t,n){return null==t||t!==t?n:t}function js(t){return t}function ks(t){return Be("function"==typeof t?t:ee(t,lt))}function Is(t){return ze(ee(t,lt))}function Us(t,n){return qe(t,ee(n,lt))}function Ns(t,n,r){var e=Ff(n),i=de(n,e);null!=r||of(n)&&(i.length||!e.length)||(r=n,n=t,t=this,i=de(n,Ff(n)));var o=!(of(r)&&"chain"in r&&!r.chain),u=nf(t);return s(i,function(r){var e=n[r];t[r]=e,u&&(t.prototype[r]=function(){var n=this.__chain__;if(o||n){var r=t(this.__wrapped__);return(r.__actions__=Bi(this.__actions__)).push({func:e,args:arguments,thisArg:t}),r.__chain__=n,r}return e.apply(t,v([this.value()],arguments))})}),t}function Ls(){return Ir._===this&&(Ir._=Ac),this}function Bs(){}function Ds(t){return t=Sf(t),ri(function(n){return We(n,t)})}function Ks(t){return Bo(t)?P(Qo(t)):Ze(t)}function Ms(t){return function(n){return null==t?it:ve(t,n)}}function Fs(){return[]}function zs(){return!1}function qs(){return{}}function Js(){return""}function Ys(){return!0}function Ws(t,n){if((t=Sf(t))<1||t>It)return[];var r=Lt,e=$c(t,Lt);n=Ao(n),t-=Lt;for(var i=I(e,n);++r<t;)n(r);return i}function $s(t){return _p(t)?d(t,Qo):_f(t)?[t]:Bi(kl(Pf(t)))}function Hs(t){var n=++yc;return Pf(t)+n}function Vs(t){return t&&t.length?se(t,js,me):it}function Zs(t,n){return t&&t.length?se(t,Ao(n,2),me):it}function Gs(t){return T(t,js)}function Xs(t,n){return T(t,Ao(n,2))}function Qs(t){return t&&t.length?se(t,js,Me):it}function tc(t,n){return t&&t.length?se(t,Ao(n,2),Me):it}function nc(t){return t&&t.length?k(t,js):0}function rc(t,n){return t&&t.length?k(t,Ao(n,2)):0}n=null==n?Ir:Vr.defaults(Ir.Object(),n,Vr.pick(Ir,wr));var ec=n.Array,ic=n.Date,oc=n.Error,uc=n.Function,ac=n.Math,fc=n.Object,sc=n.RegExp,cc=n.String,lc=n.TypeError,pc=ec.prototype,hc=uc.prototype,gc=fc.prototype,dc=n["__core-js_shared__"],vc=hc.toString,_c=gc.hasOwnProperty,yc=0,mc=function(){var t=/[^.]+$/.exec(dc&&dc.keys&&dc.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),bc=gc.toString,wc=vc.call(fc),Ac=Ir._,Sc=sc("^"+vc.call(_c).replace(In,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Oc=Lr?n.Buffer:it,xc=n.Symbol,Ec=n.Uint8Array,Tc=Oc?Oc.allocUnsafe:it,Pc=$(fc.getPrototypeOf,fc),Rc=fc.create,Cc=gc.propertyIsEnumerable,jc=pc.splice,kc=xc?xc.isConcatSpreadable:it,Ic=xc?xc.iterator:it,Uc=xc?xc.toStringTag:it,Nc=function(){try{var t=xo(fc,"defineProperty");return t({},"",{}),t}catch(t){}}(),Lc=n.clearTimeout!==Ir.clearTimeout&&n.clearTimeout,Bc=ic&&ic.now!==Ir.Date.now&&ic.now,Dc=n.setTimeout!==Ir.setTimeout&&n.setTimeout,Kc=ac.ceil,Mc=ac.floor,Fc=fc.getOwnPropertySymbols,zc=Oc?Oc.isBuffer:it,qc=n.isFinite,Jc=pc.join,Yc=$(fc.keys,fc),Wc=ac.max,$c=ac.min,Hc=ic.now,Vc=n.parseInt,Zc=ac.random,Gc=pc.reverse,Xc=xo(n,"DataView"),Qc=xo(n,"Map"),tl=xo(n,"Promise"),nl=xo(n,"Set"),rl=xo(n,"WeakMap"),el=xo(fc,"create"),il=rl&&new rl,ol={},ul=tu(Xc),al=tu(Qc),fl=tu(tl),sl=tu(nl),cl=tu(rl),ll=xc?xc.prototype:it,pl=ll?ll.valueOf:it,hl=ll?ll.toString:it,gl=function(){function t(){}return function(n){if(!of(n))return{};if(Rc)return Rc(n);t.prototype=n;var r=new t;return t.prototype=it,r}}();r.templateSettings={escape:En,evaluate:Tn,interpolate:Pn,variable:"",imports:{_:r}},r.prototype=e.prototype,r.prototype.constructor=r,i.prototype=gl(e.prototype),i.prototype.constructor=i,b.prototype=gl(e.prototype),b.prototype.constructor=b,rt.prototype.clear=Fn,rt.prototype.delete=Qn,rt.prototype.get=tr,rt.prototype.has=nr,rt.prototype.set=rr,er.prototype.clear=ir,er.prototype.delete=or,er.prototype.get=ur,er.prototype.has=ar,er.prototype.set=fr,sr.prototype.clear=cr,sr.prototype.delete=lr,sr.prototype.get=pr,sr.prototype.has=hr,sr.prototype.set=gr,_r.prototype.add=_r.prototype.push=yr,_r.prototype.has=mr,br.prototype.clear=xr,br.prototype.delete=Er,br.prototype.get=Tr,br.prototype.has=Pr,br.prototype.set=jr;var dl=qi(he),vl=qi(ge,!0),_l=Ji(),yl=Ji(!0),ml=il?function(t,n){return il.set(t,n),t}:js,bl=Nc?function(t,n){return Nc(t,"toString",{configurable:!0,enumerable:!1,value:Rs(n),writable:!0})}:js,wl=ri,Al=Lc||function(t){return Ir.clearTimeout(t)},Sl=nl&&1/V(new nl([,-0]))[1]==kt?function(t){return new nl(t)}:Bs,Ol=il?function(t){return il.get(t)}:Bs,xl=Fc?function(t){return null==t?[]:(t=fc(t),p(Fc(t),function(n){return Cc.call(t,n)}))}:Fs,El=Fc?function(t){for(var n=[];t;)v(n,xl(t)),t=Pc(t);return n}:Fs,Tl=ye;(Xc&&Tl(new Xc(new ArrayBuffer(1)))!=sn||Qc&&Tl(new Qc)!=Vt||tl&&"[object Promise]"!=Tl(tl.resolve())||nl&&Tl(new nl)!=nn||rl&&Tl(new rl)!=un)&&(Tl=function(t){var n=ye(t),r=n==Xt?t.constructor:it,e=r?tu(r):"";if(e)switch(e){case ul:return sn;case al:return Vt;case fl:return"[object Promise]";case sl:return nn;case cl:return un}return n});var Pl=dc?nf:zs,Rl=Go(ml),Cl=Dc||function(t,n){return Ir.setTimeout(t,n)},jl=Go(bl),kl=function(t){var n=ja(t,function(t){return r.size===st&&r.clear(),t}),r=n.cache;return n}(function(t){var n=[];return jn.test(t)&&n.push(""),t.replace(kn,function(t,r,e,i){n.push(e?i.replace(zn,"$1"):r||t)}),n}),Il=ri(function(t,n){return $a(t)?ae(t,pe(n,1,$a,!0)):[]}),Ul=ri(function(t,n){var r=wu(n);return $a(r)&&(r=it),$a(t)?ae(t,pe(n,1,$a,!0),Ao(r,2)):[]}),Nl=ri(function(t,n){var r=wu(n);return $a(r)&&(r=it),$a(t)?ae(t,pe(n,1,$a,!0),it,r):[]}),Ll=ri(function(t){var n=d(t,wi);return n.length&&n[0]===t[0]?Se(n):[]}),Bl=ri(function(t){var n=wu(t),r=d(t,wi);return n===wu(r)?n=it:r.pop(),r.length&&r[0]===t[0]?Se(r,Ao(n,2)):[]}),Dl=ri(function(t){var n=wu(t),r=d(t,wi);return n="function"==typeof n?n:it,n&&r.pop(),r.length&&r[0]===t[0]?Se(r,it,n):[]}),Kl=ri(Ou),Ml=_o(function(t,n){var r=null==t?0:t.length,e=ne(t,n);return Xe(t,d(n,function(t){return No(t,r)?+t:t}).sort(Ii)),e}),Fl=ri(function(t){return gi(pe(t,1,$a,!0))}),zl=ri(function(t){var n=wu(t);return $a(n)&&(n=it),gi(pe(t,1,$a,!0),Ao(n,2))}),ql=ri(function(t){var n=wu(t);return n="function"==typeof n?n:it,gi(pe(t,1,$a,!0),it,n)}),Jl=ri(function(t,n){return $a(t)?ae(t,n):[]}),Yl=ri(function(t){return mi(p(t,$a))}),Wl=ri(function(t){var n=wu(t);return $a(n)&&(n=it),mi(p(t,$a),Ao(n,2))}),$l=ri(function(t){var n=wu(t);return n="function"==typeof n?n:it,mi(p(t,$a),it,n)}),Hl=ri(Wu),Vl=ri(function(t){var n=t.length,r=n>1?t[n-1]:it;return r="function"==typeof r?(t.pop(),r):it,$u(t,r)}),Zl=_o(function(t){var n=t.length,r=n?t[0]:0,e=this.__wrapped__,o=function(n){return ne(n,t)};return!(n>1||this.__actions__.length)&&e instanceof b&&No(r)?(e=e.slice(r,+r+(n?1:0)),e.__actions__.push({func:Xu,args:[o],thisArg:it}),new i(e,this.__chain__).thru(function(t){return n&&!t.length&&t.push(it),t})):this.thru(o)}),Gl=Fi(function(t,n,r){_c.call(t,r)?++t[r]:te(t,r,1)}),Xl=Zi(lu),Ql=Zi(pu),tp=Fi(function(t,n,r){_c.call(t,r)?t[r].push(n):te(t,r,[n])}),np=ri(function(t,n,r){var e=-1,i="function"==typeof n,o=Wa(t)?ec(t.length):[];return dl(t,function(t){o[++e]=i?a(n,t,r):xe(t,n,r)}),o}),rp=Fi(function(t,n,r){te(t,r,n)}),ep=Fi(function(t,n,r){t[r?0:1].push(n)},function(){return[[],[]]}),ip=ri(function(t,n){if(null==t)return[];var r=n.length;return r>1&&Lo(t,n[0],n[1])?n=[]:r>2&&Lo(n[0],n[1],n[2])&&(n=[n[0]]),$e(t,pe(n,1),[])}),op=Bc||function(){return Ir.Date.now()},up=ri(function(t,n,r){var e=vt;if(r.length){var i=H(r,wo(up));e|=wt}return so(t,e,n,r,i)}),ap=ri(function(t,n,r){var e=vt|_t;if(r.length){var i=H(r,wo(ap));e|=wt}return so(n,e,t,r,i)}),fp=ri(function(t,n){return ue(t,1,n)}),sp=ri(function(t,n,r){return ue(t,xf(n)||0,r)});ja.Cache=sr;var cp=wl(function(t,n){n=1==n.length&&_p(n[0])?d(n[0],N(Ao())):d(pe(n,1),N(Ao()));var r=n.length;return ri(function(e){for(var i=-1,o=$c(e.length,r);++i<o;)e[i]=n[i].call(this,e[i]);return a(t,this,e)})}),lp=ri(function(t,n){var r=H(n,wo(lp));return so(t,wt,it,n,r)}),pp=ri(function(t,n){var r=H(n,wo(pp));return so(t,At,it,n,r)}),hp=_o(function(t,n){return so(t,Ot,it,it,it,n)}),gp=oo(me),dp=oo(function(t,n){return t>=n}),vp=Ee(function(){return arguments}())?Ee:function(t){return uf(t)&&_c.call(t,"callee")&&!Cc.call(t,"callee")},_p=ec.isArray,yp=Kr?N(Kr):Te,mp=zc||zs,bp=Mr?N(Mr):Pe,wp=Fr?N(Fr):je,Ap=zr?N(zr):Ue,Sp=qr?N(qr):Ne,Op=Jr?N(Jr):Le,xp=oo(Me),Ep=oo(function(t,n){return t<=n}),Tp=zi(function(t,n){if(Fo(n)||Wa(n))return void Di(n,Ff(n),t);for(var r in n)_c.call(n,r)&&Yr(t,r,n[r])}),Pp=zi(function(t,n){Di(n,zf(n),t)}),Rp=zi(function(t,n,r,e){Di(n,zf(n),t,e)}),Cp=zi(function(t,n,r,e){Di(n,Ff(n),t,e)}),jp=_o(ne),kp=ri(function(t){return t.push(it,co),a(Rp,it,t)}),Ip=ri(function(t){return t.push(it,lo),a(Dp,it,t)}),Up=Qi(function(t,n,r){t[n]=r},Rs(js)),Np=Qi(function(t,n,r){_c.call(t,n)?t[n].push(r):t[n]=[r]},Ao),Lp=ri(xe),Bp=zi(function(t,n,r){Je(t,n,r)}),Dp=zi(function(t,n,r,e){Je(t,n,r,e)}),Kp=_o(function(t,n){var r={};if(null==t)return r;var e=!1;n=d(n,function(n){return n=Si(n,t),e||(e=n.length>1),n}),Di(t,mo(t),r),e&&(r=ee(r,lt|pt|ht,po));for(var i=n.length;i--;)di(r,n[i]);return r}),Mp=_o(function(t,n){return null==t?{}:He(t,n)}),Fp=fo(Ff),zp=fo(zf),qp=$i(function(t,n,r){return n=n.toLowerCase(),t+(r?os(n):n)}),Jp=$i(function(t,n,r){return t+(r?"-":"")+n.toLowerCase()}),Yp=$i(function(t,n,r){return t+(r?" ":"")+n.toLowerCase()}),Wp=Wi("toLowerCase"),$p=$i(function(t,n,r){return t+(r?"_":"")+n.toLowerCase()}),Hp=$i(function(t,n,r){return t+(r?" ":"")+Zp(n)}),Vp=$i(function(t,n,r){return t+(r?" ":"")+n.toUpperCase()}),Zp=Wi("toUpperCase"),Gp=ri(function(t,n){try{return a(t,it,n)}catch(t){return Qa(t)?t:new oc(t)}}),Xp=_o(function(t,n){return s(n,function(n){n=Qo(n),te(t,n,up(t[n],t))}),t}),Qp=Gi(),th=Gi(!0),nh=ri(function(t,n){return function(r){return xe(r,t,n)}}),rh=ri(function(t,n){return function(r){return xe(t,r,n)}}),eh=no(d),ih=no(l),oh=no(m),uh=io(),ah=io(!0),fh=to(function(t,n){return t+n},0),sh=ao("ceil"),ch=to(function(t,n){return t/n},1),lh=ao("floor"),ph=to(function(t,n){return t*n},1),hh=ao("round"),gh=to(function(t,n){return t-n},0);return r.after=Oa,r.ary=xa,r.assign=Tp,r.assignIn=Pp,r.assignInWith=Rp,r.assignWith=Cp,r.at=jp,r.before=Ea,r.bind=up,r.bindAll=Xp,r.bindKey=ap,r.castArray=Ka,r.chain=Zu,r.chunk=eu,r.compact=iu,r.concat=ou,r.cond=Ts,r.conforms=Ps,r.constant=Rs,r.countBy=Gl,r.create=Rf,r.curry=Ta,r.curryRight=Pa,r.debounce=Ra,r.defaults=kp,r.defaultsDeep=Ip,r.defer=fp,r.delay=sp,r.difference=Il,r.differenceBy=Ul,r.differenceWith=Nl,r.drop=uu,r.dropRight=au,r.dropRightWhile=fu,r.dropWhile=su,r.fill=cu,r.filter=aa,r.flatMap=fa,r.flatMapDeep=sa,r.flatMapDepth=ca,r.flatten=hu,r.flattenDeep=gu,r.flattenDepth=du,r.flip=Ca,r.flow=Qp,r.flowRight=th,r.fromPairs=vu,r.functions=Lf,r.functionsIn=Bf,r.groupBy=tp,r.initial=mu,r.intersection=Ll,r.intersectionBy=Bl,r.intersectionWith=Dl,r.invert=Up,r.invertBy=Np,r.invokeMap=np,r.iteratee=ks,r.keyBy=rp,r.keys=Ff,r.keysIn=zf,r.map=ga,r.mapKeys=qf,r.mapValues=Jf,r.matches=Is,r.matchesProperty=Us,r.memoize=ja,r.merge=Bp,r.mergeWith=Dp,r.method=nh,r.methodOf=rh,r.mixin=Ns,r.negate=ka,r.nthArg=Ds,r.omit=Kp,r.omitBy=Yf,r.once=Ia,r.orderBy=da,r.over=eh,r.overArgs=cp,r.overEvery=ih,r.overSome=oh,r.partial=lp,r.partialRight=pp,r.partition=ep,r.pick=Mp,r.pickBy=Wf,r.property=Ks,r.propertyOf=Ms,r.pull=Kl,r.pullAll=Ou,r.pullAllBy=xu,r.pullAllWith=Eu,r.pullAt=Ml,r.range=uh,r.rangeRight=ah,r.rearg=hp,r.reject=ya,r.remove=Tu,r.rest=Ua,r.reverse=Pu,r.sampleSize=ba,r.set=Hf,r.setWith=Vf,r.shuffle=wa,r.slice=Ru,r.sortBy=ip,r.sortedUniq=Lu,r.sortedUniqBy=Bu,r.split=vs,r.spread=Na,r.tail=Du,r.take=Ku,r.takeRight=Mu,r.takeRightWhile=Fu,r.takeWhile=zu,r.tap=Gu,r.throttle=La,r.thru=Xu,r.toArray=wf,r.toPairs=Fp,r.toPairsIn=zp,r.toPath=$s,r.toPlainObject=Ef,r.transform=Zf,r.unary=Ba,r.union=Fl,r.unionBy=zl,r.unionWith=ql,r.uniq=qu,r.uniqBy=Ju,r.uniqWith=Yu,r.unset=Gf,r.unzip=Wu,r.unzipWith=$u,r.update=Xf,r.updateWith=Qf,r.values=ts,r.valuesIn=ns,r.without=Jl,r.words=Es,r.wrap=Da,r.xor=Yl,r.xorBy=Wl,r.xorWith=$l,r.zip=Hl,r.zipObject=Hu,r.zipObjectDeep=Vu,r.zipWith=Vl,r.entries=Fp,r.entriesIn=zp,r.extend=Pp,r.extendWith=Rp,Ns(r,r),r.add=fh,r.attempt=Gp,r.camelCase=qp,r.capitalize=os,r.ceil=sh,r.clamp=rs,r.clone=Ma,r.cloneDeep=za,r.cloneDeepWith=qa,r.cloneWith=Fa,r.conformsTo=Ja,r.deburr=us,r.defaultTo=Cs,r.divide=ch,r.endsWith=as,r.eq=Ya,r.escape=fs,r.escapeRegExp=ss,r.every=ua,r.find=Xl,r.findIndex=lu,r.findKey=Cf,r.findLast=Ql,r.findLastIndex=pu,r.findLastKey=jf,r.floor=lh,r.forEach=la,r.forEachRight=pa,r.forIn=kf,r.forInRight=If,r.forOwn=Uf,r.forOwnRight=Nf,r.get=Df,r.gt=gp,r.gte=dp,r.has=Kf,r.hasIn=Mf,r.head=_u,r.identity=js,r.includes=ha,r.indexOf=yu,r.inRange=es,r.invoke=Lp,r.isArguments=vp,r.isArray=_p,r.isArrayBuffer=yp,r.isArrayLike=Wa,r.isArrayLikeObject=$a,r.isBoolean=Ha,r.isBuffer=mp,r.isDate=bp,r.isElement=Va,r.isEmpty=Za,r.isEqual=Ga,r.isEqualWith=Xa,r.isError=Qa,r.isFinite=tf,r.isFunction=nf,r.isInteger=rf,r.isLength=ef,r.isMap=wp,r.isMatch=af,r.isMatchWith=ff,r.isNaN=sf,r.isNative=cf,r.isNil=pf,r.isNull=lf,r.isNumber=hf,r.isObject=of,r.isObjectLike=uf,r.isPlainObject=gf,r.isRegExp=Ap,r.isSafeInteger=df,r.isSet=Sp,r.isString=vf,r.isSymbol=_f,r.isTypedArray=Op,r.isUndefined=yf,r.isWeakMap=mf,r.isWeakSet=bf,r.join=bu,r.kebabCase=Jp,r.last=wu,r.lastIndexOf=Au,r.lowerCase=Yp,r.lowerFirst=Wp,r.lt=xp,r.lte=Ep,r.max=Vs,r.maxBy=Zs,r.mean=Gs,r.meanBy=Xs,r.min=Qs,r.minBy=tc,r.stubArray=Fs,r.stubFalse=zs,r.stubObject=qs,r.stubString=Js,r.stubTrue=Ys,r.multiply=ph,r.nth=Su,r.noConflict=Ls,r.noop=Bs,r.now=op,r.pad=cs,r.padEnd=ls,r.padStart=ps,r.parseInt=hs,r.random=is,r.reduce=va,r.reduceRight=_a,r.repeat=gs,r.replace=ds,r.result=$f,r.round=hh,r.runInContext=t,r.sample=ma,r.size=Aa,r.snakeCase=$p,r.some=Sa,r.sortedIndex=Cu,r.sortedIndexBy=ju,r.sortedIndexOf=ku,r.sortedLastIndex=Iu,r.sortedLastIndexBy=Uu,r.sortedLastIndexOf=Nu,r.startCase=Hp,r.startsWith=_s,r.subtract=gh,r.sum=nc,r.sumBy=rc,r.template=ys,r.times=Ws,r.toFinite=Af,r.toInteger=Sf,r.toLength=Of,r.toLower=ms,r.toNumber=xf,r.toSafeInteger=Tf,r.toString=Pf,r.toUpper=bs,r.trim=ws,r.trimEnd=As,r.trimStart=Ss,r.truncate=Os,r.unescape=xs,r.uniqueId=Hs,r.upperCase=Vp,r.upperFirst=Zp,r.each=la,r.eachRight=pa,r.first=_u,Ns(r,function(){var t={};return he(r,function(n,e){_c.call(r.prototype,e)||(t[e]=n)}),t}(),{chain:!1}),r.VERSION="4.17.4",s(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){r[t].placeholder=r}),s(["drop","take"],function(t,n){b.prototype[t]=function(r){r=r===it?1:Wc(Sf(r),0);var e=this.__filtered__&&!n?new b(this):this.clone();return e.__filtered__?e.__takeCount__=$c(r,e.__takeCount__):e.__views__.push({size:$c(r,Lt),type:t+(e.__dir__<0?"Right":"")}),e},b.prototype[t+"Right"]=function(n){return this.reverse()[t](n).reverse()}}),s(["filter","map","takeWhile"],function(t,n){var r=n+1,e=r==Ct||3==r;b.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:Ao(t,3),type:r}),n.__filtered__=n.__filtered__||e,n}}),s(["head","last"],function(t,n){var r="take"+(n?"Right":"");b.prototype[t]=function(){return this[r](1).value()[0]}}),s(["initial","tail"],function(t,n){var r="drop"+(n?"":"Right");b.prototype[t]=function(){return this.__filtered__?new b(this):this[r](1)}}),b.prototype.compact=function(){return this.filter(js)},b.prototype.find=function(t){return this.filter(t).head()},b.prototype.findLast=function(t){return this.reverse().find(t)},b.prototype.invokeMap=ri(function(t,n){return"function"==typeof t?new b(this):this.map(function(r){return xe(r,t,n)})}),b.prototype.reject=function(t){return this.filter(ka(Ao(t)))},b.prototype.slice=function(t,n){t=Sf(t);var r=this;return r.__filtered__&&(t>0||n<0)?new b(r):(t<0?r=r.takeRight(-t):t&&(r=r.drop(t)),n!==it&&(n=Sf(n),r=n<0?r.dropRight(-n):r.take(n-t)),r)},b.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},b.prototype.toArray=function(){return this.take(Lt)},he(b.prototype,function(t,n){var e=/^(?:filter|find|map|reject)|While$/.test(n),o=/^(?:head|last)$/.test(n),u=r[o?"take"+("last"==n?"Right":""):n],a=o||/^find/.test(n);u&&(r.prototype[n]=function(){var n=this.__wrapped__,f=o?[1]:arguments,s=n instanceof b,c=f[0],l=s||_p(n),p=function(t){var n=u.apply(r,v([t],f));return o&&h?n[0]:n};l&&e&&"function"==typeof c&&1!=c.length&&(s=l=!1);var h=this.__chain__,g=!!this.__actions__.length,d=a&&!h,_=s&&!g;if(!a&&l){n=_?n:new b(this);var y=t.apply(n,f);return y.__actions__.push({func:Xu,args:[p],thisArg:it}),new i(y,h)}return d&&_?t.apply(this,f):(y=this.thru(p),d?o?y.value()[0]:y.value():y)})}),s(["pop","push","shift","sort","splice","unshift"],function(t){var n=pc[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);r.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var r=this.value();return n.apply(_p(r)?r:[],t)}return this[e](function(r){return n.apply(_p(r)?r:[],t)})}}),he(b.prototype,function(t,n){var e=r[n];if(e){var i=e.name+"";(ol[i]||(ol[i]=[])).push({name:n,func:e})}}),ol[Xi(it,_t).name]=[{name:"wrapper",func:it}],b.prototype.clone=R,b.prototype.reverse=G,b.prototype.value=nt,r.prototype.at=Zl,r.prototype.chain=Qu,r.prototype.commit=ta,r.prototype.next=na,r.prototype.plant=ea,r.prototype.reverse=ia,r.prototype.toJSON=r.prototype.valueOf=r.prototype.value=oa,r.prototype.first=r.prototype.head,Ic&&(r.prototype[Ic]=ra),r}();Ir._=Vr,(i=function(){return Vr}.call(n,r,n,e))!==it&&(e.exports=i)}).call(this)}).call(n,r(6),r(14)(t))},function(t,n,r){"use strict";(function(n){var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e={};t.exports=e,e.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},e.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},e.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call(void 0!==n?n:0)},e.arrayBufferToString=function(t){if(this.isNodeJs())return t.toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var n,r=new Uint8Array(t),e="",i=r.length;for(n=0;n<i;++n)e+=String.fromCharCode(r[n]);return decodeURIComponent(escape(e))},e.callbackAdapter=function(t,n,r,e,i){"function"==typeof i?i(t,n):t?e(t):r(n)},t.exports.getUtilObject=function(t){return new function(){for(var n in e)e.hasOwnProperty(n)&&(this[n]=e[n]);this.debug=function(n){if(t.getConfig().debug){var n="flexio-sdk-js: "+n;console.log(n)}return this}}}}).call(n,r(4))},function(t,n,r){"use strict";t.exports={TASK_OP_CALC:"calc",TASK_OP_COMMENT:"comment",TASK_OP_CONVERT:"convert",TASK_OP_COPY:"copy",TASK_OP_CREATE:"create",TASK_OP_CUSTOM:"custom",TASK_OP_DISTINCT:"distinct",TASK_OP_DUMP:"dump",TASK_OP_DUPLICATE:"duplicate",TASK_OP_ECHO:"echo",TASK_OP_EMAIL_SEND:"email",TASK_OP_EXECUTE:"execute",TASK_OP_FIND_REPLACE:"replace",TASK_OP_FILTER:"filter",TASK_OP_FOREACH:"foreach",TASK_OP_GROUP:"group",TASK_OP_INSERT:"insert",TASK_OP_LIMIT:"limit",TASK_OP_LIST:"list",TASK_OP_MERGE:"merge",TASK_OP_MKDIR:"mkdir",TASK_OP_NOP:"nop",TASK_OP_PROMPT:"prompt",TASK_OP_R:"r",TASK_OP_READ:"read",TASK_OP_RENAME:"rename",TASK_OP_RENDER:"render",TASK_OP_REQUEST:"request",TASK_OP_SEARCH:"search",TASK_OP_SELECT:"select",TASK_OP_SEQUENCE:"sequence",TASK_OP_SET:"set",TASK_OP_SLEEP:"sleep",TASK_OP_SORT:"sort",TASK_OP_TRANSFORM:"transform",TASK_OP_WRITE:"write"}},function(t,n,r){"use strict";function e(t){return"[object Array]"===O.call(t)}function i(t){return"[object ArrayBuffer]"===O.call(t)}function o(t){return"undefined"!=typeof FormData&&t instanceof FormData}function u(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer}function a(t){return"string"==typeof t}function f(t){return"number"==typeof t}function s(t){return void 0===t}function c(t){return null!==t&&"object"==typeof t}function l(t){return"[object Date]"===O.call(t)}function p(t){return"[object File]"===O.call(t)}function h(t){return"[object Blob]"===O.call(t)}function g(t){return"[object Function]"===O.call(t)}function d(t){return c(t)&&g(t.pipe)}function v(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams}function _(t){return t.replace(/^\s*/,"").replace(/\s*$/,"")}function y(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function m(t,n){if(null!==t&&void 0!==t)if("object"==typeof t||e(t)||(t=[t]),e(t))for(var r=0,i=t.length;r<i;r++)n.call(null,t[r],r,t);else for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&n.call(null,t[o],o,t)}function b(){function t(t,r){"object"==typeof n[r]&&"object"==typeof t?n[r]=b(n[r],t):n[r]=t}for(var n={},r=0,e=arguments.length;r<e;r++)m(arguments[r],t);return n}function w(t,n,r){return m(n,function(n,e){t[e]=r&&"function"==typeof n?A(n,r):n}),t}var A=r(7),S=r(17),O=Object.prototype.toString;t.exports={isArray:e,isArrayBuffer:i,isBuffer:S,isFormData:o,isArrayBufferView:u,isString:a,isNumber:f,isObject:c,isUndefined:s,isDate:l,isFile:p,isBlob:h,isFunction:g,isStream:d,isURLSearchParams:v,isStandardBrowserEnv:y,forEach:m,merge:b,extend:w,trim:_}},function(t,n){function r(){throw new Error("setTimeout has not been defined")}function e(){throw new Error("clearTimeout has not been defined")}function i(t){if(c===setTimeout)return setTimeout(t,0);if((c===r||!c)&&setTimeout)return c=setTimeout,setTimeout(t,0);try{return c(t,0)}catch(n){try{return c.call(null,t,0)}catch(n){return c.call(this,t,0)}}}function o(t){if(l===clearTimeout)return clearTimeout(t);if((l===e||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(t);try{return l(t)}catch(n){try{return l.call(null,t)}catch(n){return l.call(this,t)}}}function u(){d&&h&&(d=!1,h.length?g=h.concat(g):v=-1,g.length&&a())}function a(){if(!d){var t=i(u);d=!0;for(var n=g.length;n;){for(h=g,g=[];++v<n;)h&&h[v].run();v=-1,n=g.length}h=null,d=!1,o(t)}}function f(t,n){this.fun=t,this.array=n}function s(){}var c,l,p=t.exports={};!function(){try{c="function"==typeof setTimeout?setTimeout:r}catch(t){c=r}try{l="function"==typeof clearTimeout?clearTimeout:e}catch(t){l=e}}();var h,g=[],d=!1,v=-1;p.nextTick=function(t){var n=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)n[r-1]=arguments[r];g.push(new f(t,n)),1!==g.length||d||i(a)},f.prototype.run=function(){this.fun.apply(null,this.array)},p.title="browser",p.browser=!0,p.env={},p.argv=[],p.version="",p.versions={},p.on=s,p.addListener=s,p.once=s,p.off=s,p.removeListener=s,p.removeAllListeners=s,p.emit=s,p.prependListener=s,p.prependOnceListener=s,p.listeners=function(t){return[]},p.binding=function(t){throw new Error("process.binding is not supported")},p.cwd=function(){return"/"},p.chdir=function(t){throw new Error("process.chdir is not supported")},p.umask=function(){return 0}},function(t,n,r){"use strict";(function(n){function e(t,n){!i.isUndefined(t)&&i.isUndefined(t["Content-Type"])&&(t["Content-Type"]=n)}var i=r(3),o=r(19),u={"Content-Type":"application/x-www-form-urlencoded"},a={adapter:function(){var t;return"undefined"!=typeof XMLHttpRequest?t=r(8):void 0!==n&&(t=r(8)),t}(),transformRequest:[function(t,n){return o(n,"Content-Type"),i.isFormData(t)||i.isArrayBuffer(t)||i.isBuffer(t)||i.isStream(t)||i.isFile(t)||i.isBlob(t)?t:i.isArrayBufferView(t)?t.buffer:i.isURLSearchParams(t)?(e(n,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):i.isObject(t)?(e(n,"application/json;charset=utf-8"),JSON.stringify(t)):t}],transformResponse:[function(t){if("string"==typeof t)try{t=JSON.parse(t)}catch(t){}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(t){return t>=200&&t<300}};a.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(t){a.headers[t]={}}),i.forEach(["post","put","patch"],function(t){a.headers[t]=i.merge(u)}),t.exports=a}).call(n,r(4))},function(t,n){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,n,r){"use strict";t.exports=function(t,n){return function(){for(var r=new Array(arguments.length),e=0;e<r.length;e++)r[e]=arguments[e];return t.apply(n,r)}}},function(t,n,r){"use strict";(function(n){var e=r(3),i=r(20),o=r(22),u=r(23),a=r(24),f=r(9),s="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||r(25);t.exports=function(t){return new Promise(function(c,l){var p=t.data,h=t.headers;e.isFormData(p)&&delete h["Content-Type"];var g=new XMLHttpRequest,d="onreadystatechange",v=!1;if("test"===n.env.NODE_ENV||"undefined"==typeof window||!window.XDomainRequest||"withCredentials"in g||a(t.url)||(g=new window.XDomainRequest,d="onload",v=!0,g.onprogress=function(){},g.ontimeout=function(){}),t.auth){var _=t.auth.username||"",y=t.auth.password||"";h.Authorization="Basic "+s(_+":"+y)}if(g.open(t.method.toUpperCase(),o(t.url,t.params,t.paramsSerializer),!0),g.timeout=t.timeout,g[d]=function(){if(g&&(4===g.readyState||v)&&(0!==g.status||g.responseURL&&0===g.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in g?u(g.getAllResponseHeaders()):null,r=t.responseType&&"text"!==t.responseType?g.response:g.responseText,e={data:r,status:1223===g.status?204:g.status,statusText:1223===g.status?"No Content":g.statusText,headers:n,config:t,request:g};i(c,l,e),g=null}},g.onerror=function(){l(f("Network Error",t,null,g)),g=null},g.ontimeout=function(){l(f("timeout of "+t.timeout+"ms exceeded",t,"ECONNABORTED",g)),g=null},e.isStandardBrowserEnv()){var m=r(26),b=(t.withCredentials||a(t.url))&&t.xsrfCookieName?m.read(t.xsrfCookieName):void 0;b&&(h[t.xsrfHeaderName]=b)}if("setRequestHeader"in g&&e.forEach(h,function(t,n){void 0===p&&"content-type"===n.toLowerCase()?delete h[n]:g.setRequestHeader(n,t)}),t.withCredentials&&(g.withCredentials=!0),t.responseType)try{g.responseType=t.responseType}catch(n){if("json"!==t.responseType)throw n}"function"==typeof t.onDownloadProgress&&g.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&g.upload&&g.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then(function(t){g&&(g.abort(),l(t),g=null)}),void 0===p&&(p=null),g.send(p)})}}).call(n,r(4))},function(t,n,r){"use strict";var e=r(21);t.exports=function(t,n,r,i,o){var u=new Error(t);return e(u,n,r,i,o)}},function(t,n,r){"use strict";t.exports=function(t){return!(!t||!t.__CANCEL__)}},function(t,n,r){"use strict";function e(t){this.message=t}e.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},e.prototype.__CANCEL__=!0,t.exports=e},function(t,n,r){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var e=r(13);n.default=e},function(t,n,r){"use strict";(function(n){var e=r(0),i=r(15),o=r(34),u={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},a={version:r(63).version,_init:function(){this.connections=r(64).getConnectionsObject(this),this.pipes=r(65).getPipesObject(this),this.util=r(1).getUtilObject(this),this._http=null;var t=r(66).getPipeConstructor;this.pipe=t(this);var n=r(67).getConnectionConstructor;this.connection=n(this)},setup:function(t,n){return u=e.assign(u,{token:t},n),this._http=null,this._createHttp(),this},getConfig:function(){return e.assign({},u)},http:function(){return this._http||this._createHttp(),this._http},task:o,_createHttp:function(){var t={baseURL:u.baseUrl,headers:{Authorization:"Bearer "+u.token}};!0===u.insecure&&(n.env.NODE_TLS_REJECT_UNAUTHORIZED="0"),this._http=i.create(t)}};a._init(),t.exports=a}).call(n,r(4))},function(t,n){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,n,r){t.exports=r(16)},function(t,n,r){"use strict";function e(t){var n=new u(t),r=o(u.prototype.request,n);return i.extend(r,u.prototype,n),i.extend(r,n),r}var i=r(3),o=r(7),u=r(18),a=r(5),f=e(a);f.Axios=u,f.create=function(t){return e(i.merge(a,t))},f.Cancel=r(11),f.CancelToken=r(32),f.isCancel=r(10),f.all=function(t){return Promise.all(t)},f.spread=r(33),t.exports=f,t.exports.default=f},function(t,n){function r(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function e(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&r(t.slice(0,0))}/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +t.exports=function(t){return null!=t&&(r(t)||e(t)||!!t._isBuffer)}},function(t,n,r){"use strict";function e(t){this.defaults=t,this.interceptors={request:new u,response:new u}}var i=r(5),o=r(3),u=r(27),a=r(28),f=r(30),s=r(31);e.prototype.request=function(t){"string"==typeof t&&(t=o.merge({url:arguments[0]},arguments[1])),t=o.merge(i,this.defaults,{method:"get"},t),t.method=t.method.toLowerCase(),t.baseURL&&!f(t.url)&&(t.url=s(t.baseURL,t.url));var n=[a,void 0],r=Promise.resolve(t);for(this.interceptors.request.forEach(function(t){n.unshift(t.fulfilled,t.rejected)}),this.interceptors.response.forEach(function(t){n.push(t.fulfilled,t.rejected)});n.length;)r=r.then(n.shift(),n.shift());return r},o.forEach(["delete","get","head","options"],function(t){e.prototype[t]=function(n,r){return this.request(o.merge(r||{},{method:t,url:n}))}}),o.forEach(["post","put","patch"],function(t){e.prototype[t]=function(n,r,e){return this.request(o.merge(e||{},{method:t,url:n,data:r}))}}),t.exports=e},function(t,n,r){"use strict";var e=r(3);t.exports=function(t,n){e.forEach(t,function(r,e){e!==n&&e.toUpperCase()===n.toUpperCase()&&(t[n]=r,delete t[e])})}},function(t,n,r){"use strict";var e=r(9);t.exports=function(t,n,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?n(e("Request failed with status code "+r.status,r.config,null,r.request,r)):t(r)}},function(t,n,r){"use strict";t.exports=function(t,n,r,e,i){return t.config=n,r&&(t.code=r),t.request=e,t.response=i,t}},function(t,n,r){"use strict";function e(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var i=r(3);t.exports=function(t,n,r){if(!n)return t;var o;if(r)o=r(n);else if(i.isURLSearchParams(n))o=n.toString();else{var u=[];i.forEach(n,function(t,n){null!==t&&void 0!==t&&(i.isArray(t)&&(n+="[]"),i.isArray(t)||(t=[t]),i.forEach(t,function(t){i.isDate(t)?t=t.toISOString():i.isObject(t)&&(t=JSON.stringify(t)),u.push(e(n)+"="+e(t))}))}),o=u.join("&")}return o&&(t+=(-1===t.indexOf("?")?"?":"&")+o),t}},function(t,n,r){"use strict";var e=r(3);t.exports=function(t){var n,r,i,o={};return t?(e.forEach(t.split("\n"),function(t){i=t.indexOf(":"),n=e.trim(t.substr(0,i)).toLowerCase(),r=e.trim(t.substr(i+1)),n&&(o[n]=o[n]?o[n]+", "+r:r)}),o):o}},function(t,n,r){"use strict";var e=r(3);t.exports=e.isStandardBrowserEnv()?function(){function t(t){var n=t;return r&&(i.setAttribute("href",n),n=i.href),i.setAttribute("href",n),{href:i.href,protocol:i.protocol?i.protocol.replace(/:$/,""):"",host:i.host,search:i.search?i.search.replace(/^\?/,""):"",hash:i.hash?i.hash.replace(/^#/,""):"",hostname:i.hostname,port:i.port,pathname:"/"===i.pathname.charAt(0)?i.pathname:"/"+i.pathname}}var n,r=/(msie|trident)/i.test(navigator.userAgent),i=document.createElement("a");return n=t(window.location.href),function(r){var i=e.isString(r)?t(r):r;return i.protocol===n.protocol&&i.host===n.host}}():function(){return function(){return!0}}()},function(t,n,r){"use strict";function e(){this.message="String contains an invalid character"}function i(t){for(var n,r,i=String(t),u="",a=0,f=o;i.charAt(0|a)||(f="=",a%1);u+=f.charAt(63&n>>8-a%1*8)){if((r=i.charCodeAt(a+=.75))>255)throw new e;n=n<<8|r}return u}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.prototype=new Error,e.prototype.code=5,e.prototype.name="InvalidCharacterError",t.exports=i},function(t,n,r){"use strict";var e=r(3);t.exports=e.isStandardBrowserEnv()?function(){return{write:function(t,n,r,i,o,u){var a=[];a.push(t+"="+encodeURIComponent(n)),e.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),e.isString(i)&&a.push("path="+i),e.isString(o)&&a.push("domain="+o),!0===u&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var n=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return n?decodeURIComponent(n[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(t,n,r){"use strict";function e(){this.handlers=[]}var i=r(3);e.prototype.use=function(t,n){return this.handlers.push({fulfilled:t,rejected:n}),this.handlers.length-1},e.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},e.prototype.forEach=function(t){i.forEach(this.handlers,function(n){null!==n&&t(n)})},t.exports=e},function(t,n,r){"use strict";function e(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var i=r(3),o=r(29),u=r(10),a=r(5);t.exports=function(t){return e(t),t.headers=t.headers||{},t.data=o(t.data,t.headers,t.transformRequest),t.headers=i.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(n){delete t.headers[n]}),(t.adapter||a.adapter)(t).then(function(n){return e(t),n.data=o(n.data,n.headers,t.transformResponse),n},function(n){return u(n)||(e(t),n&&n.response&&(n.response.data=o(n.response.data,n.response.headers,t.transformResponse))),Promise.reject(n)})}},function(t,n,r){"use strict";var e=r(3);t.exports=function(t,n,r){return e.forEach(r,function(r){t=r(t,n)}),t}},function(t,n,r){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,n,r){"use strict";t.exports=function(t,n){return n?t.replace(/\/+$/,"")+"/"+n.replace(/^\/+/,""):t}},function(t,n,r){"use strict";function e(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var n;this.promise=new Promise(function(t){n=t});var r=this;t(function(t){r.reason||(r.reason=new i(t),n(r.reason))})}var i=r(11);e.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},e.source=function(){var t;return{token:new e(function(n){t=n}),cancel:t}},t.exports=e},function(t,n,r){"use strict";t.exports=function(t){return function(n){return t.apply(null,n)}}},function(t,n,r){"use strict";var e=r(0),i=r(2),o=r(35),u=r(36),a=r(37),f=r(38),s=r(39),c=r(40),l=r(41),p=r(46),h=r(47),g=r(48),d=r(49),v=r(50),_=r(51),y=r(52),m=r(53),b=r(54),w=r(55),A=r(56),S=r(57),O=r(58),x=r(59),E=r(60),T=r(61),P=r(62),R=function(t,n){switch(e.get(t,"op","")){default:return E.toCode(t);case i.TASK_OP_CREATE:return o.toCode(t,n);case i.TASK_OP_CONVERT:return u.toCode(t,n);case i.TASK_OP_COPY:return a.toCode(t,n);case i.TASK_OP_DUMP:return f.toCode(t,n);case i.TASK_OP_ECHO:return s.toCode(t,n);case i.TASK_OP_EMAIL_SEND:return c.toCode(t,n);case i.TASK_OP_EXECUTE:return l.toCode(t,n);case i.TASK_OP_FILTER:return p.toCode(t,n);case i.TASK_OP_FOREACH:return h.toCode(t,n);case i.TASK_OP_INSERT:return g.toCode(t,n);case i.TASK_OP_LIMIT:return d.toCode(t,n);case i.TASK_OP_LIST:return y.toCode(t,n);case i.TASK_OP_MERGE:return v.toCode(t,n);case i.TASK_OP_MKDIR:return _.toCode(t,n);case i.TASK_OP_READ:return m.toCode(t,n);case i.TASK_OP_RENDER:return b.toCode(t,n);case i.TASK_OP_REQUEST:return w.toCode(t,n);case i.TASK_OP_SELECT:return A.toCode(t,n);case i.TASK_OP_SEQUENCE:return S.toCode(t,n);case i.TASK_OP_SET:return O.toCode(t,n);case i.TASK_OP_SLEEP:return x.toCode(t,n);case i.TASK_OP_TRANSFORM:return T.toCode(t,n);case i.TASK_OP_WRITE:return P.toCode(t,n)}};t.exports={create:o,convert:u,copy:a,dump:f,echo:s,email:c,execute:l.execute,insert:g,filter:p,foreach:h,javascript:l.javascript,limit:d,list:y,merge:v,mkdir:_,python:l.python,read:m,render:b,request:w,select:A,sequence:S,set:O,sleep:x,task:E,transform:T,write:P,toCode:R}},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t,n){if(Array.isArray(t))return{op:i.TASK_OP_CREATE,params:{content_type:"application/vnd.flexio.table",columns:t}};var r={op:i.TASK_OP_CREATE,params:{path:t}};return void 0!==n&&(Array.isArray(n)?r.params.columns=n:r.params.content_type=n),r};o.toCode=function(t,n){var r=e.get(t,"params",{}),i=JSON.stringify(r.path)||void 0,o=JSON.stringify(r.content_type)||void 0,u=JSON.stringify(r.columns)||void 0;return void 0!==i?void 0!==u?"create("+i+", "+u+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==u?"create("+u+")":void 0!==o?"":void 0},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o={format:"delimited",delimiter:"{comma}",header:!0,qualifier:"{double-quote}"},u={format:"delimited",delimiter:"{tab}",header:!0,qualifier:"{none}"},a=function(t,n){var r={op:i.TASK_OP_CONVERT,params:{}};return e.isString(t)?"csv"==t?e.set(r,"params.input",o):"tsv"==t?e.set(r,"params.input",u):e.set(r,"params.input.format",t):e.isPlainObject(t)&&e.set(r,"params.input",t),e.isString(n)?"csv"==n?e.set(r,"params.output",o):"tsv"==n?e.set(r,"params.output",u):e.set(r,"params.output.format",n):e.isPlainObject(n)&&e.set(r,"params.output",n),r};a.toCode=function(t,n){var r,i,a=e.get(t,"params",{}),f=e.get(a,"input",{}),s=e.get(a,"output",{});return e.isEqual(f,o)&&(r="csv"),e.isEqual(s,o)&&(i="csv"),e.isEqual(f,u)&&(r="tsv"),e.isEqual(s,u)&&(i="tsv"),e.isEmpty(e.omit(f,["format"]))&&(r=e.get(f,"format","")),e.isEmpty(e.omit(s,["format"]))&&(i=e.get(s,"format","")),r||(r=f),i||(i=s),"convert("+JSON.stringify(r)+", "+JSON.stringify(i)+")"},t.exports=a},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t,n,r){var o={op:i.TASK_OP_COPY,params:{from:t,to:n}};return e.isPlainObject(r)&&(o.params.options=r),o};o.toCode=function(t,n){var r=e.get(t,"params",{}),i=JSON.stringify(r.from)||'""',o=JSON.stringify(r.to)||'""',u=r.hasOwnProperty("options")&&e.isPlainObject(r.options)?JSON.stringify(r.options):null,a="copy("+i+", "+o;return null!==u&&(a+=", "+u),a+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_DUMP,params:{msg:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"dump("+(JSON.stringify(r.msg)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_ECHO,params:{msg:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"echo("+(JSON.stringify(r.msg)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){if(!e.isPlainObject(t))throw"The first function parameter must be an object";if(!e.has(t,"to"))throw"The `to` parameter is required";if(!e.has(t,"body_text"))throw"The `body_text` parameter is required";return{op:i.TASK_OP_EMAIL_SEND,params:t}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"email("+JSON.stringify(r,null,2)+")"},t.exports=o},function(t,n,r){"use strict";(function(n,e){var i=r(0),o=(r(1),r(2)),u=function(){return void 0!==n},a=function(t){try{return u()?e(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},f=function(t){try{return u()?e.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},s=function(t){var n;try{n=t.toString(),n=n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))}catch(t){n=""}return n},c=function(t){if(i.isString(t))return t;if(i.isFunction(t)){var n;if(0==t.length)return"exports.flexio_handler = function(context) "+(n=s(t));if(n=t.toString(),"function"==n.substring(0,8))n=n.slice(8);else{var r=n.indexOf("=>"),e=n.indexOf("{");r>=0&&r<e&&(n=n.replace("=>s*{","{"))}return"exports.flexio_handler = function"+n}},l=function(){var t,n,r,e=Array.from(arguments),u=i.get(e,"[0]",null),f=i.get(e,"[1]",null),s=i.get(e,"[2]",null),l={op:o.TASK_OP_EXECUTE,params:{}};"python"==u||"javascript"==u?(t=u,n=f,null!==n&&void 0!==n||(n=""),r=s):(t="javascript",n=u,r=f),"javascript"==t&&(n=c(n)),i.set(l,"params.lang",t);var p=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return n.match(p)?i.set(l,"params.path",n):i.set(l,"params.code",a(n)),null!==r&&i.set(l,"params.integrity",r),l},p=function(){var t=Array.from(arguments);return t.unshift("javascript"),l.apply(this,t)},h=function(){var t=Array.from(arguments);return t.unshift("python"),l.apply(this,t)},g=function(t){var n=i.get(t,"params",{}),r=n.lang||"",e=f(n.code||"");switch(r){case"javascript":return e=e.replace("exports.flexio_handler =",""),"javascript("+e.trim()+")";case"python":return"python(`\n"+e+"\n`)";default:return"execute("+JSON.stringify(r)+", `\n"+e+"\n`)"}};t.exports={execute:l,javascript:p,python:h,toCode:g}}).call(n,r(4),r(42).Buffer)},function(t,n,r){"use strict";(function(t){function e(){return o.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function i(t,n){if(e()<n)throw new RangeError("Invalid typed array length");return o.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(n),t.__proto__=o.prototype):(null===t&&(t=new o(n)),t.length=n),t}function o(t,n,r){if(!(o.TYPED_ARRAY_SUPPORT||this instanceof o))return new o(t,n,r);if("number"==typeof t){if("string"==typeof n)throw new Error("If encoding is specified then the first argument must be a string");return s(this,t)}return u(this,t,n,r)}function u(t,n,r,e){if("number"==typeof n)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&n instanceof ArrayBuffer?p(t,n,r,e):"string"==typeof n?c(t,n,r):h(t,n)}function a(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function f(t,n,r,e){return a(n),n<=0?i(t,n):void 0!==r?"string"==typeof e?i(t,n).fill(r,e):i(t,n).fill(r):i(t,n)}function s(t,n){if(a(n),t=i(t,n<0?0:0|g(n)),!o.TYPED_ARRAY_SUPPORT)for(var r=0;r<n;++r)t[r]=0;return t}function c(t,n,r){if("string"==typeof r&&""!==r||(r="utf8"),!o.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var e=0|v(n,r);t=i(t,e);var u=t.write(n,r);return u!==e&&(t=t.slice(0,u)),t}function l(t,n){var r=n.length<0?0:0|g(n.length);t=i(t,r);for(var e=0;e<r;e+=1)t[e]=255&n[e];return t}function p(t,n,r,e){if(n.byteLength,r<0||n.byteLength<r)throw new RangeError("'offset' is out of bounds");if(n.byteLength<r+(e||0))throw new RangeError("'length' is out of bounds");return n=void 0===r&&void 0===e?new Uint8Array(n):void 0===e?new Uint8Array(n,r):new Uint8Array(n,r,e),o.TYPED_ARRAY_SUPPORT?(t=n,t.__proto__=o.prototype):t=l(t,n),t}function h(t,n){if(o.isBuffer(n)){var r=0|g(n.length);return t=i(t,r),0===t.length?t:(n.copy(t,0,0,r),t)}if(n){if("undefined"!=typeof ArrayBuffer&&n.buffer instanceof ArrayBuffer||"length"in n)return"number"!=typeof n.length||V(n.length)?i(t,0):l(t,n);if("Buffer"===n.type&&X(n.data))return l(t,n.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function g(t){if(t>=e())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+e().toString(16)+" bytes");return 0|t}function d(t){return+t!=t&&(t=0),o.alloc(+t)}function v(t,n){if(o.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var e=!1;;)switch(n){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return J(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return $(t).length;default:if(e)return J(t).length;n=(""+n).toLowerCase(),e=!0}}function _(t,n,r){var e=!1;if((void 0===n||n<0)&&(n=0),n>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,n>>>=0,r<=n)return"";for(t||(t="utf8");;)switch(t){case"hex":return k(this,n,r);case"utf8":case"utf-8":return P(this,n,r);case"ascii":return C(this,n,r);case"latin1":case"binary":return j(this,n,r);case"base64":return T(this,n,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,n,r);default:if(e)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),e=!0}}function y(t,n,r){var e=t[n];t[n]=t[r],t[r]=e}function m(t,n,r,e,i){if(0===t.length)return-1;if("string"==typeof r?(e=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof n&&(n=o.from(n,e)),o.isBuffer(n))return 0===n.length?-1:b(t,n,r,e,i);if("number"==typeof n)return n&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,n,r):Uint8Array.prototype.lastIndexOf.call(t,n,r):b(t,[n],r,e,i);throw new TypeError("val must be string, number or Buffer")}function b(t,n,r,e,i){function o(t,n){return 1===u?t[n]:t.readUInt16BE(n*u)}var u=1,a=t.length,f=n.length;if(void 0!==e&&("ucs2"===(e=String(e).toLowerCase())||"ucs-2"===e||"utf16le"===e||"utf-16le"===e)){if(t.length<2||n.length<2)return-1;u=2,a/=2,f/=2,r/=2}var s;if(i){var c=-1;for(s=r;s<a;s++)if(o(t,s)===o(n,-1===c?0:s-c)){if(-1===c&&(c=s),s-c+1===f)return c*u}else-1!==c&&(s-=s-c),c=-1}else for(r+f>a&&(r=a-f),s=r;s>=0;s--){for(var l=!0,p=0;p<f;p++)if(o(t,s+p)!==o(n,p)){l=!1;break}if(l)return s}return-1}function w(t,n,r,e){r=Number(r)||0;var i=t.length-r;e?(e=Number(e))>i&&(e=i):e=i;var o=n.length;if(o%2!=0)throw new TypeError("Invalid hex string");e>o/2&&(e=o/2);for(var u=0;u<e;++u){var a=parseInt(n.substr(2*u,2),16);if(isNaN(a))return u;t[r+u]=a}return u}function A(t,n,r,e){return H(J(n,t.length-r),t,r,e)}function S(t,n,r,e){return H(Y(n),t,r,e)}function O(t,n,r,e){return S(t,n,r,e)}function x(t,n,r,e){return H($(n),t,r,e)}function E(t,n,r,e){return H(W(n,t.length-r),t,r,e)}function T(t,n,r){return 0===n&&r===t.length?Z.fromByteArray(t):Z.fromByteArray(t.slice(n,r))}function P(t,n,r){r=Math.min(t.length,r);for(var e=[],i=n;i<r;){var o=t[i],u=null,a=o>239?4:o>223?3:o>191?2:1;if(i+a<=r){var f,s,c,l;switch(a){case 1:o<128&&(u=o);break;case 2:f=t[i+1],128==(192&f)&&(l=(31&o)<<6|63&f)>127&&(u=l);break;case 3:f=t[i+1],s=t[i+2],128==(192&f)&&128==(192&s)&&(l=(15&o)<<12|(63&f)<<6|63&s)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:f=t[i+1],s=t[i+2],c=t[i+3],128==(192&f)&&128==(192&s)&&128==(192&c)&&(l=(15&o)<<18|(63&f)<<12|(63&s)<<6|63&c)>65535&&l<1114112&&(u=l)}}null===u?(u=65533,a=1):u>65535&&(u-=65536,e.push(u>>>10&1023|55296),u=56320|1023&u),e.push(u),i+=a}return R(e)}function R(t){var n=t.length;if(n<=Q)return String.fromCharCode.apply(String,t);for(var r="",e=0;e<n;)r+=String.fromCharCode.apply(String,t.slice(e,e+=Q));return r}function C(t,n,r){var e="";r=Math.min(t.length,r);for(var i=n;i<r;++i)e+=String.fromCharCode(127&t[i]);return e}function j(t,n,r){var e="";r=Math.min(t.length,r);for(var i=n;i<r;++i)e+=String.fromCharCode(t[i]);return e}function k(t,n,r){var e=t.length;(!n||n<0)&&(n=0),(!r||r<0||r>e)&&(r=e);for(var i="",o=n;o<r;++o)i+=q(t[o]);return i}function I(t,n,r){for(var e=t.slice(n,r),i="",o=0;o<e.length;o+=2)i+=String.fromCharCode(e[o]+256*e[o+1]);return i}function U(t,n,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+n>r)throw new RangeError("Trying to access beyond buffer length")}function N(t,n,r,e,i,u){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>i||n<u)throw new RangeError('"value" argument is out of bounds');if(r+e>t.length)throw new RangeError("Index out of range")}function L(t,n,r,e){n<0&&(n=65535+n+1);for(var i=0,o=Math.min(t.length-r,2);i<o;++i)t[r+i]=(n&255<<8*(e?i:1-i))>>>8*(e?i:1-i)}function B(t,n,r,e){n<0&&(n=4294967295+n+1);for(var i=0,o=Math.min(t.length-r,4);i<o;++i)t[r+i]=n>>>8*(e?i:3-i)&255}function D(t,n,r,e,i,o){if(r+e>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function K(t,n,r,e,i){return i||D(t,n,r,4,3.4028234663852886e38,-3.4028234663852886e38),G.write(t,n,r,e,23,4),r+4}function M(t,n,r,e,i){return i||D(t,n,r,8,1.7976931348623157e308,-1.7976931348623157e308),G.write(t,n,r,e,52,8),r+8}function F(t){if(t=z(t).replace(tt,""),t.length<2)return"";for(;t.length%4!=0;)t+="=";return t}function z(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function q(t){return t<16?"0"+t.toString(16):t.toString(16)}function J(t,n){n=n||1/0;for(var r,e=t.length,i=null,o=[],u=0;u<e;++u){if((r=t.charCodeAt(u))>55295&&r<57344){if(!i){if(r>56319){(n-=3)>-1&&o.push(239,191,189);continue}if(u+1===e){(n-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(n-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(n-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((n-=1)<0)break;o.push(r)}else if(r<2048){if((n-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((n-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((n-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(t){for(var n=[],r=0;r<t.length;++r)n.push(255&t.charCodeAt(r));return n}function W(t,n){for(var r,e,i,o=[],u=0;u<t.length&&!((n-=2)<0);++u)r=t.charCodeAt(u),e=r>>8,i=r%256,o.push(i),o.push(e);return o}function $(t){return Z.toByteArray(F(t))}function H(t,n,r,e){for(var i=0;i<e&&!(i+r>=n.length||i>=t.length);++i)n[i+r]=t[i];return i}function V(t){return t!==t}/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> + * @license MIT + */ +var Z=r(43),G=r(44),X=r(45);n.Buffer=o,n.SlowBuffer=d,n.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),n.kMaxLength=e(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,n,r){return u(null,t,n,r)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,n,r){return f(null,t,n,r)},o.allocUnsafe=function(t){return s(null,t)},o.allocUnsafeSlow=function(t){return s(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,n){if(!o.isBuffer(t)||!o.isBuffer(n))throw new TypeError("Arguments must be Buffers");if(t===n)return 0;for(var r=t.length,e=n.length,i=0,u=Math.min(r,e);i<u;++i)if(t[i]!==n[i]){r=t[i],e=n[i];break}return r<e?-1:e<r?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(t,n){if(!X(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var r;if(void 0===n)for(n=0,r=0;r<t.length;++r)n+=t[r].length;var e=o.allocUnsafe(n),i=0;for(r=0;r<t.length;++r){var u=t[r];if(!o.isBuffer(u))throw new TypeError('"list" argument must be an Array of Buffers');u.copy(e,i),i+=u.length}return e},o.byteLength=v,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var n=0;n<t;n+=2)y(this,n,n+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var n=0;n<t;n+=4)y(this,n,n+3),y(this,n+1,n+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var n=0;n<t;n+=8)y(this,n,n+7),y(this,n+1,n+6),y(this,n+2,n+5),y(this,n+3,n+4);return this},o.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?P(this,0,t):_.apply(this,arguments)},o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t="",r=n.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),"<Buffer "+t+">"},o.prototype.compare=function(t,n,r,e,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===n&&(n=0),void 0===r&&(r=t?t.length:0),void 0===e&&(e=0),void 0===i&&(i=this.length),n<0||r>t.length||e<0||i>this.length)throw new RangeError("out of range index");if(e>=i&&n>=r)return 0;if(e>=i)return-1;if(n>=r)return 1;if(n>>>=0,r>>>=0,e>>>=0,i>>>=0,this===t)return 0;for(var u=i-e,a=r-n,f=Math.min(u,a),s=this.slice(e,i),c=t.slice(n,r),l=0;l<f;++l)if(s[l]!==c[l]){u=s[l],a=c[l];break}return u<a?-1:a<u?1:0},o.prototype.includes=function(t,n,r){return-1!==this.indexOf(t,n,r)},o.prototype.indexOf=function(t,n,r){return m(this,t,n,r,!0)},o.prototype.lastIndexOf=function(t,n,r){return m(this,t,n,r,!1)},o.prototype.write=function(t,n,r,e){if(void 0===n)e="utf8",r=this.length,n=0;else if(void 0===r&&"string"==typeof n)e=n,r=this.length,n=0;else{if(!isFinite(n))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");n|=0,isFinite(r)?(r|=0,void 0===e&&(e="utf8")):(e=r,r=void 0)}var i=this.length-n;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||n<0)||n>this.length)throw new RangeError("Attempt to write outside buffer bounds");e||(e="utf8");for(var o=!1;;)switch(e){case"hex":return w(this,t,n,r);case"utf8":case"utf-8":return A(this,t,n,r);case"ascii":return S(this,t,n,r);case"latin1":case"binary":return O(this,t,n,r);case"base64":return x(this,t,n,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,n,r);default:if(o)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;o.prototype.slice=function(t,n){var r=this.length;t=~~t,n=void 0===n?r:~~n,t<0?(t+=r)<0&&(t=0):t>r&&(t=r),n<0?(n+=r)<0&&(n=0):n>r&&(n=r),n<t&&(n=t);var e;if(o.TYPED_ARRAY_SUPPORT)e=this.subarray(t,n),e.__proto__=o.prototype;else{var i=n-t;e=new o(i,void 0);for(var u=0;u<i;++u)e[u]=this[u+t]}return e},o.prototype.readUIntLE=function(t,n,r){t|=0,n|=0,r||U(t,n,this.length);for(var e=this[t],i=1,o=0;++o<n&&(i*=256);)e+=this[t+o]*i;return e},o.prototype.readUIntBE=function(t,n,r){t|=0,n|=0,r||U(t,n,this.length);for(var e=this[t+--n],i=1;n>0&&(i*=256);)e+=this[t+--n]*i;return e},o.prototype.readUInt8=function(t,n){return n||U(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,n){return n||U(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,n){return n||U(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,n){return n||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,n){return n||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,n,r){t|=0,n|=0,r||U(t,n,this.length);for(var e=this[t],i=1,o=0;++o<n&&(i*=256);)e+=this[t+o]*i;return i*=128,e>=i&&(e-=Math.pow(2,8*n)),e},o.prototype.readIntBE=function(t,n,r){t|=0,n|=0,r||U(t,n,this.length);for(var e=n,i=1,o=this[t+--e];e>0&&(i*=256);)o+=this[t+--e]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*n)),o},o.prototype.readInt8=function(t,n){return n||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,n){n||U(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,n){n||U(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,n){return n||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,n){return n||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,n){return n||U(t,4,this.length),G.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,n){return n||U(t,4,this.length),G.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,n){return n||U(t,8,this.length),G.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,n){return n||U(t,8,this.length),G.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,n,r,e){if(t=+t,n|=0,r|=0,!e){N(this,t,n,r,Math.pow(2,8*r)-1,0)}var i=1,o=0;for(this[n]=255&t;++o<r&&(i*=256);)this[n+o]=t/i&255;return n+r},o.prototype.writeUIntBE=function(t,n,r,e){if(t=+t,n|=0,r|=0,!e){N(this,t,n,r,Math.pow(2,8*r)-1,0)}var i=r-1,o=1;for(this[n+i]=255&t;--i>=0&&(o*=256);)this[n+i]=t/o&255;return n+r},o.prototype.writeUInt8=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[n]=255&t,n+1},o.prototype.writeUInt16LE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[n]=255&t,this[n+1]=t>>>8):L(this,t,n,!0),n+2},o.prototype.writeUInt16BE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=255&t):L(this,t,n,!1),n+2},o.prototype.writeUInt32LE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n+3]=t>>>24,this[n+2]=t>>>16,this[n+1]=t>>>8,this[n]=255&t):B(this,t,n,!0),n+4},o.prototype.writeUInt32BE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=255&t):B(this,t,n,!1),n+4},o.prototype.writeIntLE=function(t,n,r,e){if(t=+t,n|=0,!e){var i=Math.pow(2,8*r-1);N(this,t,n,r,i-1,-i)}var o=0,u=1,a=0;for(this[n]=255&t;++o<r&&(u*=256);)t<0&&0===a&&0!==this[n+o-1]&&(a=1),this[n+o]=(t/u>>0)-a&255;return n+r},o.prototype.writeIntBE=function(t,n,r,e){if(t=+t,n|=0,!e){var i=Math.pow(2,8*r-1);N(this,t,n,r,i-1,-i)}var o=r-1,u=1,a=0;for(this[n+o]=255&t;--o>=0&&(u*=256);)t<0&&0===a&&0!==this[n+o+1]&&(a=1),this[n+o]=(t/u>>0)-a&255;return n+r},o.prototype.writeInt8=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[n]=255&t,n+1},o.prototype.writeInt16LE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=255&t,this[n+1]=t>>>8):L(this,t,n,!0),n+2},o.prototype.writeInt16BE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[n]=t>>>8,this[n+1]=255&t):L(this,t,n,!1),n+2},o.prototype.writeInt32LE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[n]=255&t,this[n+1]=t>>>8,this[n+2]=t>>>16,this[n+3]=t>>>24):B(this,t,n,!0),n+4},o.prototype.writeInt32BE=function(t,n,r){return t=+t,n|=0,r||N(this,t,n,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[n]=t>>>24,this[n+1]=t>>>16,this[n+2]=t>>>8,this[n+3]=255&t):B(this,t,n,!1),n+4},o.prototype.writeFloatLE=function(t,n,r){return K(this,t,n,!0,r)},o.prototype.writeFloatBE=function(t,n,r){return K(this,t,n,!1,r)},o.prototype.writeDoubleLE=function(t,n,r){return M(this,t,n,!0,r)},o.prototype.writeDoubleBE=function(t,n,r){return M(this,t,n,!1,r)},o.prototype.copy=function(t,n,r,e){if(r||(r=0),e||0===e||(e=this.length),n>=t.length&&(n=t.length),n||(n=0),e>0&&e<r&&(e=r),e===r)return 0;if(0===t.length||0===this.length)return 0;if(n<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),t.length-n<e-r&&(e=t.length-n+r);var i,u=e-r;if(this===t&&r<n&&n<e)for(i=u-1;i>=0;--i)t[i+n]=this[i+r];else if(u<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i<u;++i)t[i+n]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+u),n);return u},o.prototype.fill=function(t,n,r,e){if("string"==typeof t){if("string"==typeof n?(e=n,n=0,r=this.length):"string"==typeof r&&(e=r,r=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==e&&"string"!=typeof e)throw new TypeError("encoding must be a string");if("string"==typeof e&&!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e)}else"number"==typeof t&&(t&=255);if(n<0||this.length<n||this.length<r)throw new RangeError("Out of range index");if(r<=n)return this;n>>>=0,r=void 0===r?this.length:r>>>0,t||(t=0);var u;if("number"==typeof t)for(u=n;u<r;++u)this[u]=t;else{var a=o.isBuffer(t)?t:J(new o(t,e).toString()),f=a.length;for(u=0;u<r-n;++u)this[u+n]=a[u%f]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(n,r(6))},function(t,n,r){"use strict";function e(t){var n=t.length;if(n%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[n-2]?2:"="===t[n-1]?1:0}function i(t){return 3*t.length/4-e(t)}function o(t){var n,r,i,o,u,a=t.length;o=e(t),u=new l(3*a/4-o),r=o>0?a-4:a;var f=0;for(n=0;n<r;n+=4)i=c[t.charCodeAt(n)]<<18|c[t.charCodeAt(n+1)]<<12|c[t.charCodeAt(n+2)]<<6|c[t.charCodeAt(n+3)],u[f++]=i>>16&255,u[f++]=i>>8&255,u[f++]=255&i;return 2===o?(i=c[t.charCodeAt(n)]<<2|c[t.charCodeAt(n+1)]>>4,u[f++]=255&i):1===o&&(i=c[t.charCodeAt(n)]<<10|c[t.charCodeAt(n+1)]<<4|c[t.charCodeAt(n+2)]>>2,u[f++]=i>>8&255,u[f++]=255&i),u}function u(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]}function a(t,n,r){for(var e,i=[],o=n;o<r;o+=3)e=(t[o]<<16)+(t[o+1]<<8)+t[o+2],i.push(u(e));return i.join("")}function f(t){for(var n,r=t.length,e=r%3,i="",o=[],u=0,f=r-e;u<f;u+=16383)o.push(a(t,u,u+16383>f?f:u+16383));return 1===e?(n=t[r-1],i+=s[n>>2],i+=s[n<<4&63],i+="=="):2===e&&(n=(t[r-2]<<8)+t[r-1],i+=s[n>>10],i+=s[n>>4&63],i+=s[n<<2&63],i+="="),o.push(i),o.join("")}n.byteLength=i,n.toByteArray=o,n.fromByteArray=f;for(var s=[],c=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,g=p.length;h<g;++h)s[h]=p[h],c[p.charCodeAt(h)]=h;c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(t,n){n.read=function(t,n,r,e,i){var o,u,a=8*i-e-1,f=(1<<a)-1,s=f>>1,c=-7,l=r?i-1:0,p=r?-1:1,h=t[n+l];for(l+=p,o=h&(1<<-c)-1,h>>=-c,c+=a;c>0;o=256*o+t[n+l],l+=p,c-=8);for(u=o&(1<<-c)-1,o>>=-c,c+=e;c>0;u=256*u+t[n+l],l+=p,c-=8);if(0===o)o=1-s;else{if(o===f)return u?NaN:1/0*(h?-1:1);u+=Math.pow(2,e),o-=s}return(h?-1:1)*u*Math.pow(2,o-e)},n.write=function(t,n,r,e,i,o){var u,a,f,s=8*o-i-1,c=(1<<s)-1,l=c>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=e?0:o-1,g=e?1:-1,d=n<0||0===n&&1/n<0?1:0;for(n=Math.abs(n),isNaN(n)||n===1/0?(a=isNaN(n)?1:0,u=c):(u=Math.floor(Math.log(n)/Math.LN2),n*(f=Math.pow(2,-u))<1&&(u--,f*=2),n+=u+l>=1?p/f:p*Math.pow(2,1-l),n*f>=2&&(u++,f/=2),u+l>=c?(a=0,u=c):u+l>=1?(a=(n*f-1)*Math.pow(2,i),u+=l):(a=n*Math.pow(2,l-1)*Math.pow(2,i),u=0));i>=8;t[r+h]=255&a,h+=g,a/=256,i-=8);for(u=u<<i|a,s+=i;s>0;t[r+h]=255&u,h+=g,u/=256,s-=8);t[r+h-g]|=128*d}},function(t,n){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){if(e.isNil(t))throw"The `filter` parameter is required";return{op:i.TASK_OP_FILTER,params:{where:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"filter("+(JSON.stringify(r.where)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=r(1),o=r(2),u=function(t,n){var r={op:o.TASK_OP_FOREACH,params:{}};return("string"==typeof t||t instanceof String)&&(r.params.spec=t),i.isPipeObject(t)?r.params.run=t.pipe.task:i.isPipeObject(n)&&(r.params.run=n.pipe.task),r};u.toCode=function(t,n){var r=e.get(t,"params",{}),i=[];return r.hasOwnProperty("spec")&&i.push(JSON.stringify(r.spec)),r.hasOwnProperty("run")&&i.push(n.task.toCode(r.run,n)),"foreach("+i.join(", ")+")"},t.exports=u},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t,n){var r;return r=Array.isArray(n)?n:[n],{op:i.TASK_OP_INSERT,params:{path:t,values:r}}};o.toCode=function(t,n){var r=e.get(t,"params",{}),i=e.get(r,"path",void 0),o=e.get(r,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return t=e.defaultTo(t,10),{op:i.TASK_OP_LIMIT,params:{value:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"limit("+(JSON.stringify(r.value)||"")+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){if(Array.isArray(t))var n=t;else for(var n=[],r=0;r<arguments.length;++r)n.push(arguments[r]);return{op:i.TASK_OP_MERGE,params:{files:n}}};o.toCode=function(t,n){for(var r=e.get(t,"params",{}),i=e.get(r,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=n.merge.toCode(i[o],n);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_MKDIR,params:{path:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"mkdir("+(JSON.stringify(r.path)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_LIST,params:{path:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"list("+(JSON.stringify(r.path)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_READ,params:{path:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"read("+(JSON.stringify(r.path)||'""')+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o={format:"png",width:800,height:600,scrollbars:!1},u=function(t,n){var r=Array.from(arguments),t=e.get(r,"[0]",""),u=e.get(r,"[1]",{});if(e.isNil(t))throw"The `url` parameter is required";if(e.isPlainObject(e.get(r,"[0]",{})))var u=e.get(r,"[0]",{});else var u=e.assign({},o,n,{url:t});return{op:i.TASK_OP_RENDER,params:u}};u.toCode=function(t,n){var r=e.get(t,"params",{}),i=JSON.stringify(r.url)||"",u=e.omit(r,["url"]);return e.isEqual(u,o)?"render("+i+")":"render("+i+", "+JSON.stringify(u,null,2)+")"},t.exports=u},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(){var t=Array.from(arguments),n=e.get(t,"[0]",""),r=e.get(t,"[1]",{});return r=e.isPlainObject(e.get(t,"[0]",{}))?e.get(t,"[0]",{}):e.assign({},{url:n},r),r=e.assign({method:"GET"},r),{op:i.TASK_OP_REQUEST,params:r}};o.toCode=function(t,n){var r=e.get(t,"params",{}),i=e.get(r,"url",""),o=e.omit(r,["url"]);return"GET"==e.get(o,"method","")&&(o=e.omit(o,["method"])),e.isEmpty(o)?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(i)+", "+JSON.stringify(o,null,2)+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(){var t=Array.from(arguments);return 1==t.length&&e.isArray(e.get(t,"[0]"))&&(t=e.get(t,"[0]",[])),{op:i.TASK_OP_SELECT,params:{columns:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{}),i=JSON.stringify(r.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_SEQUENCE,params:{steps:t}}};o.toCode=function(t,n){var r=e.map(t.params.items,function(t){var r=n.task.toCode(t,n);return"python"!=e.get(t,"params.lang","")&&(r=r.replace(/\n/g,"\n ")),r}),r=["Flexio.pipe()"].concat(r);return r.join("\n .")},t.exports=o},function(t,n,r){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=r(0),o=r(1),u=r(2),a=function(t,n){return o.isPipeObject(n)&&(n=n.pipe.task),{op:u.TASK_OP_SET,params:{var:t,value:n}}};a.toCode=function(t,n){var r=i.get(t,"params",{}),o=i.get(r,"variable",""),u=i.get(r,"value","");return o=JSON.stringify(o),u="object"===(void 0===u?"undefined":e(u))&&null!==u&&u.hasOwnProperty("op")?n.task.toCode(u,n):JSON.stringify(u),"set("+o+", "+u+")"},t.exports=a},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return t=e.defaultTo(t,10),{op:i.TASK_OP_SLEEP,params:{value:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"sleep("+(JSON.stringify(r.value)||"")+")"},t.exports=o},function(t,n,r){"use strict";var e=(r(0),r(1),function(t){return t});e.toCode=function(t,n){return"task("+JSON.stringify(t,null,2)+")"},t.exports=e},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){var n=Array.from(arguments),r={operations:[]},o={},u=[],a=e.get(n,"[0]");return e.isPlainObject(a)?(1==n.length&&e.has(a,"operations")?(o=e.pick(a,["columns","operations"]),o=e.assign(r,o)):(u=[].concat(n),o={operations:u}),{op:i.TASK_OP_TRANSFORM,params:o}):{op:i.TASK_OP_TRANSFORM,params:{columns:void 0,operations:u}}};o.toCode=function(t,n){var r=t.hasOwnProperty("params")?t.params:{};return!r.hasOwnProperty("columns")&&r.hasOwnProperty("operations")&&Array.isArray(r.operations)&&1==r.operations.length?"transform("+JSON.stringify(r.operations[0])+")":"transform("+JSON.stringify(r)+")"},t.exports=o},function(t,n,r){"use strict";var e=r(0),i=(r(1),r(2)),o=function(t){return{op:i.TASK_OP_WRITE,params:{path:t}}};o.toCode=function(t,n){var r=e.get(t,"params",{});return"write("+(JSON.stringify(r.path)||'""')+")"},t.exports=o},function(t,n){t.exports={name:"flexio-sdk-js",version:"1.20.2",description:"Javascript SDK for managing Flex.io resources and services",author:"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js",main:"src/main.js","--browser":"src/main.js",browser:"dist/flexio.min.js",scripts:{dev:"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js",build:"npm run build:debug && npm run build:release && npm run build:examples",test:'echo "Error: no test specified" && exit 1'},repository:{type:"git",url:"git+https://github.com/flexiodata/flexio-sdk-js.git"},keywords:[],license:"Apache-2.0",bugs:{url:"https://github.com/flexiodata/flexio-sdk-js/issues"},homepage:"https://github.com/flexiodata/flexio-sdk-js/",dependencies:{axios:"^0.16.2",lodash:"^4.17.4","vue-highlightjs":"^1.3.3"},devDependencies:{autoprefixer:"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-lodash":"^3.2.11","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0",vue:"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4",webpack:"^3.5.5","webpack-dev-server":"^2.8.2"}}},function(t,n,r){"use strict";var e=r(0);r(1);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(n,r){var i;if(e.isPlainObject(n))i=n;else{if(!(n instanceof t.connection))throw"Unknown connection object type";i=n.connection}return new Promise(function(n,e){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,n,e,r)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,n,e,r)})})},this.list=function(n){var r=Array.from(arguments),n=e.get(r,"[0]");return new Promise(function(r,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var u=e.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,u,r,i,n)}).catch(function(e){t.util.debug("Failed."),t.util.callbackAdapter(e,null,r,i,n)})})}}}},function(t,n,r){"use strict";var e=r(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(n,r){var i;if(e.isPlainObject(n))i=n;else{if(!(n instanceof t.pipe))throw"Unknown pipe object type";i=n.pipe}return new Promise(function(n,e){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,n,e,r)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,n,e,r)})})},this.list=function(n){var r=Array.from(arguments),n=e.get(r,"[0]");return new Promise(function(r,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var u=e.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,u,r,i,n)}).catch(function(e){t.util.debug("Failed."),t.util.callbackAdapter(e,null,r,i,n)})})},this.run=function(){var n=Array.from(arguments);n.push(null,null,null);var r,i,o={},u=null;n[0]instanceof t.pipe?(i=e.get(n[0],"pipe.eid",""),u=e.get(n[0],"pipe.task","")):Array.isArray(n[0])?(i="",u=n[0]):i=n[0],e.isPlainObject(n[1])&&(o=n[1]),r=e.isFunction(n[1])?n[1]:e.isFunction(n[2])?n[2]:null;var a=function(n,r){return{contentType:r,buffer:n,get blob(){return new Blob([this.buffer],{type:r})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(n,f){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var s={name:"SDK Pipe",description:"SDK Pipe",task:u,process_mode:"R"};t.http().post("/processes",s).then(function(i){var u=e.get(i,"data",{}),s=e.get(u,"eid","");t.util.debug("Created Process.");var c={method:"post",url:"/processes/"+s+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(c.data=o.data),o.hasOwnProperty("query")&&(c.params=o.query),t.http()(c).then(function(i){t.util.debug("Process Complete.");var o=e.get(i,"headers.content-type","text/plain"),u=a(i.data,o);t.util.callbackAdapter(null,u,n,f,r)}).catch(function(e){t.util.debug("Process Run Failed. "+e),t.util.callbackAdapter(e,null,n,f,r)})}).catch(function(e){t.util.debug("Process Create Failed. "+e),t.util.callbackAdapter(e,null,n,f,r)})}else{var c={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(c.data=o.data),o.hasOwnProperty("query")&&(c.params=o.query),o.hasOwnProperty("contentType")?c.headers={"Content-Type":o.contentType}:c.hasOwnProperty("data")&&(e.isPlainObject(c.data)||(e.isString(c.data)?c.headers={"Content-Type":"text/plain"}:c.headers={"Content-Type":"application/octet-stream"}));t.http()(c).then(function(i){t.util.debug("Process Complete.");var o=e.get(i,"headers.content-type","text/plain"),u=a(i.data,o);t.util.callbackAdapter(null,u,n,f,r)}).catch(function(e){t.util.debug("Pipe Run Call Failed. "+e),t.util.callbackAdapter(e,null,n,f,r)})}})}}}},function(t,n,r){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=r(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(n){if(!(this instanceof t.pipe))return new t.pipe(n);var r=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var n=this,r=arguments,e=Array.from(arguments),o=i.get(e,"[0]"),u=i.get(e,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.load.apply(n,r)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(r){var e=i.get(r,"data",{});n.pipe=i.assign({},e),n.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof u&&u.call(n,null,e)}).catch(function(r){n.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof u&&u.call(n,r,null)}),this)},save:function(){var n=this,r=arguments,e=Array.from(arguments),o=i.get(e,"[0]"),u=i.get(e,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.save.apply(n,r)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),u=i.get(e,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(r){var e=i.get(r,"data",{});n.pipe=i.assign({},e),n.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof u&&u.call(n,null,n.pipe)}).catch(function(r){n.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof u&&u.call(n,r,null)}),this)},run:function(){var n=Array.from(arguments);return n.unshift(this),t.pipes.run.apply(null,n)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},clearParams:function(t){return i.isArray(t)?this._params=i.omit(this._params,t):i.isNil(t)&&(this._params={}),this},getParams:function(){return i.assign({},this._params)},toCode:function(n){return t.task.toCode(this.pipe.task,t)}});return i.each(t.task,function(t,n){"toCode"!=n&&(r[n]=function(){return r.addTask(t.apply(r,arguments))})}),void 0!==n&&("string"==typeof n||n instanceof String?r.pipe.eid=n:"object"===(void 0===n?"undefined":e(n))&&(n.hasOwnProperty("pipe")?r.pipe=JSON.parse(JSON.stringify(n.pipe)):n.hasOwnProperty("task")?r.pipe=JSON.parse(JSON.stringify(n)):n.hasOwnProperty("op")&&(r.pipe.task=n))),r}}},function(t,n,r){"use strict";var e=r(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?e.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return e.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)&&e.includes(i,n)?this._setInfo("method",n):this},url:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("url",n):this},auth:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)&&e.includes(o,n)?("none"==n&&(n=""),this._setInfo("auth",n)):this},username:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("username",n):this},password:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("password",n):this},token:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("token",n):this},accessToken:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("access_token",n):this},refreshToken:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isString(n)?this._setInfo("refresh_token",n):this},expires:function(){var t=Array.from(arguments),n=e.get(t,"[0]");return e.isNumber(n)&&(n=""+n),e.isString(n)?this._setInfo("expires",n):this},data:function(){var t=Array.from(arguments),n=e.get(t,"[0]");if(!e.isPlainObject(n))return this;var r=this._getInfo("data",{});return n=e.assign({},r,n),this._setInfo("data",n)},clearData:function(){var t=Array.from(arguments);if(0==t.length)return this._setInfo("data",{});1==t.length&&e.isArray(e.get(t,"[0]"))&&(t=e.get(t,"[0]",[]));var n=this._getInfo("data",{}),r=e.omit(n,t);return this._setInfo("data",r)},headers:function(){var t=Array.from(arguments),n=e.get(t,"[0]");if(!e.isPlainObject(n))return this;var r=this._getInfo("headers",{});return n=e.assign({},r,n),this._setInfo("headers",n)},clearHeaders:function(){var t=Array.from(arguments);if(0==t.length)return this._setInfo("headers",{});1==t.length&&e.isArray(e.get(t,"[0]"))&&(t=e.get(t,"[0]",[]));var n=this._getInfo("headers",{}),r=e.omit(n,t);return this._setInfo("headers",r)},load:function(){var n=this,r=arguments,i=Array.from(arguments),o=e.get(i,"[0]"),u=e.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.load.apply(n,r)},50),this):e.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(r){var i=e.get(r,"data",{});n.connection=e.assign({},i),n.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof u&&u.call(n,null,i)}).catch(function(r){n.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof u&&u.call(n,r,null)}),this)},save:function(){var n=this,r=arguments,i=Array.from(arguments),o=e.get(i,"[0]"),u=e.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){n.save.apply(n,r)},50),this):(e.isPlainObject(o)&&(e.assign(this.connection,e.pick(o,["name","description","ename"])),u=e.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+e.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(r){var i=e.get(r,"data",{});n.connection=e.assign({},i),n.saving=!1,t.util.debug("Connection Saved."),"function"==typeof u&&u.call(n,null,n.connection)}).catch(function(r){n.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof u&&u.call(n,r,null)}),this)},_getInfo:function(t,n){return e.get(this.connection,"connection_info."+t,n)},_setInfo:function(t,n){return e.set(this.connection,"connection_info."+t,n),this}}):new t.connection}}}]).default}); \ No newline at end of file diff --git a/examples/examples.bundle.js b/examples/examples.bundle.js index a10ae7d..5ff71af 100644 --- a/examples/examples.bundle.js +++ b/examples/examples.bundle.js @@ -4,12 +4,12 @@ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org> * @license MIT */ -var G=n(42),Z=n(43),X=n(14);e.Buffer=o,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,e,n){return a(null,t,e,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,e,n){return u(null,t,e,n)},o.allocUnsafe=function(t){return c(null,t)},o.allocUnsafeSlow=function(t){return c(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,e){if(!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(t,e){if(!X(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=o.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!o.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},o.byteLength=g,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)y(this,e,e+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)y(this,e,e+3),y(this,e+1,e+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)y(this,e,e+7),y(this,e+1,e+6),y(this,e+2,e+5),y(this,e+3,e+4);return this},o.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?k(this,0,t):m.apply(this,arguments)},o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},o.prototype.compare=function(t,e,n,r,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,i>>>=0,this===t)return 0;for(var a=i-r,s=n-e,u=Math.min(a,s),c=this.slice(r,i),f=t.slice(e,n),l=0;l<u;++l)if(c[l]!==f[l]){a=c[l],s=f[l];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},o.prototype.indexOf=function(t,e,n){return _(this,t,e,n,!0)},o.prototype.lastIndexOf=function(t,e,n){return _(this,t,e,n,!1)},o.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return w(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":return E(this,t,e,n);case"latin1":case"binary":return O(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;o.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);var r;if(o.TYPED_ARRAY_SUPPORT)r=this.subarray(t,e),r.__proto__=o.prototype;else{var i=e-t;r=new o(i,void 0);for(var a=0;a<i;++a)r[a]=this[a+t]}return r},o.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},o.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},o.prototype.readUInt8=function(t,e){return e||$(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||$(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||$(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||$(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||$(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},o.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return e||$(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){e||$(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(t,e){e||$(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(t,e){return e||$(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||$(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||$(t,4,this.length),Z.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||$(t,4,this.length),Z.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||$(t,8,this.length),Z.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||$(t,8,this.length),Z.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){D(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},o.prototype.writeUIntBE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){D(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},o.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):I(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===s&&0!==this[e+o-1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):I(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,n){return U(this,t,e,!0,n)},o.prototype.writeFloatBE=function(t,e,n){return U(this,t,e,!1,n)},o.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},o.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},o.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},o.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var s=o.isBuffer(t)?t:z(new o(t,r).toString()),u=s.length;for(a=0;a<n-e;++a)this[a+e]=s[a%u]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,n(1))},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){"use strict";(function(e,n){var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i={};t.exports=i,i.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},i.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},i.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call(void 0!==e?e:0)},i.arrayBufferToString=function(t){if(this.isNodeJs())return t instanceof n?t.toString("utf-8"):n.from(t).toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var e,r=new Uint8Array(t),i="",o=r.length;for(e=0;e<o;++e)i+=String.fromCharCode(r[e]);return decodeURIComponent(escape(i))},i.callbackAdapter=function(t,e,n,r,i){"function"==typeof i?i(t,e):t?r(t):n(e)},t.exports.getUtilObject=function(t){return new function(){for(var e in i)i.hasOwnProperty(e)&&(this[e]=i[e]);this.debug=function(e){if(t.getConfig().debug){var e="flexio-sdk-js: "+e;console.log(e)}return this}}}}).call(e,n(2),n(3).Buffer)},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);c.call(this,t),f.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",i)}function i(){this.allowHalfOpen||this._writableState.ended||a(o,this)}function o(t){t.end()}var a=n(8),s=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=r;var u=n(7);u.inherits=n(4);var c=n(17),f=n(21);u.inherits(r,c);for(var l=s(f.prototype),p=0;p<l.length;p++){var h=l[p];r.prototype[h]||(r.prototype[h]=f.prototype[h])}Object.defineProperty(r.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),r.prototype._destroy=function(t,e){this.push(null),this.end(),a(e,t)}},function(t,e,n){(function(t){function n(t){return Array.isArray?Array.isArray(t):"[object Array]"===g(t)}function r(t){return"boolean"==typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function u(t){return"symbol"==typeof t}function c(t){return void 0===t}function f(t){return"[object RegExp]"===g(t)}function l(t){return"object"==typeof t&&null!==t}function p(t){return"[object Date]"===g(t)}function h(t){return"[object Error]"===g(t)||t instanceof Error}function d(t){return"function"==typeof t}function v(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function g(t){return Object.prototype.toString.call(t)}e.isArray=n,e.isBoolean=r,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=u,e.isUndefined=c,e.isRegExp=f,e.isObject=l,e.isDate=p,e.isError=h,e.isFunction=d,e.isPrimitive=v,e.isBuffer=t.isBuffer}).call(e,n(3).Buffer)},function(t,e,n){"use strict";(function(e){function n(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return e.nextTick(function(){t.apply(null,o)})}}!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports=n:t.exports=e.nextTick}).call(e,n(2))},function(t,e,n){function r(t,e){for(var n in t)e[n]=t[n]}function i(t,e,n){return a(t,e,n)}var o=n(3),a=o.Buffer;a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?t.exports=o:(r(o,e),e.Buffer=i),r(a,i),i.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return a(t,e,n)},i.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=a(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},i.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return a(t)},i.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return o.SlowBuffer(t)}},function(t,e){t.exports=function(t,e,n,r,i){var o,a=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(o=t,a=t.default);var u="function"==typeof a?a.options:a;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns),r&&(u._scopeId=r);var c;if(i?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},u._ssrRegister=c):n&&(c=n),c){var f=u.functional,l=f?u.render:u.beforeCreate;f?u.render=function(t,e){return c.call(e),l(t,e)}:u.beforeCreate=l?[].concat(l,c):[c]}return{esModule:o,exports:a,options:u}}},function(t,e,n){(function(t,r){var i;(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function u(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function c(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function f(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function l(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function p(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function h(t,e){return!!(null==t?0:t.length)&&O(t,e,0)>-1}function d(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function v(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function g(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function m(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function y(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function _(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function b(t){return t.split("")}function w(t){return t.match(Be)||[]}function x(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function E(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function O(t,e,n){return e===e?Z(t,e,n):E(t,S,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function S(t){return t!==t}function A(t,e){var n=null==t?0:t.length;return n?R(t,e)/n:Dt}function k(t){return function(e){return null==e?it:e[t]}}function N(t){return function(e){return null==t?it:t[e]}}function T(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function j(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function R(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==it&&(n=n===it?o:n+o)}return n}function P(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function $(t,e){return v(e,function(e){return[e,t[e]]})}function D(t){return function(e){return t(e)}}function L(t,e){return v(e,function(e){return t[e]})}function I(t,e){return t.has(e)}function M(t,e){for(var n=-1,r=t.length;++n<r&&O(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length;n--&&O(e,t[n],0)>-1;);return n}function B(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function V(t){return"\\"+kn[t]}function F(t,e){return null==t?it:t[e]}function q(t){return _n.test(t)}function z(t){return bn.test(t)}function H(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function J(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function W(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ft||(t[n]=ft,o[i++]=n)}return o}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function G(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function Z(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function X(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return q(t)?et(t):Hn(t)}function tt(t){return q(t)?nt(t):b(t)}function et(t){for(var e=mn.lastIndex=0;mn.test(t);)++e;return e}function nt(t){return t.match(mn)||[]}function rt(t){return t.match(yn)||[]}var it,ot=200,at="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",st="Expected a function",ut="__lodash_hash_undefined__",ct=500,ft="__lodash_placeholder__",lt=1,pt=2,ht=4,dt=1,vt=2,gt=1,mt=2,yt=4,_t=8,bt=16,wt=32,xt=64,Et=128,Ot=256,Ct=512,St=30,At="...",kt=800,Nt=16,Tt=1,jt=2,Rt=1/0,Pt=9007199254740991,$t=1.7976931348623157e308,Dt=NaN,Lt=4294967295,It=Lt-1,Mt=Lt>>>1,Ut=[["ary",Et],["bind",gt],["bindKey",mt],["curry",_t],["curryRight",bt],["flip",Ct],["partial",wt],["partialRight",xt],["rearg",Ot]],Bt="[object Arguments]",Vt="[object Array]",Ft="[object AsyncFunction]",qt="[object Boolean]",zt="[object Date]",Ht="[object DOMException]",Jt="[object Error]",Wt="[object Function]",Yt="[object GeneratorFunction]",Kt="[object Map]",Gt="[object Number]",Zt="[object Null]",Xt="[object Object]",Qt="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",fe="[object Float64Array]",le="[object Int8Array]",pe="[object Int16Array]",he="[object Int32Array]",de="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",me="[object Uint32Array]",ye=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,be=/(__e\(.*?\)|\b__t\)) \+\n'';/g,we=/&(?:amp|lt|gt|quot|#39);/g,xe=/[&<>"']/g,Ee=RegExp(we.source),Oe=RegExp(xe.source),Ce=/<%-([\s\S]+?)%>/g,Se=/<%([\s\S]+?)%>/g,Ae=/<%=([\s\S]+?)%>/g,ke=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ne=/^\w*$/,Te=/^\./,je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Re=/[\\^$.*+?()[\]{}|]/g,Pe=RegExp(Re.source),$e=/^\s+|\s+$/g,De=/^\s+/,Le=/\s+$/,Ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,Ue=/,? & /,Be=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ve=/\\(\\)?/g,Fe=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,qe=/\w*$/,ze=/^[-+]0x[0-9a-f]+$/i,He=/^0b[01]+$/i,Je=/^\[object .+?Constructor\]$/,We=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Ke=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ge=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Xe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+Qe+"]",en="["+Xe+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+Qe+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",un="[A-Z\\xc0-\\xd6\\xd8-\\xde]",cn="(?:"+nn+"|"+rn+")",fn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",ln="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+fn+")*",pn="[\\ufe0e\\ufe0f]?"+fn+ln,hn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+pn,dn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",vn=RegExp("['’]","g"),gn=RegExp(en,"g"),mn=RegExp(on+"(?="+on+")|"+dn+pn,"g"),yn=RegExp([un+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,un,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,un+cn,"$"].join("|")+")",un+"?"+cn+"+(?:['’](?:d|ll|m|re|s|t|ve))?",un+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",hn].join("|"),"g"),_n=RegExp("[\\u200d\\ud800-\\udfff"+Xe+"\\ufe0e\\ufe0f]"),bn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,wn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],xn=-1,En={};En[ce]=En[fe]=En[le]=En[pe]=En[he]=En[de]=En[ve]=En[ge]=En[me]=!0,En[Bt]=En[Vt]=En[se]=En[qt]=En[ue]=En[zt]=En[Jt]=En[Wt]=En[Kt]=En[Gt]=En[Xt]=En[te]=En[ee]=En[ne]=En[oe]=!1;var On={};On[Bt]=On[Vt]=On[se]=On[ue]=On[qt]=On[zt]=On[ce]=On[fe]=On[le]=On[pe]=On[he]=On[Kt]=On[Gt]=On[Xt]=On[te]=On[ee]=On[ne]=On[re]=On[de]=On[ve]=On[ge]=On[me]=!0,On[Jt]=On[Wt]=On[oe]=!1;var Cn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Sn={"&":"&","<":"<",">":">",'"':""","'":"'"},An={"&":"&","<":"<",">":">",""":'"',"'":"'"},kn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Nn=parseFloat,Tn=parseInt,jn="object"==typeof t&&t&&t.Object===Object&&t,Rn="object"==typeof self&&self&&self.Object===Object&&self,Pn=jn||Rn||Function("return this")(),$n="object"==typeof e&&e&&!e.nodeType&&e,Dn=$n&&"object"==typeof r&&r&&!r.nodeType&&r,Ln=Dn&&Dn.exports===$n,In=Ln&&jn.process,Mn=function(){try{return In&&In.binding&&In.binding("util")}catch(t){}}(),Un=Mn&&Mn.isArrayBuffer,Bn=Mn&&Mn.isDate,Vn=Mn&&Mn.isMap,Fn=Mn&&Mn.isRegExp,qn=Mn&&Mn.isSet,zn=Mn&&Mn.isTypedArray,Hn=k("length"),Jn=N(Cn),Wn=N(Sn),Yn=N(An),Kn=function t(e){function n(t){if(ou(t)&&!mp(t)&&!(t instanceof b)){if(t instanceof i)return t;if(mf.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function b(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Lt,this.__views__=[]}function N(){var t=new b(this.__wrapped__);return t.__actions__=Ii(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ii(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ii(this.__views__),t}function Z(){if(this.__filtered__){var t=new b(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=mp(t),r=e<0,i=n?t.length:0,o=Ao(0,i,this.__views__),a=o.start,s=o.end,u=s-a,c=r?s:a-1,f=this.__iteratees__,l=f.length,p=0,h=Wf(u,this.__takeCount__);if(!n||!r&&i==u&&h==u)return yi(t,this.__actions__);var d=[];t:for(;u--&&p<h;){c+=e;for(var v=-1,g=t[c];++v<l;){var m=f[v],y=m.iteratee,_=m.type,b=y(g);if(_==jt)g=b;else if(!b){if(_==Tt)continue t;break t}}d[p++]=g}return d}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Be(){this.__data__=rl?rl(null):{},this.size=0}function Xe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function Qe(t){var e=this.__data__;if(rl){var n=e[t];return n===ut?it:n}return mf.call(e,t)?e[t]:it}function tn(t){var e=this.__data__;return rl?e[t]!==it:mf.call(e,t)}function en(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=rl&&e===it?ut:e,this}function nn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function rn(){this.__data__=[],this.size=0}function on(t){var e=this.__data__,n=Gn(e,t);return!(n<0)&&(n==e.length-1?e.pop():jf.call(e,n,1),--this.size,!0)}function an(t){var e=this.__data__,n=Gn(e,t);return n<0?it:e[n][1]}function sn(t){return Gn(this.__data__,t)>-1}function un(t,e){var n=this.__data__,r=Gn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function cn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function fn(){this.size=0,this.__data__={hash:new nt,map:new(Qf||nn),string:new nt}}function ln(t){var e=Eo(this,t).delete(t);return this.size-=e?1:0,e}function pn(t){return Eo(this,t).get(t)}function hn(t){return Eo(this,t).has(t)}function dn(t,e){var n=Eo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function mn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new cn;++e<n;)this.add(t[e])}function yn(t){return this.__data__.set(t,ut),this}function _n(t){return this.__data__.has(t)}function bn(t){var e=this.__data__=new nn(t);this.size=e.size}function Cn(){this.__data__=new nn,this.size=0}function Sn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function An(t){return this.__data__.get(t)}function kn(t){return this.__data__.has(t)}function jn(t,e){var n=this.__data__;if(n instanceof nn){var r=n.__data__;if(!Qf||r.length<ot-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new cn(r)}return n.set(t,e),this.size=n.size,this}function Rn(t,e){var n=mp(t),r=!n&&gp(t),i=!n&&!r&&_p(t),o=!n&&!r&&!i&&Op(t),a=n||r||i||o,s=a?P(t.length,ff):[],u=s.length;for(var c in t)!e&&!mf.call(t,c)||a&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Do(c,u))||s.push(c);return s}function $n(t){var e=t.length;return e?t[Qr(0,e-1)]:it}function Dn(t,e){return Xo(Ii(t),nr(e,0,t.length))}function In(t){return Xo(Ii(t))}function Mn(t,e,n){(n===it||Hs(t[e],n))&&(n!==it||e in t)||tr(t,e,n)}function Hn(t,e,n){var r=t[e];mf.call(t,e)&&Hs(r,n)&&(n!==it||e in t)||tr(t,e,n)}function Gn(t,e){for(var n=t.length;n--;)if(Hs(t[n][0],e))return n;return-1}function Zn(t,e,n,r){return vl(t,function(t,i,o){e(r,t,n(t),o)}),r}function Xn(t,e){return t&&Mi(e,Bu(e),t)}function Qn(t,e){return t&&Mi(e,Vu(e),t)}function tr(t,e,n){"__proto__"==e&&Df?Df(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function er(t,e){for(var n=-1,r=e.length,i=nf(r),o=null==t;++n<r;)i[n]=o?it:Iu(t,e[n]);return i}function nr(t,e,n){return t===t&&(n!==it&&(t=t<=n?t:n),e!==it&&(t=t>=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e<,u=e&pt,f=e&ht;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!iu(t))return t;var l=mp(t);if(l){if(a=To(t),!s)return Ii(t,a)}else{var p=Al(t),h=p==Wt||p==Yt;if(_p(t))return Ci(t,s);if(p==Xt||p==Bt||h&&!i){if(a=u||h?{}:jo(t),!s)return u?Bi(t,Qn(a,t)):Ui(t,Xn(a,t))}else{if(!On[p])return i?t:{};a=Ro(t,p,rr,s)}}o||(o=new bn);var d=o.get(t);if(d)return d;o.set(t,a);var v=f?u?_o:yo:u?Vu:Bu,g=l?it:v(t);return c(g||t,function(r,i){g&&(i=r,r=t[i]),Hn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=Bu(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=uf(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new lf(st);return Tl(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=h,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=v(e,D(n))),r?(o=d,a=!1):e.length>=ot&&(o=I,a=!1,e=new mn(e));t:for(;++i<s;){var f=t[i],l=null==n?f:n(f);if(f=r||0!==f?f:0,a&&l===l){for(var p=c;p--;)if(e[p]===l)continue t;u.push(f)}else o(e,l,r)||u.push(f)}return u}function ur(t,e){var n=!0;return vl(t,function(t,r,i){return n=!!e(t,r,i)}),n}function cr(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(s===it?a===a&&!gu(a):n(a,s)))var s=a,u=o}return u}function fr(t,e,n,r){var i=t.length;for(n=xu(n),n<0&&(n=-n>i?0:i+n),r=r===it||r>i?i:xu(r),r<0&&(r+=i),r=n>r?0:Eu(r);n<r;)t[n++]=e;return t}function lr(t,e){var n=[];return vl(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function pr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=$o),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?pr(s,e-1,n,r,i):g(i,s):r||(i[i.length]=s)}return i}function hr(t,e){return t&&ml(t,e,Bu)}function dr(t,e){return t&&yl(t,e,Bu)}function vr(t,e){return p(e,function(e){return eu(t[e])})}function gr(t,e){e=Ei(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[Qo(e[n++])];return n&&n==r?t:it}function mr(t,e,n){var r=e(t);return mp(t)?r:g(r,n(t))}function yr(t){return null==t?t===it?ie:Zt:$f&&$f in uf(t)?So(t):Jo(t)}function _r(t,e){return t>e}function br(t,e){return null!=t&&mf.call(t,e)}function wr(t,e){return null!=t&&e in uf(t)}function xr(t,e,n){return t>=Wf(e,n)&&t<Jf(e,n)}function Er(t,e,n){for(var r=n?d:h,i=t[0].length,o=t.length,a=o,s=nf(o),u=1/0,c=[];a--;){var f=t[a];a&&e&&(f=v(f,D(e))),u=Wf(f.length,u),s[a]=!n&&(e||i>=120&&f.length>=120)?new mn(a&&f):it}f=t[0];var l=-1,p=s[0];t:for(;++l<i&&c.length<u;){var g=f[l],m=e?e(g):g;if(g=n||0!==g?g:0,!(p?I(p,m):r(c,m,n))){for(a=o;--a;){var y=s[a];if(!(y?I(y,m):r(t[a],m,n)))continue t}p&&p.push(m),c.push(g)}}return c}function Or(t,e,n,r){return hr(t,function(t,i,o){e(r,n(t),i,o)}),r}function Cr(t,e,n){e=Ei(e,t),t=Yo(t,e);var r=null==t?t:t[Qo(wa(e))];return null==r?it:s(r,t,n)}function Sr(t){return ou(t)&&yr(t)==Bt}function Ar(t){return ou(t)&&yr(t)==se}function kr(t){return ou(t)&&yr(t)==zt}function Nr(t,e,n,r,i){return t===e||(null==t||null==e||!ou(t)&&!ou(e)?t!==t&&e!==e:Tr(t,e,n,r,Nr,i))}function Tr(t,e,n,r,i,o){var a=mp(t),s=mp(e),u=a?Vt:Al(t),c=s?Vt:Al(e);u=u==Bt?Xt:u,c=c==Bt?Xt:c;var f=u==Xt,l=c==Xt,p=u==c;if(p&&_p(t)){if(!_p(e))return!1;a=!0,f=!1}if(p&&!f)return o||(o=new bn),a||Op(t)?ho(t,e,n,r,i,o):vo(t,e,u,n,r,i,o);if(!(n&dt)){var h=f&&mf.call(t,"__wrapped__"),d=l&&mf.call(e,"__wrapped__");if(h||d){var v=h?t.value():t,g=d?e.value():e;return o||(o=new bn),i(v,g,n,r,o)}}return!!p&&(o||(o=new bn),go(t,e,n,r,i,o))}function jr(t){return ou(t)&&Al(t)==Kt}function Rr(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=uf(t);i--;){var s=n[i];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i<o;){s=n[i];var u=s[0],c=t[u],f=s[1];if(a&&s[2]){if(c===it&&!(u in t))return!1}else{var l=new bn;if(r)var p=r(c,f,u,t,e,l);if(!(p===it?Nr(f,c,dt|vt,r,l):p))return!1}}return!0}function Pr(t){return!(!iu(t)||Bo(t))&&(eu(t)?Ef:Je).test(ta(t))}function $r(t){return ou(t)&&yr(t)==te}function Dr(t){return ou(t)&&Al(t)==ee}function Lr(t){return ou(t)&&ru(t.length)&&!!En[yr(t)]}function Ir(t){return"function"==typeof t?t:null==t?Tc:"object"==typeof t?mp(t)?qr(t[0],t[1]):Fr(t):Mc(t)}function Mr(t){if(!Vo(t))return Hf(t);var e=[];for(var n in uf(t))mf.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Ur(t){if(!iu(t))return Ho(t);var e=Vo(t),n=[];for(var r in t)("constructor"!=r||!e&&mf.call(t,r))&&n.push(r);return n}function Br(t,e){return t<e}function Vr(t,e){var n=-1,r=Js(t)?nf(t.length):[];return vl(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function Fr(t){var e=Oo(t);return 1==e.length&&e[0][2]?qo(e[0][0],e[0][1]):function(n){return n===t||Rr(n,t,e)}}function qr(t,e){return Io(t)&&Fo(e)?qo(Qo(t),e):function(n){var r=Iu(n,t);return r===it&&r===e?Uu(n,t):Nr(e,r,dt|vt)}}function zr(t,e,n,r,i){t!==e&&ml(e,function(o,a){if(iu(o))i||(i=new bn),Hr(t,e,a,n,zr,r,i);else{var s=r?r(t[a],o,a+"",t,e,i):it;s===it&&(s=o),Mn(t,a,s)}},Vu)}function Hr(t,e,n,r,i,o,a){var s=t[n],u=e[n],c=a.get(u);if(c)return void Mn(t,n,c);var f=o?o(s,u,n+"",t,e,a):it,l=f===it;if(l){var p=mp(u),h=!p&&_p(u),d=!p&&!h&&Op(u);f=u,p||h||d?mp(s)?f=s:Ws(s)?f=Ii(s):h?(l=!1,f=Ci(u,!0)):d?(l=!1,f=Ri(u,!0)):f=[]:hu(u)||gp(u)?(f=s,gp(s)?f=Cu(s):(!iu(s)||r&&eu(s))&&(f=jo(u))):l=!1}l&&(a.set(u,f),i(f,u,r,o,a),a.delete(u)),Mn(t,n,f)}function Jr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Do(e,n)?t[e]:it}function Wr(t,e,n){var r=-1;return e=v(e.length?e:[Tc],D(xo())),j(Vr(t,function(t,n,i){return{criteria:v(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return $i(t,e,n)})}function Yr(t,e){return Kr(t,e,function(e,n){return Uu(t,n)})}function Kr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=gr(t,a);n(s,a)&&oi(o,Ei(a,t),s)}return o}function Gr(t){return function(e){return gr(e,t)}}function Zr(t,e,n,r){var i=r?C:O,o=-1,a=e.length,s=t;for(t===e&&(e=Ii(e)),n&&(s=v(t,D(n)));++o<a;)for(var u=0,c=e[o],f=n?n(c):c;(u=i(s,f,u,r))>-1;)s!==t&&jf.call(s,u,1),jf.call(t,u,1);return t}function Xr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Do(i)?jf.call(t,i,1):vi(t,i)}}return t}function Qr(t,e){return t+Bf(Gf()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=Jf(Uf((e-t)/(n||1)),0),a=nf(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Pt)return n;do{e%2&&(n+=t),(e=Bf(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return jl(Wo(t,e,Tc),t+"")}function ri(t){return $n(Qu(t))}function ii(t,e){var n=Qu(t);return Xo(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!iu(t))return t;e=Ei(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++i<o;){var u=Qo(e[i]),c=n;if(i!=a){var f=s[u];c=r?r(f,u,s):it,c===it&&(c=iu(f)?f:Do(e[i+1])?[]:{})}Hn(s,u,c),s=s[u]}return t}function ai(t){return Xo(Qu(t))}function si(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nf(i);++r<i;)o[r]=t[r+e];return o}function ui(t,e){var n;return vl(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function ci(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Mt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!gu(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return fi(t,e,Tc,n)}function fi(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,s=null===e,u=gu(e),c=e===it;i<o;){var f=Bf((i+o)/2),l=n(t[f]),p=l!==it,h=null===l,d=l===l,v=gu(l);if(a)var g=r||d;else g=c?d&&(r||p):s?d&&p&&(r||!h):u?d&&p&&!h&&(r||!v):!h&&!v&&(r?l<=e:l<e);g?i=f+1:o=f}return Wf(o,It)}function li(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!Hs(s,u)){var u=s;o[i++]=0===a?0:a}}return o}function pi(t){return"number"==typeof t?t:gu(t)?Dt:+t}function hi(t){if("string"==typeof t)return t;if(mp(t))return v(t,hi)+"";if(gu(t))return hl?hl.call(t):"";var e=t+"";return"0"==e&&1/t==-Rt?"-0":e}function di(t,e,n){var r=-1,i=h,o=t.length,a=!0,s=[],u=s;if(n)a=!1,i=d;else if(o>=ot){var c=e?null:El(t);if(c)return K(c);a=!1,i=I,u=new mn}else u=e?[]:s;t:for(;++r<o;){var f=t[r],l=e?e(f):f;if(f=n||0!==f?f:0,a&&l===l){for(var p=u.length;p--;)if(u[p]===l)continue t;e&&u.push(l),s.push(f)}else i(u,l,n)||(u!==s&&u.push(l),s.push(f))}return s}function vi(t,e){return e=Ei(e,t),null==(t=Yo(t,e))||delete t[Qo(wa(e))]}function gi(t,e,n,r){return oi(t,e,n(gr(t,e)),r)}function mi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?si(t,r?0:o,r?o+1:i):si(t,r?o+1:0,r?i:o)}function yi(t,e){var n=t;return n instanceof b&&(n=n.value()),m(e,function(t,e){return e.func.apply(e.thisArg,g([t],e.args))},n)}function _i(t,e,n){var r=t.length;if(r<2)return r?di(t[0]):[];for(var i=-1,o=nf(r);++i<r;)for(var a=t[i],s=-1;++s<r;)s!=i&&(o[i]=sr(o[i]||a,t[s],e,n));return di(pr(o,1),e,n)}function bi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var s=r<o?e[r]:it;n(a,t[r],s)}return a}function wi(t){return Ws(t)?t:[]}function xi(t){return"function"==typeof t?t:Tc}function Ei(t,e){return mp(t)?t:Io(t,e)?[t]:Rl(Au(t))}function Oi(t,e,n){var r=t.length;return n=n===it?r:n,!e&&n>=r?t:si(t,e,n)}function Ci(t,e){if(e)return t.slice();var n=t.length,r=Af?Af(n):new t.constructor(n);return t.copy(r),r}function Si(t){var e=new t.constructor(t.byteLength);return new Sf(e).set(new Sf(t)),e}function Ai(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function ki(t,e,n){return m(e?n(J(t),lt):J(t),o,new t.constructor)}function Ni(t){var e=new t.constructor(t.source,qe.exec(t));return e.lastIndex=t.lastIndex,e}function Ti(t,e,n){return m(e?n(K(t),lt):K(t),a,new t.constructor)}function ji(t){return pl?uf(pl.call(t)):{}}function Ri(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Pi(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=gu(t),a=e!==it,s=null===e,u=e===e,c=gu(e);if(!s&&!c&&!o&&t>e||o&&a&&u&&!s&&!c||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t<e||c&&n&&i&&!r&&!o||s&&n&&i||!a&&i||!u)return-1}return 0}function $i(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;++r<a;){var u=Pi(i[r],o[r]);if(u){if(r>=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Di(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,c=Jf(o-a,0),f=nf(u+c),l=!r;++s<u;)f[s]=e[s];for(;++i<a;)(l||i<o)&&(f[n[i]]=t[i]);for(;c--;)f[s++]=t[i++];return f}function Li(t,e,n,r){for(var i=-1,o=t.length,a=-1,s=n.length,u=-1,c=e.length,f=Jf(o-s,0),l=nf(f+c),p=!r;++i<f;)l[i]=t[i];for(var h=i;++u<c;)l[h+u]=e[u];for(;++a<s;)(p||i<o)&&(l[h+n[a]]=t[i++]);return l}function Ii(t,e){var n=-1,r=t.length;for(e||(e=nf(r));++n<r;)e[n]=t[n];return e}function Mi(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],u=r?r(n[s],t[s],s,n,t):it;u===it&&(u=t[s]),i?tr(n,s,u):Hn(n,s,u)}return n}function Ui(t,e){return Mi(t,Cl(t),e)}function Bi(t,e){return Mi(t,Sl(t),e)}function Vi(t,e){return function(n,r){var i=mp(n)?u:Zn,o=e?e():{};return i(n,t,xo(r,2),o)}}function Fi(t){return ni(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Lo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=uf(e);++r<i;){var s=n[r];s&&t(e,s,r,o)}return e})}function qi(t,e){return function(n,r){if(null==n)return n;if(!Js(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=uf(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function zi(t){return function(e,n,r){for(var i=-1,o=uf(e),a=r(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===n(o[u],u,o))break}return e}}function Hi(t,e,n){function r(){return(this&&this!==Pn&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e>,o=Yi(t);return r}function Ji(t){return function(e){e=Au(e);var n=q(e)?tt(e):it,r=n?n[0]:e.charAt(0),i=n?Oi(n,1).join(""):e.slice(1);return r[t]()+i}}function Wi(t){return function(e){return m(Cc(oc(e).replace(vn,"")),t,"")}}function Yi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=dl(t.prototype),r=t.apply(n,e);return iu(r)?r:n}}function Ki(t,e,n){function r(){for(var o=arguments.length,a=nf(o),u=o,c=wo(r);u--;)a[u]=arguments[u];var f=o<3&&a[0]!==c&&a[o-1]!==c?[]:Y(a,c);return(o-=f.length)<n?ao(t,e,Xi,r.placeholder,it,a,f,it,it,n-o):s(this&&this!==Pn&&this instanceof r?i:t,this,a)}var i=Yi(t);return r}function Gi(t){return function(e,n,r){var i=uf(e);if(!Js(e)){var o=xo(n,3);e=Bu(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:it}}function Zi(t){return mo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new lf(st);if(o&&!s&&"wrapper"==bo(a))var s=new i([],!0)}for(r=s?r:n;++r<n;){a=e[r];var u=bo(a),c="wrapper"==u?Ol(a):it;s=c&&Uo(c[0])&&c[1]==(Et|_t|wt|Ot)&&!c[4].length&&1==c[9]?s[bo(c[0])].apply(s,c[3]):1==a.length&&Uo(a)?s[u]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&mp(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Xi(t,e,n,r,i,o,a,s,u,c){function f(){for(var m=arguments.length,y=nf(m),_=m;_--;)y[_]=arguments[_];if(d)var b=wo(f),w=B(y,b);if(r&&(y=Di(y,r,i,d)),o&&(y=Li(y,o,a,d)),m-=w,d&&m<c){var x=Y(y,b);return ao(t,e,Xi,f.placeholder,n,y,x,s,u,c-m)}var E=p?n:this,O=h?E[t]:t;return m=y.length,s?y=Ko(y,s):v&&m>1&&y.reverse(),l&&u<m&&(y.length=u),this&&this!==Pn&&this instanceof f&&(O=g||Yi(O)),O.apply(E,y)}var l=e&Et,p=e>,h=e&mt,d=e&(_t|bt),v=e&Ct,g=h?it:Yi(t);return f}function Qi(t,e){return function(n,r){return Or(n,t,e(r),{})}}function to(t,e){return function(n,r){var i;if(n===it&&r===it)return e;if(n!==it&&(i=n),r!==it){if(i===it)return r;"string"==typeof n||"string"==typeof r?(n=hi(n),r=hi(r)):(n=pi(n),r=pi(r)),i=t(n,r)}return i}}function eo(t){return mo(function(e){return e=v(e,D(xo())),ni(function(n){var r=this;return t(e,function(t){return s(t,r,n)})})})}function no(t,e){e=e===it?" ":hi(e);var n=e.length;if(n<2)return n?ei(e,t):e;var r=ei(e,Uf(t/Q(e)));return q(e)?Oi(tt(r),0,t).join(""):r.slice(0,t)}function ro(t,e,n,r){function i(){for(var e=-1,u=arguments.length,c=-1,f=r.length,l=nf(f+u),p=this&&this!==Pn&&this instanceof i?a:t;++c<f;)l[c]=r[c];for(;u--;)l[c++]=arguments[++e];return s(p,o?n:this,l)}var o=e>,a=Yi(t);return i}function io(t){return function(e,n,r){return r&&"number"!=typeof r&&Lo(e,n,r)&&(n=r=it),e=wu(e),n===it?(n=e,e=0):n=wu(n),r=r===it?e<n?1:-1:wu(r),ti(e,n,r,t)}}function oo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Ou(e),n=Ou(n)),t(e,n)}}function ao(t,e,n,r,i,o,a,s,u,c){var f=e&_t,l=f?a:it,p=f?it:a,h=f?o:it,d=f?it:o;e|=f?wt:xt,(e&=~(f?xt:wt))&yt||(e&=~(gt|mt));var v=[t,e,i,h,l,d,p,s,u,c],g=n.apply(it,v);return Uo(t)&&Nl(g,v),g.placeholder=r,Go(g,t,e)}function so(t){var e=sf[t];return function(t,n){if(t=Ou(t),n=null==n?0:Wf(xu(n),292)){var r=(Au(t)+"e").split("e");return r=(Au(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function uo(t){return function(e){var n=Al(e);return n==Kt?J(e):n==ee?G(e):$(e,t(e))}}function co(t,e,n,r,i,o,a,s){var u=e&mt;if(!u&&"function"!=typeof t)throw new lf(st);var c=r?r.length:0;if(c||(e&=~(wt|xt),r=i=it),a=a===it?a:Jf(xu(a),0),s=s===it?s:xu(s),c-=i?i.length:0,e&xt){var f=r,l=i;r=i=it}var p=u?it:Ol(t),h=[t,e,n,r,i,f,l,o,a,s];if(p&&zo(h,p),t=h[0],e=h[1],n=h[2],r=h[3],i=h[4],s=h[9]=h[9]===it?u?0:t.length:Jf(h[9]-c,0),!s&&e&(_t|bt)&&(e&=~(_t|bt)),e&&e!=gt)d=e==_t||e==bt?Ki(t,e,s):e!=wt&&e!=(gt|wt)||i.length?Xi.apply(it,h):ro(t,e,n,r);else var d=Hi(t,e,n);return Go((p?_l:Nl)(d,h),t,e)}function fo(t,e,n,r){return t===it||Hs(t,df[n])&&!mf.call(r,n)?e:t}function lo(t,e,n,r,i,o){return iu(t)&&iu(e)&&(o.set(e,t),zr(t,e,it,lo,o),o.delete(e)),t}function po(t){return hu(t)?it:t}function ho(t,e,n,r,i,o){var a=n&dt,s=t.length,u=e.length;if(s!=u&&!(a&&u>s))return!1;var c=o.get(t);if(c&&o.get(e))return c==e;var f=-1,l=!0,p=n&vt?new mn:it;for(o.set(t,e),o.set(e,t);++f<s;){var h=t[f],d=e[f];if(r)var v=a?r(d,h,f,e,t,o):r(h,d,f,t,e,o);if(v!==it){if(v)continue;l=!1;break}if(p){if(!_(e,function(t,e){if(!I(p,e)&&(h===t||i(h,t,n,r,o)))return p.push(e)})){l=!1;break}}else if(h!==d&&!i(h,d,n,r,o)){l=!1;break}}return o.delete(t),o.delete(e),l}function vo(t,e,n,r,i,o,a){switch(n){case ue:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case se:return!(t.byteLength!=e.byteLength||!o(new Sf(t),new Sf(e)));case qt:case zt:case Gt:return Hs(+t,+e);case Jt:return t.name==e.name&&t.message==e.message;case te:case ne:return t==e+"";case Kt:var s=J;case ee:var u=r&dt;if(s||(s=K),t.size!=e.size&&!u)return!1;var c=a.get(t);if(c)return c==e;r|=vt,a.set(t,e);var f=ho(s(t),s(e),r,i,o,a);return a.delete(t),f;case re:if(pl)return pl.call(t)==pl.call(e)}return!1}function go(t,e,n,r,i,o){var a=n&dt,s=yo(t),u=s.length;if(u!=yo(e).length&&!a)return!1;for(var c=u;c--;){var f=s[c];if(!(a?f in e:mf.call(e,f)))return!1}var l=o.get(t);if(l&&o.get(e))return l==e;var p=!0;o.set(t,e),o.set(e,t);for(var h=a;++c<u;){f=s[c];var d=t[f],v=e[f];if(r)var g=a?r(v,d,f,e,t,o):r(d,v,f,t,e,o);if(!(g===it?d===v||i(d,v,n,r,o):g)){p=!1;break}h||(h="constructor"==f)}if(p&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(e),p}function mo(t){return jl(Wo(t,it,ha),t+"")}function yo(t){return mr(t,Bu,Cl)}function _o(t){return mr(t,Vu,Sl)}function bo(t){for(var e=t.name+"",n=ol[e],r=mf.call(ol,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function wo(t){return(mf.call(n,"placeholder")?n:t).placeholder}function xo(){var t=n.iteratee||jc;return t=t===jc?Ir:t,arguments.length?t(arguments[0],arguments[1]):t}function Eo(t,e){var n=t.__data__;return Mo(e)?n["string"==typeof e?"string":"hash"]:n.map}function Oo(t){for(var e=Bu(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Fo(i)]}return e}function Co(t,e){var n=F(t,e);return Pr(n)?n:it}function So(t){var e=mf.call(t,$f),n=t[$f];try{t[$f]=it;var r=!0}catch(t){}var i=bf.call(t);return r&&(e?t[$f]=n:delete t[$f]),i}function Ao(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Wf(e,t+a);break;case"takeRight":t=Jf(t,e-a)}}return{start:t,end:e}}function ko(t){var e=t.match(Me);return e?e[1].split(Ue):[]}function No(t,e,n){e=Ei(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=Qo(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&ru(i)&&Do(a,i)&&(mp(t)||gp(t))}function To(t){var e=t.length,n=t.constructor(e);return e&&"string"==typeof t[0]&&mf.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function jo(t){return"function"!=typeof t.constructor||Vo(t)?{}:dl(kf(t))}function Ro(t,e,n,r){var i=t.constructor;switch(e){case se:return Si(t);case qt:case zt:return new i(+t);case ue:return Ai(t,r);case ce:case fe:case le:case pe:case he:case de:case ve:case ge:case me:return Ri(t,r);case Kt:return ki(t,r,n);case Gt:case ne:return new i(t);case te:return Ni(t);case ee:return Ti(t,r,n);case re:return ji(t)}}function Po(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Ie,"{\n/* [wrapped with "+e+"] */\n")}function $o(t){return mp(t)||gp(t)||!!(Rf&&t&&t[Rf])}function Do(t,e){return!!(e=null==e?Pt:e)&&("number"==typeof t||Ye.test(t))&&t>-1&&t%1==0&&t<e}function Lo(t,e,n){if(!iu(n))return!1;var r=typeof e;return!!("number"==r?Js(n)&&Do(e,n.length):"string"==r&&e in n)&&Hs(n[e],t)}function Io(t,e){if(mp(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!gu(t))||(Ne.test(t)||!ke.test(t)||null!=e&&t in uf(e))}function Mo(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function Uo(t){var e=bo(t),r=n[e];if("function"!=typeof r||!(e in b.prototype))return!1;if(t===r)return!0;var i=Ol(r);return!!i&&t===i[0]}function Bo(t){return!!_f&&_f in t}function Vo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||df)}function Fo(t){return t===t&&!iu(t)}function qo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==it||t in uf(n)))}}function zo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(gt|mt|Et),a=r==Et&&n==_t||r==Et&&n==Ot&&t[7].length<=e[8]||r==(Et|Ot)&&e[7].length<=e[8]&&n==_t;if(!o&&!a)return t;r>&&(t[2]=e[2],i|=n>?0:yt);var s=e[3];if(s){var u=t[3];t[3]=u?Di(u,s,e[4]):s,t[4]=u?Y(t[3],ft):e[4]}return s=e[5],s&&(u=t[5],t[5]=u?Li(u,s,e[6]):s,t[6]=u?Y(t[5],ft):e[6]),s=e[7],s&&(t[7]=s),r&Et&&(t[8]=null==t[8]?e[8]:Wf(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Ho(t){var e=[];if(null!=t)for(var n in uf(t))e.push(n);return e}function Jo(t){return bf.call(t)}function Wo(t,e,n){return e=Jf(e===it?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Jf(r.length-e,0),a=nf(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=nf(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),s(t,this,u)}}function Yo(t,e){return e.length<2?t:gr(t,si(e,0,-1))}function Ko(t,e){for(var n=t.length,r=Wf(e.length,n),i=Ii(t);r--;){var o=e[r];t[r]=Do(o,n)?i[o]:it}return t}function Go(t,e,n){var r=e+"";return jl(t,Po(r,ea(ko(r),n)))}function Zo(t){var e=0,n=0;return function(){var r=Yf(),i=Nt-(r-n);if(n=r,i>0){if(++e>=kt)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Xo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n<e;){var o=Qr(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function Qo(t){if("string"==typeof t||gu(t))return t;var e=t+"";return"0"==e&&1/t==-Rt?"-0":e}function ta(t){if(null!=t){try{return gf.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function ea(t,e){return c(Ut,function(n){var r="_."+n[0];e&n[1]&&!h(t,r)&&t.push(r)}),t.sort()}function na(t){if(t instanceof b)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=Ii(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function ra(t,e,n){e=(n?Lo(t,e,n):e===it)?1:Jf(xu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=nf(Uf(r/e));i<r;)a[o++]=si(t,i,i+=e);return a}function ia(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function oa(){var t=arguments.length;if(!t)return[];for(var e=nf(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return g(mp(n)?Ii(n):[n],pr(e,1))}function aa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),si(t,e<0?0:e,r)):[]}function sa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),e=r-e,si(t,0,e<0?0:e)):[]}function ua(t,e){return t&&t.length?mi(t,xo(e,3),!0,!0):[]}function ca(t,e){return t&&t.length?mi(t,xo(e,3),!0):[]}function fa(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Lo(t,e,n)&&(n=0,r=i),fr(t,e,n,r)):[]}function la(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:xu(n);return i<0&&(i=Jf(r+i,0)),E(t,xo(e,3),i)}function pa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==it&&(i=xu(n),i=n<0?Jf(r+i,0):Wf(i,r-1)),E(t,xo(e,3),i,!0)}function ha(t){return(null==t?0:t.length)?pr(t,1):[]}function da(t){return(null==t?0:t.length)?pr(t,Rt):[]}function va(t,e){return(null==t?0:t.length)?(e=e===it?1:xu(e),pr(t,e)):[]}function ga(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function ma(t){return t&&t.length?t[0]:it}function ya(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:xu(n);return i<0&&(i=Jf(r+i,0)),O(t,e,i)}function _a(t){return(null==t?0:t.length)?si(t,0,-1):[]}function ba(t,e){return null==t?"":zf.call(t,e)}function wa(t){var e=null==t?0:t.length;return e?t[e-1]:it}function xa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==it&&(i=xu(n),i=i<0?Jf(r+i,0):Wf(i,r-1)),e===e?X(t,e,i):E(t,S,i,!0)}function Ea(t,e){return t&&t.length?Jr(t,xu(e)):it}function Oa(t,e){return t&&t.length&&e&&e.length?Zr(t,e):t}function Ca(t,e,n){return t&&t.length&&e&&e.length?Zr(t,e,xo(n,2)):t}function Sa(t,e,n){return t&&t.length&&e&&e.length?Zr(t,e,it,n):t}function Aa(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=xo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return Xr(t,i),n}function ka(t){return null==t?t:Zf.call(t)}function Na(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Lo(t,e,n)?(e=0,n=r):(e=null==e?0:xu(e),n=n===it?r:xu(n)),si(t,e,n)):[]}function Ta(t,e){return ci(t,e)}function ja(t,e,n){return fi(t,e,xo(n,2))}function Ra(t,e){var n=null==t?0:t.length;if(n){var r=ci(t,e);if(r<n&&Hs(t[r],e))return r}return-1}function Pa(t,e){return ci(t,e,!0)}function $a(t,e,n){return fi(t,e,xo(n,2),!0)}function Da(t,e){if(null==t?0:t.length){var n=ci(t,e,!0)-1;if(Hs(t[n],e))return n}return-1}function La(t){return t&&t.length?li(t):[]}function Ia(t,e){return t&&t.length?li(t,xo(e,2)):[]}function Ma(t){var e=null==t?0:t.length;return e?si(t,1,e):[]}function Ua(t,e,n){return t&&t.length?(e=n||e===it?1:xu(e),si(t,0,e<0?0:e)):[]}function Ba(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),e=r-e,si(t,e<0?0:e,r)):[]}function Va(t,e){return t&&t.length?mi(t,xo(e,3),!1,!0):[]}function Fa(t,e){return t&&t.length?mi(t,xo(e,3)):[]}function qa(t){return t&&t.length?di(t):[]}function za(t,e){return t&&t.length?di(t,xo(e,2)):[]}function Ha(t,e){return e="function"==typeof e?e:it,t&&t.length?di(t,it,e):[]}function Ja(t){if(!t||!t.length)return[];var e=0;return t=p(t,function(t){if(Ws(t))return e=Jf(t.length,e),!0}),P(e,function(e){return v(t,k(e))})}function Wa(t,e){if(!t||!t.length)return[];var n=Ja(t);return null==e?n:v(n,function(t){return s(e,it,t)})}function Ya(t,e){return bi(t||[],e||[],Hn)}function Ka(t,e){return bi(t||[],e||[],oi)}function Ga(t){var e=n(t);return e.__chain__=!0,e}function Za(t,e){return e(t),t}function Xa(t,e){return e(t)}function Qa(){return Ga(this)}function ts(){return new i(this.value(),this.__chain__)}function es(){this.__values__===it&&(this.__values__=bu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof b){var e=t;return this.__actions__.length&&(e=new b(this)),e=e.reverse(),e.__actions__.push({func:Xa,args:[ka],thisArg:it}),new i(e,this.__chain__)}return this.thru(ka)}function os(){return yi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=mp(t)?l:ur;return n&&Lo(t,e,n)&&(e=it),r(t,xo(e,3))}function ss(t,e){return(mp(t)?p:lr)(t,xo(e,3))}function us(t,e){return pr(ds(t,e),1)}function cs(t,e){return pr(ds(t,e),Rt)}function fs(t,e,n){return n=n===it?1:xu(n),pr(ds(t,e),n)}function ls(t,e){return(mp(t)?c:vl)(t,xo(e,3))}function ps(t,e){return(mp(t)?f:gl)(t,xo(e,3))}function hs(t,e,n,r){t=Js(t)?t:Qu(t),n=n&&!r?xu(n):0;var i=t.length;return n<0&&(n=Jf(i+n,0)),vu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&O(t,e,n)>-1}function ds(t,e){return(mp(t)?v:Vr)(t,xo(e,3))}function vs(t,e,n,r){return null==t?[]:(mp(e)||(e=null==e?[]:[e]),n=r?it:n,mp(n)||(n=null==n?[]:[n]),Wr(t,e,n))}function gs(t,e,n){var r=mp(t)?m:T,i=arguments.length<3;return r(t,xo(e,4),n,i,vl)}function ms(t,e,n){var r=mp(t)?y:T,i=arguments.length<3;return r(t,xo(e,4),n,i,gl)}function ys(t,e){return(mp(t)?p:lr)(t,Rs(xo(e,3)))}function _s(t){return(mp(t)?$n:ri)(t)}function bs(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:xu(e),(mp(t)?Dn:ii)(t,e)}function ws(t){return(mp(t)?In:ai)(t)}function xs(t){if(null==t)return 0;if(Js(t))return vu(t)?Q(t):t.length;var e=Al(t);return e==Kt||e==ee?t.size:Mr(t).length}function Es(t,e,n){var r=mp(t)?_:ui;return n&&Lo(t,e,n)&&(e=it),r(t,xo(e,3))}function Os(t,e){if("function"!=typeof e)throw new lf(st);return t=xu(t),function(){if(--t<1)return e.apply(this,arguments)}}function Cs(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,co(t,Et,it,it,it,it,e)}function Ss(t,e){var n;if("function"!=typeof e)throw new lf(st);return t=xu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function As(t,e,n){e=n?it:e;var r=co(t,_t,it,it,it,it,it,e);return r.placeholder=As.placeholder,r}function ks(t,e,n){e=n?it:e;var r=co(t,bt,it,it,it,it,it,e);return r.placeholder=ks.placeholder,r}function Ns(t,e,n){function r(e){var n=p,r=h;return p=h=it,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Tl(s,e),_?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return b?Wf(i,d-r):i}function a(t){var n=t-m,r=t-y;return m===it||n>=e||n<0||b&&r>=d}function s(){var t=op();if(a(t))return u(t);g=Tl(s,o(t))}function u(t){return g=it,w&&p?r(t):(p=h=it,v)}function c(){g!==it&&xl(g),y=0,p=m=h=g=it}function f(){return g===it?v:u(op())}function l(){var t=op(),n=a(t);if(p=arguments,h=this,m=t,n){if(g===it)return i(m);if(b)return g=Tl(s,e),r(m)}return g===it&&(g=Tl(s,e)),v}var p,h,d,v,g,m,y=0,_=!1,b=!1,w=!0;if("function"!=typeof t)throw new lf(st);return e=Ou(e)||0,iu(n)&&(_=!!n.leading,b="maxWait"in n,d=b?Jf(Ou(n.maxWait)||0,e):d,w="trailing"in n?!!n.trailing:w),l.cancel=c,l.flush=f,l}function Ts(t){return co(t,Ct)}function js(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new lf(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(js.Cache||cn),n}function Rs(t){if("function"!=typeof t)throw new lf(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ps(t){return Ss(2,t)}function $s(t,e){if("function"!=typeof t)throw new lf(st);return e=e===it?e:xu(e),ni(t,e)}function Ds(t,e){if("function"!=typeof t)throw new lf(st);return e=null==e?0:Jf(xu(e),0),ni(function(n){var r=n[e],i=Oi(n,0,e);return r&&g(i,r),s(t,this,i)})}function Ls(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new lf(st);return iu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ns(t,e,{leading:r,maxWait:e,trailing:i})}function Is(t){return Cs(t,1)}function Ms(t,e){return lp(xi(e),t)}function Us(){if(!arguments.length)return[];var t=arguments[0];return mp(t)?t:[t]}function Bs(t){return rr(t,ht)}function Vs(t,e){return e="function"==typeof e?e:it,rr(t,ht,e)}function Fs(t){return rr(t,lt|ht)}function qs(t,e){return e="function"==typeof e?e:it,rr(t,lt|ht,e)}function zs(t,e){return null==e||or(t,e,Bu(e))}function Hs(t,e){return t===e||t!==t&&e!==e}function Js(t){return null!=t&&ru(t.length)&&!eu(t)}function Ws(t){return ou(t)&&Js(t)}function Ys(t){return!0===t||!1===t||ou(t)&&yr(t)==qt}function Ks(t){return ou(t)&&1===t.nodeType&&!hu(t)}function Gs(t){if(null==t)return!0;if(Js(t)&&(mp(t)||"string"==typeof t||"function"==typeof t.splice||_p(t)||Op(t)||gp(t)))return!t.length;var e=Al(t);if(e==Kt||e==ee)return!t.size;if(Vo(t))return!Mr(t).length;for(var n in t)if(mf.call(t,n))return!1;return!0}function Zs(t,e){return Nr(t,e)}function Xs(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Nr(t,e,it,n):!!r}function Qs(t){if(!ou(t))return!1;var e=yr(t);return e==Jt||e==Ht||"string"==typeof t.message&&"string"==typeof t.name&&!hu(t)}function tu(t){return"number"==typeof t&&qf(t)}function eu(t){if(!iu(t))return!1;var e=yr(t);return e==Wt||e==Yt||e==Ft||e==Qt}function nu(t){return"number"==typeof t&&t==xu(t)}function ru(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Pt}function iu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ou(t){return null!=t&&"object"==typeof t}function au(t,e){return t===e||Rr(t,e,Oo(e))}function su(t,e,n){return n="function"==typeof n?n:it,Rr(t,e,Oo(e),n)}function uu(t){return pu(t)&&t!=+t}function cu(t){if(kl(t))throw new of(at);return Pr(t)}function fu(t){return null===t}function lu(t){return null==t}function pu(t){return"number"==typeof t||ou(t)&&yr(t)==Gt}function hu(t){if(!ou(t)||yr(t)!=Xt)return!1;var e=kf(t);if(null===e)return!0;var n=mf.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&gf.call(n)==wf}function du(t){return nu(t)&&t>=-Pt&&t<=Pt}function vu(t){return"string"==typeof t||!mp(t)&&ou(t)&&yr(t)==ne}function gu(t){return"symbol"==typeof t||ou(t)&&yr(t)==re}function mu(t){return t===it}function yu(t){return ou(t)&&Al(t)==oe}function _u(t){return ou(t)&&yr(t)==ae}function bu(t){if(!t)return[];if(Js(t))return vu(t)?tt(t):Ii(t);if(Pf&&t[Pf])return H(t[Pf]());var e=Al(t);return(e==Kt?J:e==ee?K:Qu)(t)}function wu(t){if(!t)return 0===t?t:0;if((t=Ou(t))===Rt||t===-Rt){return(t<0?-1:1)*$t}return t===t?t:0}function xu(t){var e=wu(t),n=e%1;return e===e?n?e-n:e:0}function Eu(t){return t?nr(xu(t),0,Lt):0}function Ou(t){if("number"==typeof t)return t;if(gu(t))return Dt;if(iu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=iu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace($e,"");var n=He.test(t);return n||We.test(t)?Tn(t.slice(2),n?2:8):ze.test(t)?Dt:+t}function Cu(t){return Mi(t,Vu(t))}function Su(t){return t?nr(xu(t),-Pt,Pt):0===t?t:0}function Au(t){return null==t?"":hi(t)}function ku(t,e){var n=dl(t);return null==e?n:Xn(n,e)}function Nu(t,e){return x(t,xo(e,3),hr)}function Tu(t,e){return x(t,xo(e,3),dr)}function ju(t,e){return null==t?t:ml(t,xo(e,3),Vu)}function Ru(t,e){return null==t?t:yl(t,xo(e,3),Vu)}function Pu(t,e){return t&&hr(t,xo(e,3))}function $u(t,e){return t&&dr(t,xo(e,3))}function Du(t){return null==t?[]:vr(t,Bu(t))}function Lu(t){return null==t?[]:vr(t,Vu(t))}function Iu(t,e,n){var r=null==t?it:gr(t,e);return r===it?n:r}function Mu(t,e){return null!=t&&No(t,e,br)}function Uu(t,e){return null!=t&&No(t,e,wr)}function Bu(t){return Js(t)?Rn(t):Mr(t)}function Vu(t){return Js(t)?Rn(t,!0):Ur(t)}function Fu(t,e){var n={};return e=xo(e,3),hr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function qu(t,e){var n={};return e=xo(e,3),hr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function zu(t,e){return Hu(t,Rs(xo(e)))}function Hu(t,e){if(null==t)return{};var n=v(_o(t),function(t){return[t]});return e=xo(e),Kr(t,n,function(t,n){return e(t,n[0])})}function Ju(t,e,n){e=Ei(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++r<i;){var o=null==t?it:t[Qo(e[r])];o===it&&(r=i,o=n),t=eu(o)?o.call(t):o}return t}function Wu(t,e,n){return null==t?t:oi(t,e,n)}function Yu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:oi(t,e,n,r)}function Ku(t,e,n){var r=mp(t),i=r||_p(t)||Op(t);if(e=xo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:iu(t)&&eu(o)?dl(kf(t)):{}}return(i?c:hr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Gu(t,e){return null==t||vi(t,e)}function Zu(t,e,n){return null==t?t:gi(t,e,xi(n))}function Xu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:gi(t,e,xi(n),r)}function Qu(t){return null==t?[]:L(t,Bu(t))}function tc(t){return null==t?[]:L(t,Vu(t))}function ec(t,e,n){return n===it&&(n=e,e=it),n!==it&&(n=Ou(n),n=n===n?n:0),e!==it&&(e=Ou(e),e=e===e?e:0),nr(Ou(t),e,n)}function nc(t,e,n){return e=wu(e),n===it?(n=e,e=0):n=wu(n),t=Ou(t),xr(t,e,n)}function rc(t,e,n){if(n&&"boolean"!=typeof n&&Lo(t,e,n)&&(e=n=it),n===it&&("boolean"==typeof e?(n=e,e=it):"boolean"==typeof t&&(n=t,t=it)),t===it&&e===it?(t=0,e=1):(t=wu(t),e===it?(e=t,t=0):e=wu(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Gf();return Wf(t+i*(e-t+Nn("1e-"+((i+"").length-1))),e)}return Qr(t,e)}function ic(t){return Gp(Au(t).toLowerCase())}function oc(t){return(t=Au(t))&&t.replace(Ke,Jn).replace(gn,"")}function ac(t,e,n){t=Au(t),e=hi(e);var r=t.length;n=n===it?r:nr(xu(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function sc(t){return t=Au(t),t&&Oe.test(t)?t.replace(xe,Wn):t}function uc(t){return t=Au(t),t&&Pe.test(t)?t.replace(Re,"\\$&"):t}function cc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Bf(i),n)+t+no(Uf(i),n)}function fc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;return e&&r<e?t+no(e-r,n):t}function lc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;return e&&r<e?no(e-r,n)+t:t}function pc(t,e,n){return n||null==e?e=0:e&&(e=+e),Kf(Au(t).replace(De,""),e||0)}function hc(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:xu(e),ei(Au(t),e)}function dc(){var t=arguments,e=Au(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function vc(t,e,n){return n&&"number"!=typeof n&&Lo(t,e,n)&&(e=n=it),(n=n===it?Lt:n>>>0)?(t=Au(t),t&&("string"==typeof e||null!=e&&!xp(e))&&!(e=hi(e))&&q(t)?Oi(tt(t),0,n):t.split(e,n)):[]}function gc(t,e,n){return t=Au(t),n=null==n?0:nr(xu(n),0,t.length),e=hi(e),t.slice(n,n+e.length)==e}function mc(t,e,r){var i=n.templateSettings;r&&Lo(t,e,r)&&(e=it),t=Au(t),e=Np({},e,i,fo);var o,a,s=Np({},e.imports,i.imports,fo),u=Bu(s),c=L(s,u),f=0,l=e.interpolate||Ge,p="__p += '",h=cf((e.escape||Ge).source+"|"+l.source+"|"+(l===Ae?Fe:Ge).source+"|"+(e.evaluate||Ge).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++xn+"]")+"\n";t.replace(h,function(e,n,r,i,s,u){return r||(r=i),p+=t.slice(f,u).replace(Ze,V),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),s&&(a=!0,p+="';\n"+s+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=u+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ye,""):p).replace(_e,"$1").replace(be,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Zp(function(){return af(u,d+"return "+p).apply(it,c)});if(g.source=p,Qs(g))throw g;return g}function yc(t){return Au(t).toLowerCase()}function _c(t){return Au(t).toUpperCase()}function bc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace($e,"");if(!t||!(e=hi(e)))return t;var r=tt(t),i=tt(e);return Oi(r,M(r,i),U(r,i)+1).join("")}function wc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace(Le,"");if(!t||!(e=hi(e)))return t;var r=tt(t);return Oi(r,0,U(r,tt(e))+1).join("")}function xc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace(De,"");if(!t||!(e=hi(e)))return t;var r=tt(t);return Oi(r,M(r,tt(e))).join("")}function Ec(t,e){var n=St,r=At;if(iu(e)){var i="separator"in e?e.separator:i;n="length"in e?xu(e.length):n,r="omission"in e?hi(e.omission):r}t=Au(t);var o=t.length;if(q(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-Q(r);if(s<1)return r;var u=a?Oi(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),xp(i)){if(t.slice(s).search(i)){var c,f=u;for(i.global||(i=cf(i.source,Au(qe.exec(i))+"g")),i.lastIndex=0;c=i.exec(f);)var l=c.index;u=u.slice(0,l===it?s:l)}}else if(t.indexOf(hi(i),s)!=s){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r}function Oc(t){return t=Au(t),t&&Ee.test(t)?t.replace(we,Yn):t}function Cc(t,e,n){return t=Au(t),e=n?it:e,e===it?z(t)?rt(t):w(t):t.match(e)||[]}function Sc(t){var e=null==t?0:t.length,n=xo();return t=e?v(t,function(t){if("function"!=typeof t[1])throw new lf(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++r<e;){var i=t[r];if(s(i[0],this,n))return s(i[1],this,n)}})}function Ac(t){return ir(rr(t,lt))}function kc(t){return function(){return t}}function Nc(t,e){return null==t||t!==t?e:t}function Tc(t){return t}function jc(t){return Ir("function"==typeof t?t:rr(t,lt))}function Rc(t){return Fr(rr(t,lt))}function Pc(t,e){return qr(t,rr(e,lt))}function $c(t,e,n){var r=Bu(e),i=vr(e,r);null!=n||iu(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=vr(e,Bu(e)));var o=!(iu(n)&&"chain"in n&&!n.chain),a=eu(t);return c(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=Ii(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,g([this.value()],arguments))})}),t}function Dc(){return Pn._===this&&(Pn._=xf),this}function Lc(){}function Ic(t){return t=xu(t),ni(function(e){return Jr(e,t)})}function Mc(t){return Io(t)?k(Qo(t)):Gr(t)}function Uc(t){return function(e){return null==t?it:gr(t,e)}}function Bc(){return[]}function Vc(){return!1}function Fc(){return{}}function qc(){return""}function zc(){return!0}function Hc(t,e){if((t=xu(t))<1||t>Pt)return[];var n=Lt,r=Wf(t,Lt);e=xo(e),t-=Lt;for(var i=P(r,e);++n<t;)e(n);return i}function Jc(t){return mp(t)?v(t,Qo):gu(t)?[t]:Ii(Rl(Au(t)))}function Wc(t){var e=++yf;return Au(t)+e}function Yc(t){return t&&t.length?cr(t,Tc,_r):it}function Kc(t,e){return t&&t.length?cr(t,xo(e,2),_r):it}function Gc(t){return A(t,Tc)}function Zc(t,e){return A(t,xo(e,2))}function Xc(t){return t&&t.length?cr(t,Tc,Br):it}function Qc(t,e){return t&&t.length?cr(t,xo(e,2),Br):it}function tf(t){return t&&t.length?R(t,Tc):0}function ef(t,e){return t&&t.length?R(t,xo(e,2)):0}e=null==e?Pn:Kn.defaults(Pn.Object(),e,Kn.pick(Pn,wn));var nf=e.Array,rf=e.Date,of=e.Error,af=e.Function,sf=e.Math,uf=e.Object,cf=e.RegExp,ff=e.String,lf=e.TypeError,pf=nf.prototype,hf=af.prototype,df=uf.prototype,vf=e["__core-js_shared__"],gf=hf.toString,mf=df.hasOwnProperty,yf=0,_f=function(){var t=/[^.]+$/.exec(vf&&vf.keys&&vf.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),bf=df.toString,wf=gf.call(uf),xf=Pn._,Ef=cf("^"+gf.call(mf).replace(Re,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Of=Ln?e.Buffer:it,Cf=e.Symbol,Sf=e.Uint8Array,Af=Of?Of.allocUnsafe:it,kf=W(uf.getPrototypeOf,uf),Nf=uf.create,Tf=df.propertyIsEnumerable,jf=pf.splice,Rf=Cf?Cf.isConcatSpreadable:it,Pf=Cf?Cf.iterator:it,$f=Cf?Cf.toStringTag:it,Df=function(){try{var t=Co(uf,"defineProperty");return t({},"",{}),t}catch(t){}}(),Lf=e.clearTimeout!==Pn.clearTimeout&&e.clearTimeout,If=rf&&rf.now!==Pn.Date.now&&rf.now,Mf=e.setTimeout!==Pn.setTimeout&&e.setTimeout,Uf=sf.ceil,Bf=sf.floor,Vf=uf.getOwnPropertySymbols,Ff=Of?Of.isBuffer:it,qf=e.isFinite,zf=pf.join,Hf=W(uf.keys,uf),Jf=sf.max,Wf=sf.min,Yf=rf.now,Kf=e.parseInt,Gf=sf.random,Zf=pf.reverse,Xf=Co(e,"DataView"),Qf=Co(e,"Map"),tl=Co(e,"Promise"),el=Co(e,"Set"),nl=Co(e,"WeakMap"),rl=Co(uf,"create"),il=nl&&new nl,ol={},al=ta(Xf),sl=ta(Qf),ul=ta(tl),cl=ta(el),fl=ta(nl),ll=Cf?Cf.prototype:it,pl=ll?ll.valueOf:it,hl=ll?ll.toString:it,dl=function(){function t(){}return function(e){if(!iu(e))return{};if(Nf)return Nf(e);t.prototype=e;var n=new t;return t.prototype=it,n}}();n.templateSettings={escape:Ce,evaluate:Se,interpolate:Ae,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=dl(r.prototype),i.prototype.constructor=i,b.prototype=dl(r.prototype),b.prototype.constructor=b,nt.prototype.clear=Be,nt.prototype.delete=Xe,nt.prototype.get=Qe,nt.prototype.has=tn,nt.prototype.set=en,nn.prototype.clear=rn,nn.prototype.delete=on,nn.prototype.get=an,nn.prototype.has=sn,nn.prototype.set=un,cn.prototype.clear=fn,cn.prototype.delete=ln,cn.prototype.get=pn,cn.prototype.has=hn,cn.prototype.set=dn,mn.prototype.add=mn.prototype.push=yn,mn.prototype.has=_n,bn.prototype.clear=Cn,bn.prototype.delete=Sn,bn.prototype.get=An,bn.prototype.has=kn,bn.prototype.set=jn;var vl=qi(hr),gl=qi(dr,!0),ml=zi(),yl=zi(!0),_l=il?function(t,e){return il.set(t,e),t}:Tc,bl=Df?function(t,e){return Df(t,"toString",{configurable:!0,enumerable:!1,value:kc(e),writable:!0})}:Tc,wl=ni,xl=Lf||function(t){return Pn.clearTimeout(t)},El=el&&1/K(new el([,-0]))[1]==Rt?function(t){return new el(t)}:Lc,Ol=il?function(t){return il.get(t)}:Lc,Cl=Vf?function(t){return null==t?[]:(t=uf(t),p(Vf(t),function(e){return Tf.call(t,e)}))}:Bc,Sl=Vf?function(t){for(var e=[];t;)g(e,Cl(t)),t=kf(t);return e}:Bc,Al=yr;(Xf&&Al(new Xf(new ArrayBuffer(1)))!=ue||Qf&&Al(new Qf)!=Kt||tl&&"[object Promise]"!=Al(tl.resolve())||el&&Al(new el)!=ee||nl&&Al(new nl)!=oe)&&(Al=function(t){var e=yr(t),n=e==Xt?t.constructor:it,r=n?ta(n):"";if(r)switch(r){case al:return ue;case sl:return Kt;case ul:return"[object Promise]";case cl:return ee;case fl:return oe}return e});var kl=vf?eu:Vc,Nl=Zo(_l),Tl=Mf||function(t,e){return Pn.setTimeout(t,e)},jl=Zo(bl),Rl=function(t){var e=js(t,function(t){return n.size===ct&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Te.test(t)&&e.push(""),t.replace(je,function(t,n,r,i){e.push(r?i.replace(Ve,"$1"):n||t)}),e}),Pl=ni(function(t,e){return Ws(t)?sr(t,pr(e,1,Ws,!0)):[]}),$l=ni(function(t,e){var n=wa(e);return Ws(n)&&(n=it),Ws(t)?sr(t,pr(e,1,Ws,!0),xo(n,2)):[]}),Dl=ni(function(t,e){var n=wa(e);return Ws(n)&&(n=it),Ws(t)?sr(t,pr(e,1,Ws,!0),it,n):[]}),Ll=ni(function(t){var e=v(t,wi);return e.length&&e[0]===t[0]?Er(e):[]}),Il=ni(function(t){var e=wa(t),n=v(t,wi);return e===wa(n)?e=it:n.pop(),n.length&&n[0]===t[0]?Er(n,xo(e,2)):[]}),Ml=ni(function(t){var e=wa(t),n=v(t,wi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?Er(n,it,e):[]}),Ul=ni(Oa),Bl=mo(function(t,e){var n=null==t?0:t.length,r=er(t,e);return Xr(t,v(e,function(t){return Do(t,n)?+t:t}).sort(Pi)),r}),Vl=ni(function(t){return di(pr(t,1,Ws,!0))}),Fl=ni(function(t){var e=wa(t);return Ws(e)&&(e=it),di(pr(t,1,Ws,!0),xo(e,2))}),ql=ni(function(t){var e=wa(t);return e="function"==typeof e?e:it,di(pr(t,1,Ws,!0),it,e)}),zl=ni(function(t,e){return Ws(t)?sr(t,e):[]}),Hl=ni(function(t){return _i(p(t,Ws))}),Jl=ni(function(t){var e=wa(t);return Ws(e)&&(e=it),_i(p(t,Ws),xo(e,2))}),Wl=ni(function(t){var e=wa(t);return e="function"==typeof e?e:it,_i(p(t,Ws),it,e)}),Yl=ni(Ja),Kl=ni(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Wa(t,n)}),Gl=mo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof b&&Do(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Xa,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Zl=Vi(function(t,e,n){mf.call(t,n)?++t[n]:tr(t,n,1)}),Xl=Gi(la),Ql=Gi(pa),tp=Vi(function(t,e,n){mf.call(t,n)?t[n].push(e):tr(t,n,[e])}),ep=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=Js(t)?nf(t.length):[];return vl(t,function(t){o[++r]=i?s(e,t,n):Cr(t,e,n)}),o}),np=Vi(function(t,e,n){tr(t,n,e)}),rp=Vi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ip=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Lo(t,e[0],e[1])?e=[]:n>2&&Lo(e[0],e[1],e[2])&&(e=[e[0]]),Wr(t,pr(e,1),[])}),op=If||function(){return Pn.Date.now()},ap=ni(function(t,e,n){var r=gt;if(n.length){var i=Y(n,wo(ap));r|=wt}return co(t,r,e,n,i)}),sp=ni(function(t,e,n){var r=gt|mt;if(n.length){var i=Y(n,wo(sp));r|=wt}return co(e,r,t,n,i)}),up=ni(function(t,e){return ar(t,1,e)}),cp=ni(function(t,e,n){return ar(t,Ou(e)||0,n)});js.Cache=cn;var fp=wl(function(t,e){e=1==e.length&&mp(e[0])?v(e[0],D(xo())):v(pr(e,1),D(xo()));var n=e.length;return ni(function(r){for(var i=-1,o=Wf(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return s(t,this,r)})}),lp=ni(function(t,e){var n=Y(e,wo(lp));return co(t,wt,it,e,n)}),pp=ni(function(t,e){var n=Y(e,wo(pp));return co(t,xt,it,e,n)}),hp=mo(function(t,e){return co(t,Ot,it,it,it,e)}),dp=oo(_r),vp=oo(function(t,e){return t>=e}),gp=Sr(function(){return arguments}())?Sr:function(t){return ou(t)&&mf.call(t,"callee")&&!Tf.call(t,"callee")},mp=nf.isArray,yp=Un?D(Un):Ar,_p=Ff||Vc,bp=Bn?D(Bn):kr,wp=Vn?D(Vn):jr,xp=Fn?D(Fn):$r,Ep=qn?D(qn):Dr,Op=zn?D(zn):Lr,Cp=oo(Br),Sp=oo(function(t,e){return t<=e}),Ap=Fi(function(t,e){if(Vo(e)||Js(e))return void Mi(e,Bu(e),t);for(var n in e)mf.call(e,n)&&Hn(t,n,e[n])}),kp=Fi(function(t,e){Mi(e,Vu(e),t)}),Np=Fi(function(t,e,n,r){Mi(e,Vu(e),t,r)}),Tp=Fi(function(t,e,n,r){Mi(e,Bu(e),t,r)}),jp=mo(er),Rp=ni(function(t){return t.push(it,fo),s(Np,it,t)}),Pp=ni(function(t){return t.push(it,lo),s(Mp,it,t)}),$p=Qi(function(t,e,n){t[e]=n},kc(Tc)),Dp=Qi(function(t,e,n){mf.call(t,e)?t[e].push(n):t[e]=[n]},xo),Lp=ni(Cr),Ip=Fi(function(t,e,n){zr(t,e,n)}),Mp=Fi(function(t,e,n,r){zr(t,e,n,r)}),Up=mo(function(t,e){var n={};if(null==t)return n;var r=!1;e=v(e,function(e){return e=Ei(e,t),r||(r=e.length>1),e}),Mi(t,_o(t),n),r&&(n=rr(n,lt|pt|ht,po));for(var i=e.length;i--;)vi(n,e[i]);return n}),Bp=mo(function(t,e){return null==t?{}:Yr(t,e)}),Vp=uo(Bu),Fp=uo(Vu),qp=Wi(function(t,e,n){return e=e.toLowerCase(),t+(n?ic(e):e)}),zp=Wi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Hp=Wi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Jp=Ji("toLowerCase"),Wp=Wi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Yp=Wi(function(t,e,n){return t+(n?" ":"")+Gp(e)}),Kp=Wi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Gp=Ji("toUpperCase"),Zp=ni(function(t,e){try{return s(t,it,e)}catch(t){return Qs(t)?t:new of(t)}}),Xp=mo(function(t,e){return c(e,function(e){e=Qo(e),tr(t,e,ap(t[e],t))}),t}),Qp=Zi(),th=Zi(!0),eh=ni(function(t,e){return function(n){return Cr(n,t,e)}}),nh=ni(function(t,e){return function(n){return Cr(t,n,e)}}),rh=eo(v),ih=eo(l),oh=eo(_),ah=io(),sh=io(!0),uh=to(function(t,e){return t+e},0),ch=so("ceil"),fh=to(function(t,e){return t/e},1),lh=so("floor"),ph=to(function(t,e){return t*e},1),hh=so("round"),dh=to(function(t,e){return t-e},0);return n.after=Os,n.ary=Cs,n.assign=Ap,n.assignIn=kp,n.assignInWith=Np,n.assignWith=Tp,n.at=jp,n.before=Ss,n.bind=ap,n.bindAll=Xp,n.bindKey=sp,n.castArray=Us,n.chain=Ga,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Sc,n.conforms=Ac,n.constant=kc,n.countBy=Zl,n.create=ku,n.curry=As,n.curryRight=ks,n.debounce=Ns,n.defaults=Rp,n.defaultsDeep=Pp,n.defer=up,n.delay=cp,n.difference=Pl,n.differenceBy=$l,n.differenceWith=Dl,n.drop=aa,n.dropRight=sa,n.dropRightWhile=ua,n.dropWhile=ca,n.fill=fa,n.filter=ss,n.flatMap=us,n.flatMapDeep=cs,n.flatMapDepth=fs,n.flatten=ha,n.flattenDeep=da,n.flattenDepth=va,n.flip=Ts,n.flow=Qp,n.flowRight=th,n.fromPairs=ga,n.functions=Du,n.functionsIn=Lu,n.groupBy=tp,n.initial=_a,n.intersection=Ll,n.intersectionBy=Il,n.intersectionWith=Ml,n.invert=$p,n.invertBy=Dp,n.invokeMap=ep,n.iteratee=jc,n.keyBy=np,n.keys=Bu,n.keysIn=Vu,n.map=ds,n.mapKeys=Fu,n.mapValues=qu,n.matches=Rc,n.matchesProperty=Pc,n.memoize=js,n.merge=Ip,n.mergeWith=Mp,n.method=eh,n.methodOf=nh,n.mixin=$c,n.negate=Rs,n.nthArg=Ic,n.omit=Up,n.omitBy=zu,n.once=Ps,n.orderBy=vs,n.over=rh,n.overArgs=fp,n.overEvery=ih,n.overSome=oh,n.partial=lp,n.partialRight=pp,n.partition=rp,n.pick=Bp,n.pickBy=Hu,n.property=Mc,n.propertyOf=Uc,n.pull=Ul,n.pullAll=Oa,n.pullAllBy=Ca,n.pullAllWith=Sa,n.pullAt=Bl,n.range=ah,n.rangeRight=sh,n.rearg=hp,n.reject=ys,n.remove=Aa,n.rest=$s,n.reverse=ka,n.sampleSize=bs,n.set=Wu,n.setWith=Yu,n.shuffle=ws,n.slice=Na,n.sortBy=ip,n.sortedUniq=La,n.sortedUniqBy=Ia,n.split=vc,n.spread=Ds,n.tail=Ma,n.take=Ua,n.takeRight=Ba,n.takeRightWhile=Va,n.takeWhile=Fa,n.tap=Za,n.throttle=Ls,n.thru=Xa,n.toArray=bu,n.toPairs=Vp,n.toPairsIn=Fp,n.toPath=Jc,n.toPlainObject=Cu,n.transform=Ku,n.unary=Is,n.union=Vl,n.unionBy=Fl,n.unionWith=ql,n.uniq=qa,n.uniqBy=za,n.uniqWith=Ha,n.unset=Gu,n.unzip=Ja,n.unzipWith=Wa,n.update=Zu,n.updateWith=Xu,n.values=Qu,n.valuesIn=tc,n.without=zl,n.words=Cc,n.wrap=Ms,n.xor=Hl,n.xorBy=Jl,n.xorWith=Wl,n.zip=Yl,n.zipObject=Ya,n.zipObjectDeep=Ka,n.zipWith=Kl,n.entries=Vp,n.entriesIn=Fp,n.extend=kp,n.extendWith=Np,$c(n,n),n.add=uh,n.attempt=Zp,n.camelCase=qp,n.capitalize=ic,n.ceil=ch,n.clamp=ec,n.clone=Bs,n.cloneDeep=Fs,n.cloneDeepWith=qs,n.cloneWith=Vs,n.conformsTo=zs,n.deburr=oc,n.defaultTo=Nc,n.divide=fh,n.endsWith=ac,n.eq=Hs,n.escape=sc,n.escapeRegExp=uc,n.every=as,n.find=Xl,n.findIndex=la,n.findKey=Nu,n.findLast=Ql,n.findLastIndex=pa,n.findLastKey=Tu,n.floor=lh,n.forEach=ls,n.forEachRight=ps,n.forIn=ju,n.forInRight=Ru,n.forOwn=Pu,n.forOwnRight=$u,n.get=Iu,n.gt=dp,n.gte=vp,n.has=Mu,n.hasIn=Uu,n.head=ma,n.identity=Tc,n.includes=hs,n.indexOf=ya,n.inRange=nc,n.invoke=Lp,n.isArguments=gp,n.isArray=mp,n.isArrayBuffer=yp,n.isArrayLike=Js,n.isArrayLikeObject=Ws,n.isBoolean=Ys,n.isBuffer=_p,n.isDate=bp,n.isElement=Ks,n.isEmpty=Gs,n.isEqual=Zs,n.isEqualWith=Xs,n.isError=Qs,n.isFinite=tu,n.isFunction=eu,n.isInteger=nu,n.isLength=ru,n.isMap=wp,n.isMatch=au,n.isMatchWith=su,n.isNaN=uu,n.isNative=cu,n.isNil=lu,n.isNull=fu,n.isNumber=pu,n.isObject=iu,n.isObjectLike=ou,n.isPlainObject=hu,n.isRegExp=xp,n.isSafeInteger=du,n.isSet=Ep,n.isString=vu,n.isSymbol=gu,n.isTypedArray=Op,n.isUndefined=mu,n.isWeakMap=yu,n.isWeakSet=_u,n.join=ba,n.kebabCase=zp,n.last=wa,n.lastIndexOf=xa,n.lowerCase=Hp,n.lowerFirst=Jp,n.lt=Cp,n.lte=Sp,n.max=Yc,n.maxBy=Kc,n.mean=Gc,n.meanBy=Zc,n.min=Xc,n.minBy=Qc,n.stubArray=Bc,n.stubFalse=Vc,n.stubObject=Fc,n.stubString=qc,n.stubTrue=zc,n.multiply=ph,n.nth=Ea,n.noConflict=Dc,n.noop=Lc,n.now=op,n.pad=cc,n.padEnd=fc,n.padStart=lc,n.parseInt=pc,n.random=rc,n.reduce=gs,n.reduceRight=ms,n.repeat=hc,n.replace=dc,n.result=Ju,n.round=hh,n.runInContext=t,n.sample=_s,n.size=xs,n.snakeCase=Wp,n.some=Es,n.sortedIndex=Ta,n.sortedIndexBy=ja,n.sortedIndexOf=Ra,n.sortedLastIndex=Pa,n.sortedLastIndexBy=$a,n.sortedLastIndexOf=Da,n.startCase=Yp,n.startsWith=gc,n.subtract=dh,n.sum=tf,n.sumBy=ef,n.template=mc,n.times=Hc,n.toFinite=wu,n.toInteger=xu,n.toLength=Eu,n.toLower=yc,n.toNumber=Ou,n.toSafeInteger=Su,n.toString=Au,n.toUpper=_c,n.trim=bc,n.trimEnd=wc,n.trimStart=xc,n.truncate=Ec,n.unescape=Oc,n.uniqueId=Wc,n.upperCase=Kp,n.upperFirst=Gp,n.each=ls,n.eachRight=ps,n.first=ma,$c(n,function(){var t={};return hr(n,function(e,r){mf.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",c(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),c(["drop","take"],function(t,e){b.prototype[t]=function(n){n=n===it?1:Jf(xu(n),0);var r=this.__filtered__&&!e?new b(this):this.clone();return r.__filtered__?r.__takeCount__=Wf(n,r.__takeCount__):r.__views__.push({size:Wf(n,Lt),type:t+(r.__dir__<0?"Right":"")}),r},b.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),c(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Tt||3==n;b.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:xo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),c(["head","last"],function(t,e){var n="take"+(e?"Right":"");b.prototype[t]=function(){return this[n](1).value()[0]}}),c(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");b.prototype[t]=function(){return this.__filtered__?new b(this):this[n](1)}}),b.prototype.compact=function(){return this.filter(Tc)},b.prototype.find=function(t){return this.filter(t).head()},b.prototype.findLast=function(t){return this.reverse().find(t)},b.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new b(this):this.map(function(n){return Cr(n,t,e)})}),b.prototype.reject=function(t){return this.filter(Rs(xo(t)))},b.prototype.slice=function(t,e){t=xu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new b(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=xu(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},b.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},b.prototype.toArray=function(){return this.take(Lt)},hr(b.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,c=e instanceof b,f=u[0],l=c||mp(e),p=function(t){var e=a.apply(n,g([t],u));return o&&h?e[0]:e};l&&r&&"function"==typeof f&&1!=f.length&&(c=l=!1);var h=this.__chain__,d=!!this.__actions__.length,v=s&&!h,m=c&&!d;if(!s&&l){e=m?e:new b(this);var y=t.apply(e,u);return y.__actions__.push({func:Xa,args:[p],thisArg:it}),new i(y,h)}return v&&m?t.apply(this,u):(y=this.thru(p),v?o?y.value()[0]:y.value():y)})}),c(["pop","push","shift","sort","splice","unshift"],function(t){var e=pf[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(mp(n)?n:[],t)}return this[r](function(n){return e.apply(mp(n)?n:[],t)})}}),hr(b.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(ol[i]||(ol[i]=[])).push({name:e,func:r})}}),ol[Xi(it,mt).name]=[{name:"wrapper",func:it}],b.prototype.clone=N,b.prototype.reverse=Z,b.prototype.value=et,n.prototype.at=Gl,n.prototype.chain=Qa,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Pf&&(n.prototype[Pf]=ns),n}();Pn._=Kn,(i=function(){return Kn}.call(e,n,e,r))!==it&&(r.exports=i)}).call(this)}).call(e,n(1),n(12)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(0),i=n(34),o={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},a={_init:function(){this.connections=n(61).getConnectionsObject(this),this.pipes=n(62).getPipesObject(this),this.util=n(5).getUtilObject(this),this._http=null,this.version=this.util.isNodeJs()?n(63).version:"1.20.2";var t=n(64).getPipeConstructor;this.pipe=t(this);var e=n(65).getConnectionConstructor;this.connection=e(this)},setup:function(t,e){return o=r.assign(o,{token:t},e),this._http=null,this._createHttp(),this},getConfig:function(){return r.assign({},o)},http:function(){return this._http||this._createHttp(),this._http},task:i,_createHttp:function(){var t={baseURL:o.baseUrl,headers:{Authorization:"Bearer "+o.token},insecure:!0===o.insecure};this._http=n(66).create(t)}};a._init(),t.exports=a},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t){function n(){if(void 0!==o)return o;if(t.XMLHttpRequest){o=new t.XMLHttpRequest;try{o.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(t){o=null}}else o=null;return o}function r(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(t.fetch)&&i(t.ReadableStream),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var o,a=void 0!==t.ArrayBuffer,s=a&&i(t.ArrayBuffer.prototype.slice);e.arraybuffer=e.fetch||a&&r("arraybuffer"),e.msstream=!e.fetch&&s&&r("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&a&&r("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),e.vbArray=i(t.VBArray),o=null}).call(e,n(1))},function(t,e,n){e=t.exports=n(17),e.Stream=e,e.Readable=e,e.Writable=n(21),e.Duplex=n(6),e.Transform=n(23),e.PassThrough=n(77)},function(t,e,n){"use strict";(function(e,r){function i(t){return I.from(t)}function o(t){return I.isBuffer(t)||t instanceof M}function a(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?$(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}function s(t,e){P=P||n(6),t=t||{},this.objectMode=!!t.objectMode,e instanceof P&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new q,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(F||(F=n(22).StringDecoder),this.decoder=new F(t.encoding),this.encoding=t.encoding)}function u(t){if(P=P||n(6),!(this instanceof u))return new u(t);this._readableState=new s(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),L.call(this)}function c(t,e,n,r,o){var a=t._readableState;if(null===e)a.reading=!1,v(t,a);else{var s;o||(s=l(a,e)),s?t.emit("error",s):a.objectMode||e&&e.length>0?("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===I.prototype||(e=i(e)),r?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):f(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(e=a.decoder.write(e),a.objectMode||0!==e.length?f(t,a,e,!1):y(t,a)):f(t,a,e,!1))):r||(a.reading=!1)}return p(a)}function f(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&g(t)),y(t,e)}function l(t,e){var n;return o(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function p(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}function h(t){return t>=J?t=J:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function d(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=h(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function v(t,e){if(!e.ended){if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,g(t)}}function g(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(V("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?R(m,t):m(t))}function m(t){V("emit readable"),t.emit("readable"),O(t)}function y(t,e){e.readingMore||(e.readingMore=!0,R(_,t,e))}function _(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(V("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function b(t){return function(){var e=t._readableState;V("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&D(t,"data")&&(e.flowing=!0,O(t))}}function w(t){V("readable nexttick read 0"),t.read(0)}function x(t,e){e.resumeScheduled||(e.resumeScheduled=!0,R(E,t,e))}function E(t,e){e.reading||(V("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),O(t),e.flowing&&!e.reading&&t.read(0)}function O(t){var e=t._readableState;for(V("flow",e.flowing);e.flowing&&null!==t.read(););}function C(t,e){if(0===e.length)return null;var n;return e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=S(t,e.buffer,e.decoder),n}function S(t,e,n){var r;return t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?A(t,e):k(t,e),r}function A(t,e){var n=e.head,r=1,i=n.data;for(t-=i.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++r}return e.length-=r,i}function k(t,e){var n=I.allocUnsafe(t),r=e.head,i=1;for(r.data.copy(n),t-=r.data.length;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,a),0===(t-=a)){a===o.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++i}return e.length-=i,n}function N(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,R(T,e,t))}function T(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function j(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}var R=n(8);t.exports=u;var P,$=n(14);u.ReadableState=s;var D=(n(18).EventEmitter,function(t,e){return t.listeners(e).length}),L=n(19),I=n(9).Buffer,M=e.Uint8Array||function(){},U=n(7);U.inherits=n(4);var B=n(72),V=void 0;V=B&&B.debuglog?B.debuglog("stream"):function(){};var F,q=n(73),z=n(20);U.inherits(u,L);var H=["error","close","destroy","pause","resume"];Object.defineProperty(u.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),u.prototype.destroy=z.destroy,u.prototype._undestroy=z.undestroy,u.prototype._destroy=function(t,e){this.push(null),e(t)},u.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=I.from(t,e),e=""),n=!0),c(this,t,e,!1,n)},u.prototype.unshift=function(t){return c(this,t,null,!0,!1)},u.prototype.isPaused=function(){return!1===this._readableState.flowing},u.prototype.setEncoding=function(t){return F||(F=n(22).StringDecoder),this._readableState.decoder=new F(t),this._readableState.encoding=t,this};var J=8388608;u.prototype.read=function(t){V("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return V("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?N(this):g(this),null;if(0===(t=d(t,e))&&e.ended)return 0===e.length&&N(this),null;var r=e.needReadable;V("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&(r=!0,V("length less than watermark",r)),e.ended||e.reading?(r=!1,V("reading or ended",r)):r&&(V("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=d(n,e)));var i;return i=t>0?C(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&N(this)),null!==i&&this.emit("data",i),i},u.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},u.prototype.pipe=function(t,e){function n(t,e){V("onunpipe"),t===p&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,o())}function i(){V("onend"),t.end()}function o(){V("cleanup"),t.removeListener("close",c),t.removeListener("finish",f),t.removeListener("drain",g),t.removeListener("error",u),t.removeListener("unpipe",n),p.removeListener("end",i),p.removeListener("end",l),p.removeListener("data",s),m=!0,!h.awaitDrain||t._writableState&&!t._writableState.needDrain||g()}function s(e){V("ondata"),y=!1,!1!==t.write(e)||y||((1===h.pipesCount&&h.pipes===t||h.pipesCount>1&&-1!==j(h.pipes,t))&&!m&&(V("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,y=!0),p.pause())}function u(e){V("onerror",e),l(),t.removeListener("error",u),0===D(t,"error")&&t.emit("error",e)}function c(){t.removeListener("finish",f),l()}function f(){V("onfinish"),t.removeListener("close",c),l()}function l(){V("unpipe"),p.unpipe(t)}var p=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=t;break;case 1:h.pipes=[h.pipes,t];break;default:h.pipes.push(t)}h.pipesCount+=1,V("pipe count=%d opts=%j",h.pipesCount,e);var d=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr,v=d?i:l;h.endEmitted?R(v):p.once("end",v),t.on("unpipe",n);var g=b(p);t.on("drain",g);var m=!1,y=!1;return p.on("data",s),a(t,"error",u),t.once("close",c),t.once("finish",f),t.emit("pipe",p),h.flowing||(V("pipe resume"),p.resume()),t},u.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,n);return this}var a=j(e.pipes,t);return-1===a?this:(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},u.prototype.on=function(t,e){var n=L.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&g(this):R(w,this))}return n},u.prototype.addListener=u.prototype.on,u.prototype.resume=function(){var t=this._readableState;return t.flowing||(V("resume"),t.flowing=!0,x(this,t)),this},u.prototype.pause=function(){return V("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(V("pause"),this._readableState.flowing=!1,this.emit("pause")),this},u.prototype.wrap=function(t){var e=this._readableState,n=!1,r=this;t.on("end",function(){if(V("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&r.push(t)}r.push(null)}),t.on("data",function(i){if(V("wrapped data"),e.decoder&&(i=e.decoder.write(i)),(!e.objectMode||null!==i&&void 0!==i)&&(e.objectMode||i&&i.length)){r.push(i)||(n=!0,t.pause())}});for(var i in t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o<H.length;o++)t.on(H[o],r.emit.bind(r,H[o]));return r._read=function(e){V("wrapped _read",e),n&&(n=!1,t.resume())},r},u._fromList=C}).call(e,n(1),n(2))},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!i(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,i,s,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var f=new Error('Uncaught, unspecified "error" event. ('+e+")");throw f.context=e,f}if(n=this._events[t],a(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),c=n.slice(),i=c.length,u=0;u<i;u++)c[u].apply(this,s);return!0},n.prototype.addListener=function(t,e){var i;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(i=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,a,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],a=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=a;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){t.exports=n(18).EventEmitter},function(t,e,n){"use strict";function r(t,e){var n=this,r=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;if(r||i)return void(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||a(o,this,t));this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(a(o,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)})}function i(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function o(t,e){t.emit("error",e)}var a=n(8);t.exports={destroy:r,undestroy:i}},function(t,e,n){"use strict";(function(e,r,i){function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){A(e,t)}}function a(t){return $.from(t)}function s(t){return $.isBuffer(t)||t instanceof D}function u(){}function c(t,e){N=N||n(6),t=t||{},this.objectMode=!!t.objectMode,e instanceof N&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){y(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function f(t){if(N=N||n(6),!(I.call(f,this)||this instanceof N))return new f(t);this._writableState=new c(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),P.call(this)}function l(t,e){var n=new Error("write after end");t.emit("error",n),k(e,n)}function p(t,e,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),k(r,o),i=!1),i}function h(t,e,n){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=$.from(e,n)),e}function d(t,e,n,r,i,o){if(!n){var a=h(e,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;if(u||(e.needDrain=!0),e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else v(t,e,!1,s,r,i,o);return u}function v(t,e,n,r,i,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function g(t,e,n,r,i){--e.pendingcb,n?(k(i,r),k(C,t,e),t._writableState.errorEmitted=!0,t.emit("error",r)):(i(r),t._writableState.errorEmitted=!0,t.emit("error",r),C(t,e))}function m(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function y(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(m(n),e)g(t,n,r,e,i);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||w(t,n),r?T(_,t,n,o,i):_(t,n,o,i)}}function _(t,e,n,r){n||b(t,e),e.pendingcb--,r(),C(t,e)}function b(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function w(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,u=!0;n;)i[s]=n,n.isBuf||(u=!1),n=n.next,s+=1;i.allBuffers=u,v(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e)}else{for(;n;){var c=n.chunk,f=n.encoding,l=n.callback;if(v(t,e,!1,e.objectMode?1:c.length,c,f,l),n=n.next,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequestCount=0,e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function E(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),C(t,e)})}function O(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,k(E,t,e)):(e.prefinished=!0,t.emit("prefinish")))}function C(t,e){var n=x(e);return n&&(O(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}function S(t,e,n){e.ending=!0,C(t,e),n&&(e.finished?k(n):t.once("finish",n)),e.ended=!0,t.writable=!1}function A(t,e,n){var r=t.entry;for(t.entry=null;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}var k=n(8);t.exports=f;var N,T=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:k;f.WritableState=c;var j=n(7);j.inherits=n(4);var R={deprecate:n(76)},P=n(19),$=n(9).Buffer,D=i.Uint8Array||function(){},L=n(20);j.inherits(f,P),c.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(c.prototype,"buffer",{get:R.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}();var I;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(I=Function.prototype[Symbol.hasInstance],Object.defineProperty(f,Symbol.hasInstance,{value:function(t){return!!I.call(this,t)||t&&t._writableState instanceof c}})):I=function(t){return t instanceof this},f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},f.prototype.write=function(t,e,n){var r=this._writableState,i=!1,o=s(t)&&!r.objectMode;return o&&!$.isBuffer(t)&&(t=a(t)),"function"==typeof e&&(n=e,e=null),o?e="buffer":e||(e=r.defaultEncoding),"function"!=typeof n&&(n=u),r.ended?l(this,n):(o||p(this,r,t,n))&&(r.pendingcb++,i=d(this,r,o,t,e,n)),i},f.prototype.cork=function(){this._writableState.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},f.prototype._writev=null,f.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||S(this,r,n)},Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),f.prototype.destroy=L.destroy,f.prototype._undestroy=L.undestroy,f.prototype._destroy=function(t,e){this.end(),e(t)}}).call(e,n(2),n(74).setImmediate,n(1))},function(t,e,n){function r(t){if(t&&!u(t))throw new Error("Unknown encoding: "+t)}function i(t){return t.toString(this.encoding)}function o(t){this.charReceived=t.length%2,this.charLength=this.charReceived?2:0}function a(t){this.charReceived=t.length%3,this.charLength=this.charReceived?3:0}var s=n(3).Buffer,u=s.isEncoding||function(t){switch(t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},c=e.StringDecoder=function(t){switch(this.encoding=(t||"utf8").toLowerCase().replace(/[-_]/,""),r(t),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};c.prototype.write=function(t){for(var e="";this.charLength;){var n=t.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived<this.charLength)return"";t=t.slice(n,t.length),e=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var r=e.charCodeAt(e.length-1);if(!(r>=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,r=e.charCodeAt(i);if(r>=55296&&r<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},c.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var n=t[t.length-e];if(1==e&&n>>5==6){this.charLength=2;break}if(e<=2&&n>>4==14){this.charLength=3;break}if(e<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=e},c.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;e+=r.slice(0,n).toString(i)}return e}},function(t,e,n){"use strict";function r(t){this.afterTransform=function(e,n){return i(t,e,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function i(t,e,n){var r=t._transformState;r.transforming=!1;var i=r.writecb;if(!i)return t.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&t.push(n),i(e);var o=t._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&t._read(o.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);s.call(this,t),this._transformState=new r(this);var e=this;this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(t,n){a(e,t,n)}):a(e)})}function a(t,e,n){if(e)return t.emit("error",e);null!==n&&void 0!==n&&t.push(n);var r=t._writableState,i=t._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(i.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}t.exports=o;var s=n(6),u=n(7);u.inherits=n(4),u.inherits(o,s),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,s.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var n=this;s.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function i(t,e,n){if(t&&c.isObject(t)&&t instanceof r)return t;var i=new r;return i.parse(t,e,n),i}function o(t){return c.isString(t)&&(t=i(t)),t instanceof r?t.format():r.prototype.format.call(t)}function a(t,e){return i(t,!1,!0).resolve(e)}function s(t,e){return t?i(t,!1,!0).resolveObject(e):e}var u=n(81),c=n(82);e.parse=i,e.resolve=a,e.resolveObject=s,e.format=o,e.Url=r;var f=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,p=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,h=["<",">",'"',"`"," ","\r","\n","\t"],d=["{","}","|","\\","^","`"].concat(h),v=["'"].concat(d),g=["%","/","?",";","#"].concat(v),m=["/","?","#"],y=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},w={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},E=n(83);r.prototype.parse=function(t,e,n){if(!c.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var r=t.indexOf("?"),i=-1!==r&&r<t.indexOf("#")?"?":"#",o=t.split(i),a=/\\/g;o[0]=o[0].replace(a,"/"),t=o.join(i);var s=t;if(s=s.trim(),!n&&1===t.split("#").length){var l=p.exec(s);if(l)return this.path=s,this.href=s,this.pathname=l[1],l[2]?(this.search=l[2],this.query=e?E.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var h=f.exec(s);if(h){h=h[0];var d=h.toLowerCase();this.protocol=d,s=s.substr(h.length)}if(n||h||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var O="//"===s.substr(0,2);!O||h&&w[h]||(s=s.substr(2),this.slashes=!0)}if(!w[h]&&(O||h&&!x[h])){for(var C=-1,S=0;S<m.length;S++){var A=s.indexOf(m[S]);-1!==A&&(-1===C||A<C)&&(C=A)}var k,N;N=-1===C?s.lastIndexOf("@"):s.lastIndexOf("@",C),-1!==N&&(k=s.slice(0,N),s=s.slice(N+1),this.auth=decodeURIComponent(k)),C=-1;for(var S=0;S<g.length;S++){var A=s.indexOf(g[S]);-1!==A&&(-1===C||A<C)&&(C=A)}-1===C&&(C=s.length),this.host=s.slice(0,C),s=s.slice(C),this.parseHost(),this.hostname=this.hostname||"";var T="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!T)for(var j=this.hostname.split(/\./),S=0,R=j.length;S<R;S++){var P=j[S];if(P&&!P.match(y)){for(var $="",D=0,L=P.length;D<L;D++)P.charCodeAt(D)>127?$+="x":$+=P[D];if(!$.match(y)){var I=j.slice(0,S),M=j.slice(S+1),U=P.match(_);U&&(I.push(U[1]),M.unshift(U[2])),M.length&&(s="/"+M.join(".")+s),this.hostname=I.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=u.toASCII(this.hostname));var B=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+B,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!b[d])for(var S=0,R=v.length;S<R;S++){var F=v[S];if(-1!==s.indexOf(F)){var q=encodeURIComponent(F);q===F&&(q=escape(F)),s=s.split(F).join(q)}}var z=s.indexOf("#");-1!==z&&(this.hash=s.substr(z),s=s.slice(0,z));var H=s.indexOf("?");if(-1!==H?(this.search=s.substr(H),this.query=s.substr(H+1),e&&(this.query=E.parse(this.query)),s=s.slice(0,H)):e&&(this.search="",this.query={}),s&&(this.pathname=s),x[d]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var B=this.pathname||"",J=this.search||"";this.path=B+J}return this.href=this.format(),this},r.prototype.format=function(){var t=this.auth||"";t&&(t=encodeURIComponent(t),t=t.replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(o=E.stringify(this.query));var a=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||x[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}),a=a.replace("#","%23"),e+i+n+a+r},r.prototype.resolve=function(t){return this.resolveObject(i(t,!1,!0)).format()},r.prototype.resolveObject=function(t){if(c.isString(t)){var e=new r;e.parse(t,!1,!0),t=e}for(var n=new r,i=Object.keys(this),o=0;o<i.length;o++){var a=i[o];n[a]=this[a]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var s=Object.keys(t),u=0;u<s.length;u++){var f=s[u];"protocol"!==f&&(n[f]=t[f])}return x[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!x[t.protocol]){for(var l=Object.keys(t),p=0;p<l.length;p++){var h=l[p];n[h]=t[h]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||w[t.protocol])n.pathname=t.pathname;else{for(var d=(t.pathname||"").split("/");d.length&&!(t.host=d.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var v=n.pathname||"",g=n.search||"";n.path=v+g}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),_=y||m||n.host&&t.pathname,b=_,E=n.pathname&&n.pathname.split("/")||[],d=t.pathname&&t.pathname.split("/")||[],O=n.protocol&&!x[n.protocol];if(O&&(n.hostname="",n.port=null,n.host&&(""===E[0]?E[0]=n.host:E.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===d[0]?d[0]=t.host:d.unshift(t.host)),t.host=null),_=_&&(""===d[0]||""===E[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,E=d;else if(d.length)E||(E=[]),E.pop(),E=E.concat(d),n.search=t.search,n.query=t.query;else if(!c.isNullOrUndefined(t.search)){if(O){n.hostname=n.host=E.shift();var C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");C&&(n.auth=C.shift(),n.host=n.hostname=C.shift())}return n.search=t.search,n.query=t.query,c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],A=(n.host||t.host||E.length>1)&&("."===S||".."===S)||""===S,k=0,N=E.length;N>=0;N--)S=E[N],"."===S?E.splice(N,1):".."===S?(E.splice(N,1),k++):k&&(E.splice(N,1),k--);if(!_&&!b)for(;k--;k)E.unshift("..");!_||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),A&&"/"!==E.join("/").substr(-1)&&E.push("");var T=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(O){n.hostname=n.host=T?"":E.length?E.shift():"";var C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");C&&(n.auth=C.shift(),n.host=n.hostname=C.shift())}return _=_||n.host&&E.length,_&&!T&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var t=this.host,e=l.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(26),o=r(i),a=n(27),s=r(a);new o.default({el:"#app",render:function(t){return t(s.default)}})},function(t,e,n){"use strict";(function(e,n){/*! +var G=n(42),Z=n(43),X=n(14);e.Buffer=o,e.SlowBuffer=v,e.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=r(),o.poolSize=8192,o._augment=function(t){return t.__proto__=o.prototype,t},o.from=function(t,e,n){return a(null,t,e,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(t,e,n){return u(null,t,e,n)},o.allocUnsafe=function(t){return c(null,t)},o.allocUnsafeSlow=function(t){return c(null,t)},o.isBuffer=function(t){return!(null==t||!t._isBuffer)},o.compare=function(t,e){if(!o.isBuffer(t)||!o.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},o.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(t,e){if(!X(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return o.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=o.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var a=t[n];if(!o.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i),i+=a.length}return r},o.byteLength=g,o.prototype._isBuffer=!0,o.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)y(this,e,e+1);return this},o.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)y(this,e,e+3),y(this,e+1,e+2);return this},o.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)y(this,e,e+7),y(this,e+1,e+6),y(this,e+2,e+5),y(this,e+3,e+4);return this},o.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?k(this,0,t):m.apply(this,arguments)},o.prototype.equals=function(t){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===o.compare(this,t)},o.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},o.prototype.compare=function(t,e,n,r,i){if(!o.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,r>>>=0,i>>>=0,this===t)return 0;for(var a=i-r,s=n-e,u=Math.min(a,s),c=this.slice(r,i),f=t.slice(e,n),l=0;l<u;++l)if(c[l]!==f[l]){a=c[l],s=f[l];break}return a<s?-1:s<a?1:0},o.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},o.prototype.indexOf=function(t,e,n){return _(this,t,e,n,!0)},o.prototype.lastIndexOf=function(t,e,n){return _(this,t,e,n,!1)},o.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return w(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":return E(this,t,e,n);case"latin1":case"binary":return O(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;o.prototype.slice=function(t,e){var n=this.length;t=~~t,e=void 0===e?n:~~e,t<0?(t+=n)<0&&(t=0):t>n&&(t=n),e<0?(e+=n)<0&&(e=0):e>n&&(e=n),e<t&&(e=t);var r;if(o.TYPED_ARRAY_SUPPORT)r=this.subarray(t,e),r.__proto__=o.prototype;else{var i=e-t;r=new o(i,void 0);for(var a=0;a<i;++a)r[a]=this[a+t]}return r},o.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return r},o.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},o.prototype.readUInt8=function(t,e){return e||$(t,1,this.length),this[t]},o.prototype.readUInt16LE=function(t,e){return e||$(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUInt16BE=function(t,e){return e||$(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUInt32LE=function(t,e){return e||$(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUInt32BE=function(t,e){return e||$(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=this[t],i=1,o=0;++o<e&&(i*=256);)r+=this[t+o]*i;return i*=128,r>=i&&(r-=Math.pow(2,8*e)),r},o.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||$(t,e,this.length);for(var r=e,i=1,o=this[t+--r];r>0&&(i*=256);)o+=this[t+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return e||$(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){e||$(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(t,e){e||$(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(t,e){return e||$(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return e||$(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readFloatLE=function(t,e){return e||$(t,4,this.length),Z.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return e||$(t,4,this.length),Z.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return e||$(t,8,this.length),Z.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return e||$(t,8,this.length),Z.read(this,t,!1,52,8)},o.prototype.writeUIntLE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){D(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=1,o=0;for(this[e]=255&t;++o<n&&(i*=256);)this[e+o]=t/i&255;return e+n},o.prototype.writeUIntBE=function(t,e,n,r){if(t=+t,e|=0,n|=0,!r){D(this,t,e,n,Math.pow(2,8*n)-1,0)}var i=n-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+n},o.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,255,0),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},o.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):I(this,t,e,!0),e+4},o.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},o.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o<n&&(a*=256);)t<0&&0===s&&0!==this[e+o-1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);D(this,t,e,n,i-1,-i)}var o=n-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+n},o.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,127,-128),o.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},o.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},o.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):I(this,t,e,!0),e+4},o.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),o.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):I(this,t,e,!1),e+4},o.prototype.writeFloatLE=function(t,e,n){return U(this,t,e,!0,n)},o.prototype.writeFloatBE=function(t,e,n){return U(this,t,e,!1,n)},o.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},o.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},o.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},o.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!o.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0);var a;if("number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var s=o.isBuffer(t)?t:z(new o(t,r).toString()),u=s.length;for(a=0;a<n-e;++a)this[a+e]=s[a%u]}return this};var tt=/[^+\/0-9A-Za-z-_]/g}).call(e,n(1))},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}},function(t,e,n){"use strict";(function(e,n){var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i={};t.exports=i,i.isPipeObject=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("pipe")&&"object"===r(t.pipe)},i.isPipeJson=function(t){return"object"===(void 0===t?"undefined":r(t))&&t.hasOwnProperty("op")&&t.hasOwnProperty("params")},i.isNodeJs=function(){return"[object process]"===Object.prototype.toString.call(void 0!==e?e:0)},i.arrayBufferToString=function(t){if(this.isNodeJs())return t instanceof n?t.toString("utf-8"):n.from(t).toString("utf-8");if("TextDecoder"in window)return new TextDecoder("utf-8").decode(t);var e,r=new Uint8Array(t),i="",o=r.length;for(e=0;e<o;++e)i+=String.fromCharCode(r[e]);return decodeURIComponent(escape(i))},i.callbackAdapter=function(t,e,n,r,i){"function"==typeof i?i(t,e):t?r(t):n(e)},t.exports.getUtilObject=function(t){return new function(){for(var e in i)i.hasOwnProperty(e)&&(this[e]=i[e]);this.debug=function(e){if(t.getConfig().debug){var e="flexio-sdk-js: "+e;console.log(e)}return this}}}}).call(e,n(2),n(3).Buffer)},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);c.call(this,t),f.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",i)}function i(){this.allowHalfOpen||this._writableState.ended||a(o,this)}function o(t){t.end()}var a=n(8),s=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=r;var u=n(7);u.inherits=n(4);var c=n(17),f=n(21);u.inherits(r,c);for(var l=s(f.prototype),p=0;p<l.length;p++){var h=l[p];r.prototype[h]||(r.prototype[h]=f.prototype[h])}Object.defineProperty(r.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),r.prototype._destroy=function(t,e){this.push(null),this.end(),a(e,t)}},function(t,e,n){(function(t){function n(t){return Array.isArray?Array.isArray(t):"[object Array]"===g(t)}function r(t){return"boolean"==typeof t}function i(t){return null===t}function o(t){return null==t}function a(t){return"number"==typeof t}function s(t){return"string"==typeof t}function u(t){return"symbol"==typeof t}function c(t){return void 0===t}function f(t){return"[object RegExp]"===g(t)}function l(t){return"object"==typeof t&&null!==t}function p(t){return"[object Date]"===g(t)}function h(t){return"[object Error]"===g(t)||t instanceof Error}function d(t){return"function"==typeof t}function v(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t}function g(t){return Object.prototype.toString.call(t)}e.isArray=n,e.isBoolean=r,e.isNull=i,e.isNullOrUndefined=o,e.isNumber=a,e.isString=s,e.isSymbol=u,e.isUndefined=c,e.isRegExp=f,e.isObject=l,e.isDate=p,e.isError=h,e.isFunction=d,e.isPrimitive=v,e.isBuffer=t.isBuffer}).call(e,n(3).Buffer)},function(t,e,n){"use strict";(function(e){function n(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var o,a,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(o=new Array(s-1),a=0;a<o.length;)o[a++]=arguments[a];return e.nextTick(function(){t.apply(null,o)})}}!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports=n:t.exports=e.nextTick}).call(e,n(2))},function(t,e,n){function r(t,e){for(var n in t)e[n]=t[n]}function i(t,e,n){return a(t,e,n)}var o=n(3),a=o.Buffer;a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?t.exports=o:(r(o,e),e.Buffer=i),r(a,i),i.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return a(t,e,n)},i.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=a(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},i.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return a(t)},i.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return o.SlowBuffer(t)}},function(t,e){t.exports=function(t,e,n,r,i){var o,a=t=t||{},s=typeof t.default;"object"!==s&&"function"!==s||(o=t,a=t.default);var u="function"==typeof a?a.options:a;e&&(u.render=e.render,u.staticRenderFns=e.staticRenderFns),r&&(u._scopeId=r);var c;if(i?(c=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(i)},u._ssrRegister=c):n&&(c=n),c){var f=u.functional,l=f?u.render:u.beforeCreate;f?u.render=function(t,e){return c.call(e),l(t,e)}:u.beforeCreate=l?[].concat(l,c):[c]}return{esModule:o,exports:a,options:u}}},function(t,e,n){(function(t,r){var i;(function(){function o(t,e){return t.set(e[0],e[1]),t}function a(t,e){return t.add(e),t}function s(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function u(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var a=t[i];e(r,a,n(a),t)}return r}function c(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function f(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function l(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function p(t,e){for(var n=-1,r=null==t?0:t.length,i=0,o=[];++n<r;){var a=t[n];e(a,n,t)&&(o[i++]=a)}return o}function h(t,e){return!!(null==t?0:t.length)&&O(t,e,0)>-1}function d(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function v(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function g(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function m(t,e,n,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(n=t[++i]);++i<o;)n=e(n,t[i],i,t);return n}function y(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function _(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}function b(t){return t.split("")}function w(t){return t.match(Be)||[]}function x(t,e,n){var r;return n(t,function(t,n,i){if(e(t,n,i))return r=n,!1}),r}function E(t,e,n,r){for(var i=t.length,o=n+(r?1:-1);r?o--:++o<i;)if(e(t[o],o,t))return o;return-1}function O(t,e,n){return e===e?Z(t,e,n):E(t,S,n)}function C(t,e,n,r){for(var i=n-1,o=t.length;++i<o;)if(r(t[i],e))return i;return-1}function S(t){return t!==t}function A(t,e){var n=null==t?0:t.length;return n?R(t,e)/n:Dt}function k(t){return function(e){return null==e?it:e[t]}}function N(t){return function(e){return null==t?it:t[e]}}function T(t,e,n,r,i){return i(t,function(t,i,o){n=r?(r=!1,t):e(n,t,i,o)}),n}function j(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}function R(t,e){for(var n,r=-1,i=t.length;++r<i;){var o=e(t[r]);o!==it&&(n=n===it?o:n+o)}return n}function P(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function $(t,e){return v(e,function(e){return[e,t[e]]})}function D(t){return function(e){return t(e)}}function L(t,e){return v(e,function(e){return t[e]})}function I(t,e){return t.has(e)}function M(t,e){for(var n=-1,r=t.length;++n<r&&O(e,t[n],0)>-1;);return n}function U(t,e){for(var n=t.length;n--&&O(e,t[n],0)>-1;);return n}function B(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}function V(t){return"\\"+kn[t]}function F(t,e){return null==t?it:t[e]}function q(t){return _n.test(t)}function z(t){return bn.test(t)}function H(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}function J(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function W(t,e){return function(n){return t(e(n))}}function Y(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n];a!==e&&a!==ft||(t[n]=ft,o[i++]=n)}return o}function K(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}function G(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=[t,t]}),n}function Z(t,e,n){for(var r=n-1,i=t.length;++r<i;)if(t[r]===e)return r;return-1}function X(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}function Q(t){return q(t)?et(t):Hn(t)}function tt(t){return q(t)?nt(t):b(t)}function et(t){for(var e=mn.lastIndex=0;mn.test(t);)++e;return e}function nt(t){return t.match(mn)||[]}function rt(t){return t.match(yn)||[]}var it,ot=200,at="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",st="Expected a function",ut="__lodash_hash_undefined__",ct=500,ft="__lodash_placeholder__",lt=1,pt=2,ht=4,dt=1,vt=2,gt=1,mt=2,yt=4,_t=8,bt=16,wt=32,xt=64,Et=128,Ot=256,Ct=512,St=30,At="...",kt=800,Nt=16,Tt=1,jt=2,Rt=1/0,Pt=9007199254740991,$t=1.7976931348623157e308,Dt=NaN,Lt=4294967295,It=Lt-1,Mt=Lt>>>1,Ut=[["ary",Et],["bind",gt],["bindKey",mt],["curry",_t],["curryRight",bt],["flip",Ct],["partial",wt],["partialRight",xt],["rearg",Ot]],Bt="[object Arguments]",Vt="[object Array]",Ft="[object AsyncFunction]",qt="[object Boolean]",zt="[object Date]",Ht="[object DOMException]",Jt="[object Error]",Wt="[object Function]",Yt="[object GeneratorFunction]",Kt="[object Map]",Gt="[object Number]",Zt="[object Null]",Xt="[object Object]",Qt="[object Proxy]",te="[object RegExp]",ee="[object Set]",ne="[object String]",re="[object Symbol]",ie="[object Undefined]",oe="[object WeakMap]",ae="[object WeakSet]",se="[object ArrayBuffer]",ue="[object DataView]",ce="[object Float32Array]",fe="[object Float64Array]",le="[object Int8Array]",pe="[object Int16Array]",he="[object Int32Array]",de="[object Uint8Array]",ve="[object Uint8ClampedArray]",ge="[object Uint16Array]",me="[object Uint32Array]",ye=/\b__p \+= '';/g,_e=/\b(__p \+=) '' \+/g,be=/(__e\(.*?\)|\b__t\)) \+\n'';/g,we=/&(?:amp|lt|gt|quot|#39);/g,xe=/[&<>"']/g,Ee=RegExp(we.source),Oe=RegExp(xe.source),Ce=/<%-([\s\S]+?)%>/g,Se=/<%([\s\S]+?)%>/g,Ae=/<%=([\s\S]+?)%>/g,ke=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ne=/^\w*$/,Te=/^\./,je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Re=/[\\^$.*+?()[\]{}|]/g,Pe=RegExp(Re.source),$e=/^\s+|\s+$/g,De=/^\s+/,Le=/\s+$/,Ie=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Me=/\{\n\/\* \[wrapped with (.+)\] \*/,Ue=/,? & /,Be=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ve=/\\(\\)?/g,Fe=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,qe=/\w*$/,ze=/^[-+]0x[0-9a-f]+$/i,He=/^0b[01]+$/i,Je=/^\[object .+?Constructor\]$/,We=/^0o[0-7]+$/i,Ye=/^(?:0|[1-9]\d*)$/,Ke=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ge=/($^)/,Ze=/['\n\r\u2028\u2029\\]/g,Xe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tn="["+Qe+"]",en="["+Xe+"]",nn="[a-z\\xdf-\\xf6\\xf8-\\xff]",rn="[^\\ud800-\\udfff"+Qe+"\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",on="\\ud83c[\\udffb-\\udfff]",an="(?:\\ud83c[\\udde6-\\uddff]){2}",sn="[\\ud800-\\udbff][\\udc00-\\udfff]",un="[A-Z\\xc0-\\xd6\\xd8-\\xde]",cn="(?:"+nn+"|"+rn+")",fn="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",ln="(?:\\u200d(?:"+["[^\\ud800-\\udfff]",an,sn].join("|")+")[\\ufe0e\\ufe0f]?"+fn+")*",pn="[\\ufe0e\\ufe0f]?"+fn+ln,hn="(?:"+["[\\u2700-\\u27bf]",an,sn].join("|")+")"+pn,dn="(?:"+["[^\\ud800-\\udfff]"+en+"?",en,an,sn,"[\\ud800-\\udfff]"].join("|")+")",vn=RegExp("['’]","g"),gn=RegExp(en,"g"),mn=RegExp(on+"(?="+on+")|"+dn+pn,"g"),yn=RegExp([un+"?"+nn+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[tn,un,"$"].join("|")+")","(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[tn,un+cn,"$"].join("|")+")",un+"?"+cn+"+(?:['’](?:d|ll|m|re|s|t|ve))?",un+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)","\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)","\\d+",hn].join("|"),"g"),_n=RegExp("[\\u200d\\ud800-\\udfff"+Xe+"\\ufe0e\\ufe0f]"),bn=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,wn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],xn=-1,En={};En[ce]=En[fe]=En[le]=En[pe]=En[he]=En[de]=En[ve]=En[ge]=En[me]=!0,En[Bt]=En[Vt]=En[se]=En[qt]=En[ue]=En[zt]=En[Jt]=En[Wt]=En[Kt]=En[Gt]=En[Xt]=En[te]=En[ee]=En[ne]=En[oe]=!1;var On={};On[Bt]=On[Vt]=On[se]=On[ue]=On[qt]=On[zt]=On[ce]=On[fe]=On[le]=On[pe]=On[he]=On[Kt]=On[Gt]=On[Xt]=On[te]=On[ee]=On[ne]=On[re]=On[de]=On[ve]=On[ge]=On[me]=!0,On[Jt]=On[Wt]=On[oe]=!1;var Cn={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},Sn={"&":"&","<":"<",">":">",'"':""","'":"'"},An={"&":"&","<":"<",">":">",""":'"',"'":"'"},kn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Nn=parseFloat,Tn=parseInt,jn="object"==typeof t&&t&&t.Object===Object&&t,Rn="object"==typeof self&&self&&self.Object===Object&&self,Pn=jn||Rn||Function("return this")(),$n="object"==typeof e&&e&&!e.nodeType&&e,Dn=$n&&"object"==typeof r&&r&&!r.nodeType&&r,Ln=Dn&&Dn.exports===$n,In=Ln&&jn.process,Mn=function(){try{return In&&In.binding&&In.binding("util")}catch(t){}}(),Un=Mn&&Mn.isArrayBuffer,Bn=Mn&&Mn.isDate,Vn=Mn&&Mn.isMap,Fn=Mn&&Mn.isRegExp,qn=Mn&&Mn.isSet,zn=Mn&&Mn.isTypedArray,Hn=k("length"),Jn=N(Cn),Wn=N(Sn),Yn=N(An),Kn=function t(e){function n(t){if(ou(t)&&!mp(t)&&!(t instanceof b)){if(t instanceof i)return t;if(mf.call(t,"__wrapped__"))return na(t)}return new i(t)}function r(){}function i(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=it}function b(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Lt,this.__views__=[]}function N(){var t=new b(this.__wrapped__);return t.__actions__=Ii(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Ii(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Ii(this.__views__),t}function Z(){if(this.__filtered__){var t=new b(this);t.__dir__=-1,t.__filtered__=!0}else t=this.clone(),t.__dir__*=-1;return t}function et(){var t=this.__wrapped__.value(),e=this.__dir__,n=mp(t),r=e<0,i=n?t.length:0,o=Ao(0,i,this.__views__),a=o.start,s=o.end,u=s-a,c=r?s:a-1,f=this.__iteratees__,l=f.length,p=0,h=Wf(u,this.__takeCount__);if(!n||!r&&i==u&&h==u)return yi(t,this.__actions__);var d=[];t:for(;u--&&p<h;){c+=e;for(var v=-1,g=t[c];++v<l;){var m=f[v],y=m.iteratee,_=m.type,b=y(g);if(_==jt)g=b;else if(!b){if(_==Tt)continue t;break t}}d[p++]=g}return d}function nt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function Be(){this.__data__=rl?rl(null):{},this.size=0}function Xe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function Qe(t){var e=this.__data__;if(rl){var n=e[t];return n===ut?it:n}return mf.call(e,t)?e[t]:it}function tn(t){var e=this.__data__;return rl?e[t]!==it:mf.call(e,t)}function en(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=rl&&e===it?ut:e,this}function nn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function rn(){this.__data__=[],this.size=0}function on(t){var e=this.__data__,n=Gn(e,t);return!(n<0)&&(n==e.length-1?e.pop():jf.call(e,n,1),--this.size,!0)}function an(t){var e=this.__data__,n=Gn(e,t);return n<0?it:e[n][1]}function sn(t){return Gn(this.__data__,t)>-1}function un(t,e){var n=this.__data__,r=Gn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function cn(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function fn(){this.size=0,this.__data__={hash:new nt,map:new(Qf||nn),string:new nt}}function ln(t){var e=Eo(this,t).delete(t);return this.size-=e?1:0,e}function pn(t){return Eo(this,t).get(t)}function hn(t){return Eo(this,t).has(t)}function dn(t,e){var n=Eo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}function mn(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new cn;++e<n;)this.add(t[e])}function yn(t){return this.__data__.set(t,ut),this}function _n(t){return this.__data__.has(t)}function bn(t){var e=this.__data__=new nn(t);this.size=e.size}function Cn(){this.__data__=new nn,this.size=0}function Sn(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}function An(t){return this.__data__.get(t)}function kn(t){return this.__data__.has(t)}function jn(t,e){var n=this.__data__;if(n instanceof nn){var r=n.__data__;if(!Qf||r.length<ot-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new cn(r)}return n.set(t,e),this.size=n.size,this}function Rn(t,e){var n=mp(t),r=!n&&gp(t),i=!n&&!r&&_p(t),o=!n&&!r&&!i&&Op(t),a=n||r||i||o,s=a?P(t.length,ff):[],u=s.length;for(var c in t)!e&&!mf.call(t,c)||a&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Do(c,u))||s.push(c);return s}function $n(t){var e=t.length;return e?t[Qr(0,e-1)]:it}function Dn(t,e){return Xo(Ii(t),nr(e,0,t.length))}function In(t){return Xo(Ii(t))}function Mn(t,e,n){(n===it||Hs(t[e],n))&&(n!==it||e in t)||tr(t,e,n)}function Hn(t,e,n){var r=t[e];mf.call(t,e)&&Hs(r,n)&&(n!==it||e in t)||tr(t,e,n)}function Gn(t,e){for(var n=t.length;n--;)if(Hs(t[n][0],e))return n;return-1}function Zn(t,e,n,r){return vl(t,function(t,i,o){e(r,t,n(t),o)}),r}function Xn(t,e){return t&&Mi(e,Bu(e),t)}function Qn(t,e){return t&&Mi(e,Vu(e),t)}function tr(t,e,n){"__proto__"==e&&Df?Df(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function er(t,e){for(var n=-1,r=e.length,i=nf(r),o=null==t;++n<r;)i[n]=o?it:Iu(t,e[n]);return i}function nr(t,e,n){return t===t&&(n!==it&&(t=t<=n?t:n),e!==it&&(t=t>=e?t:e)),t}function rr(t,e,n,r,i,o){var a,s=e<,u=e&pt,f=e&ht;if(n&&(a=i?n(t,r,i,o):n(t)),a!==it)return a;if(!iu(t))return t;var l=mp(t);if(l){if(a=To(t),!s)return Ii(t,a)}else{var p=Al(t),h=p==Wt||p==Yt;if(_p(t))return Ci(t,s);if(p==Xt||p==Bt||h&&!i){if(a=u||h?{}:jo(t),!s)return u?Bi(t,Qn(a,t)):Ui(t,Xn(a,t))}else{if(!On[p])return i?t:{};a=Ro(t,p,rr,s)}}o||(o=new bn);var d=o.get(t);if(d)return d;o.set(t,a);var v=f?u?_o:yo:u?Vu:Bu,g=l?it:v(t);return c(g||t,function(r,i){g&&(i=r,r=t[i]),Hn(a,i,rr(r,e,n,i,t,o))}),a}function ir(t){var e=Bu(t);return function(n){return or(n,t,e)}}function or(t,e,n){var r=n.length;if(null==t)return!r;for(t=uf(t);r--;){var i=n[r],o=e[i],a=t[i];if(a===it&&!(i in t)||!o(a))return!1}return!0}function ar(t,e,n){if("function"!=typeof t)throw new lf(st);return Tl(function(){t.apply(it,n)},e)}function sr(t,e,n,r){var i=-1,o=h,a=!0,s=t.length,u=[],c=e.length;if(!s)return u;n&&(e=v(e,D(n))),r?(o=d,a=!1):e.length>=ot&&(o=I,a=!1,e=new mn(e));t:for(;++i<s;){var f=t[i],l=null==n?f:n(f);if(f=r||0!==f?f:0,a&&l===l){for(var p=c;p--;)if(e[p]===l)continue t;u.push(f)}else o(e,l,r)||u.push(f)}return u}function ur(t,e){var n=!0;return vl(t,function(t,r,i){return n=!!e(t,r,i)}),n}function cr(t,e,n){for(var r=-1,i=t.length;++r<i;){var o=t[r],a=e(o);if(null!=a&&(s===it?a===a&&!gu(a):n(a,s)))var s=a,u=o}return u}function fr(t,e,n,r){var i=t.length;for(n=xu(n),n<0&&(n=-n>i?0:i+n),r=r===it||r>i?i:xu(r),r<0&&(r+=i),r=n>r?0:Eu(r);n<r;)t[n++]=e;return t}function lr(t,e){var n=[];return vl(t,function(t,r,i){e(t,r,i)&&n.push(t)}),n}function pr(t,e,n,r,i){var o=-1,a=t.length;for(n||(n=$o),i||(i=[]);++o<a;){var s=t[o];e>0&&n(s)?e>1?pr(s,e-1,n,r,i):g(i,s):r||(i[i.length]=s)}return i}function hr(t,e){return t&&ml(t,e,Bu)}function dr(t,e){return t&&yl(t,e,Bu)}function vr(t,e){return p(e,function(e){return eu(t[e])})}function gr(t,e){e=Ei(e,t);for(var n=0,r=e.length;null!=t&&n<r;)t=t[Qo(e[n++])];return n&&n==r?t:it}function mr(t,e,n){var r=e(t);return mp(t)?r:g(r,n(t))}function yr(t){return null==t?t===it?ie:Zt:$f&&$f in uf(t)?So(t):Jo(t)}function _r(t,e){return t>e}function br(t,e){return null!=t&&mf.call(t,e)}function wr(t,e){return null!=t&&e in uf(t)}function xr(t,e,n){return t>=Wf(e,n)&&t<Jf(e,n)}function Er(t,e,n){for(var r=n?d:h,i=t[0].length,o=t.length,a=o,s=nf(o),u=1/0,c=[];a--;){var f=t[a];a&&e&&(f=v(f,D(e))),u=Wf(f.length,u),s[a]=!n&&(e||i>=120&&f.length>=120)?new mn(a&&f):it}f=t[0];var l=-1,p=s[0];t:for(;++l<i&&c.length<u;){var g=f[l],m=e?e(g):g;if(g=n||0!==g?g:0,!(p?I(p,m):r(c,m,n))){for(a=o;--a;){var y=s[a];if(!(y?I(y,m):r(t[a],m,n)))continue t}p&&p.push(m),c.push(g)}}return c}function Or(t,e,n,r){return hr(t,function(t,i,o){e(r,n(t),i,o)}),r}function Cr(t,e,n){e=Ei(e,t),t=Yo(t,e);var r=null==t?t:t[Qo(wa(e))];return null==r?it:s(r,t,n)}function Sr(t){return ou(t)&&yr(t)==Bt}function Ar(t){return ou(t)&&yr(t)==se}function kr(t){return ou(t)&&yr(t)==zt}function Nr(t,e,n,r,i){return t===e||(null==t||null==e||!ou(t)&&!ou(e)?t!==t&&e!==e:Tr(t,e,n,r,Nr,i))}function Tr(t,e,n,r,i,o){var a=mp(t),s=mp(e),u=a?Vt:Al(t),c=s?Vt:Al(e);u=u==Bt?Xt:u,c=c==Bt?Xt:c;var f=u==Xt,l=c==Xt,p=u==c;if(p&&_p(t)){if(!_p(e))return!1;a=!0,f=!1}if(p&&!f)return o||(o=new bn),a||Op(t)?ho(t,e,n,r,i,o):vo(t,e,u,n,r,i,o);if(!(n&dt)){var h=f&&mf.call(t,"__wrapped__"),d=l&&mf.call(e,"__wrapped__");if(h||d){var v=h?t.value():t,g=d?e.value():e;return o||(o=new bn),i(v,g,n,r,o)}}return!!p&&(o||(o=new bn),go(t,e,n,r,i,o))}function jr(t){return ou(t)&&Al(t)==Kt}function Rr(t,e,n,r){var i=n.length,o=i,a=!r;if(null==t)return!o;for(t=uf(t);i--;){var s=n[i];if(a&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i<o;){s=n[i];var u=s[0],c=t[u],f=s[1];if(a&&s[2]){if(c===it&&!(u in t))return!1}else{var l=new bn;if(r)var p=r(c,f,u,t,e,l);if(!(p===it?Nr(f,c,dt|vt,r,l):p))return!1}}return!0}function Pr(t){return!(!iu(t)||Bo(t))&&(eu(t)?Ef:Je).test(ta(t))}function $r(t){return ou(t)&&yr(t)==te}function Dr(t){return ou(t)&&Al(t)==ee}function Lr(t){return ou(t)&&ru(t.length)&&!!En[yr(t)]}function Ir(t){return"function"==typeof t?t:null==t?Tc:"object"==typeof t?mp(t)?qr(t[0],t[1]):Fr(t):Mc(t)}function Mr(t){if(!Vo(t))return Hf(t);var e=[];for(var n in uf(t))mf.call(t,n)&&"constructor"!=n&&e.push(n);return e}function Ur(t){if(!iu(t))return Ho(t);var e=Vo(t),n=[];for(var r in t)("constructor"!=r||!e&&mf.call(t,r))&&n.push(r);return n}function Br(t,e){return t<e}function Vr(t,e){var n=-1,r=Js(t)?nf(t.length):[];return vl(t,function(t,i,o){r[++n]=e(t,i,o)}),r}function Fr(t){var e=Oo(t);return 1==e.length&&e[0][2]?qo(e[0][0],e[0][1]):function(n){return n===t||Rr(n,t,e)}}function qr(t,e){return Io(t)&&Fo(e)?qo(Qo(t),e):function(n){var r=Iu(n,t);return r===it&&r===e?Uu(n,t):Nr(e,r,dt|vt)}}function zr(t,e,n,r,i){t!==e&&ml(e,function(o,a){if(iu(o))i||(i=new bn),Hr(t,e,a,n,zr,r,i);else{var s=r?r(t[a],o,a+"",t,e,i):it;s===it&&(s=o),Mn(t,a,s)}},Vu)}function Hr(t,e,n,r,i,o,a){var s=t[n],u=e[n],c=a.get(u);if(c)return void Mn(t,n,c);var f=o?o(s,u,n+"",t,e,a):it,l=f===it;if(l){var p=mp(u),h=!p&&_p(u),d=!p&&!h&&Op(u);f=u,p||h||d?mp(s)?f=s:Ws(s)?f=Ii(s):h?(l=!1,f=Ci(u,!0)):d?(l=!1,f=Ri(u,!0)):f=[]:hu(u)||gp(u)?(f=s,gp(s)?f=Cu(s):(!iu(s)||r&&eu(s))&&(f=jo(u))):l=!1}l&&(a.set(u,f),i(f,u,r,o,a),a.delete(u)),Mn(t,n,f)}function Jr(t,e){var n=t.length;if(n)return e+=e<0?n:0,Do(e,n)?t[e]:it}function Wr(t,e,n){var r=-1;return e=v(e.length?e:[Tc],D(xo())),j(Vr(t,function(t,n,i){return{criteria:v(e,function(e){return e(t)}),index:++r,value:t}}),function(t,e){return $i(t,e,n)})}function Yr(t,e){return Kr(t,e,function(e,n){return Uu(t,n)})}function Kr(t,e,n){for(var r=-1,i=e.length,o={};++r<i;){var a=e[r],s=gr(t,a);n(s,a)&&oi(o,Ei(a,t),s)}return o}function Gr(t){return function(e){return gr(e,t)}}function Zr(t,e,n,r){var i=r?C:O,o=-1,a=e.length,s=t;for(t===e&&(e=Ii(e)),n&&(s=v(t,D(n)));++o<a;)for(var u=0,c=e[o],f=n?n(c):c;(u=i(s,f,u,r))>-1;)s!==t&&jf.call(s,u,1),jf.call(t,u,1);return t}function Xr(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Do(i)?jf.call(t,i,1):vi(t,i)}}return t}function Qr(t,e){return t+Bf(Gf()*(e-t+1))}function ti(t,e,n,r){for(var i=-1,o=Jf(Uf((e-t)/(n||1)),0),a=nf(o);o--;)a[r?o:++i]=t,t+=n;return a}function ei(t,e){var n="";if(!t||e<1||e>Pt)return n;do{e%2&&(n+=t),(e=Bf(e/2))&&(t+=t)}while(e);return n}function ni(t,e){return jl(Wo(t,e,Tc),t+"")}function ri(t){return $n(Qu(t))}function ii(t,e){var n=Qu(t);return Xo(n,nr(e,0,n.length))}function oi(t,e,n,r){if(!iu(t))return t;e=Ei(e,t);for(var i=-1,o=e.length,a=o-1,s=t;null!=s&&++i<o;){var u=Qo(e[i]),c=n;if(i!=a){var f=s[u];c=r?r(f,u,s):it,c===it&&(c=iu(f)?f:Do(e[i+1])?[]:{})}Hn(s,u,c),s=s[u]}return t}function ai(t){return Xo(Qu(t))}function si(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=nf(i);++r<i;)o[r]=t[r+e];return o}function ui(t,e){var n;return vl(t,function(t,r,i){return!(n=e(t,r,i))}),!!n}function ci(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e===e&&i<=Mt){for(;r<i;){var o=r+i>>>1,a=t[o];null!==a&&!gu(a)&&(n?a<=e:a<e)?r=o+1:i=o}return i}return fi(t,e,Tc,n)}function fi(t,e,n,r){e=n(e);for(var i=0,o=null==t?0:t.length,a=e!==e,s=null===e,u=gu(e),c=e===it;i<o;){var f=Bf((i+o)/2),l=n(t[f]),p=l!==it,h=null===l,d=l===l,v=gu(l);if(a)var g=r||d;else g=c?d&&(r||p):s?d&&p&&(r||!h):u?d&&p&&!h&&(r||!v):!h&&!v&&(r?l<=e:l<e);g?i=f+1:o=f}return Wf(o,It)}function li(t,e){for(var n=-1,r=t.length,i=0,o=[];++n<r;){var a=t[n],s=e?e(a):a;if(!n||!Hs(s,u)){var u=s;o[i++]=0===a?0:a}}return o}function pi(t){return"number"==typeof t?t:gu(t)?Dt:+t}function hi(t){if("string"==typeof t)return t;if(mp(t))return v(t,hi)+"";if(gu(t))return hl?hl.call(t):"";var e=t+"";return"0"==e&&1/t==-Rt?"-0":e}function di(t,e,n){var r=-1,i=h,o=t.length,a=!0,s=[],u=s;if(n)a=!1,i=d;else if(o>=ot){var c=e?null:El(t);if(c)return K(c);a=!1,i=I,u=new mn}else u=e?[]:s;t:for(;++r<o;){var f=t[r],l=e?e(f):f;if(f=n||0!==f?f:0,a&&l===l){for(var p=u.length;p--;)if(u[p]===l)continue t;e&&u.push(l),s.push(f)}else i(u,l,n)||(u!==s&&u.push(l),s.push(f))}return s}function vi(t,e){return e=Ei(e,t),null==(t=Yo(t,e))||delete t[Qo(wa(e))]}function gi(t,e,n,r){return oi(t,e,n(gr(t,e)),r)}function mi(t,e,n,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&e(t[o],o,t););return n?si(t,r?0:o,r?o+1:i):si(t,r?o+1:0,r?i:o)}function yi(t,e){var n=t;return n instanceof b&&(n=n.value()),m(e,function(t,e){return e.func.apply(e.thisArg,g([t],e.args))},n)}function _i(t,e,n){var r=t.length;if(r<2)return r?di(t[0]):[];for(var i=-1,o=nf(r);++i<r;)for(var a=t[i],s=-1;++s<r;)s!=i&&(o[i]=sr(o[i]||a,t[s],e,n));return di(pr(o,1),e,n)}function bi(t,e,n){for(var r=-1,i=t.length,o=e.length,a={};++r<i;){var s=r<o?e[r]:it;n(a,t[r],s)}return a}function wi(t){return Ws(t)?t:[]}function xi(t){return"function"==typeof t?t:Tc}function Ei(t,e){return mp(t)?t:Io(t,e)?[t]:Rl(Au(t))}function Oi(t,e,n){var r=t.length;return n=n===it?r:n,!e&&n>=r?t:si(t,e,n)}function Ci(t,e){if(e)return t.slice();var n=t.length,r=Af?Af(n):new t.constructor(n);return t.copy(r),r}function Si(t){var e=new t.constructor(t.byteLength);return new Sf(e).set(new Sf(t)),e}function Ai(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}function ki(t,e,n){return m(e?n(J(t),lt):J(t),o,new t.constructor)}function Ni(t){var e=new t.constructor(t.source,qe.exec(t));return e.lastIndex=t.lastIndex,e}function Ti(t,e,n){return m(e?n(K(t),lt):K(t),a,new t.constructor)}function ji(t){return pl?uf(pl.call(t)):{}}function Ri(t,e){var n=e?Si(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Pi(t,e){if(t!==e){var n=t!==it,r=null===t,i=t===t,o=gu(t),a=e!==it,s=null===e,u=e===e,c=gu(e);if(!s&&!c&&!o&&t>e||o&&a&&u&&!s&&!c||r&&a&&u||!n&&u||!i)return 1;if(!r&&!o&&!c&&t<e||c&&n&&i&&!r&&!o||s&&n&&i||!a&&i||!u)return-1}return 0}function $i(t,e,n){for(var r=-1,i=t.criteria,o=e.criteria,a=i.length,s=n.length;++r<a;){var u=Pi(i[r],o[r]);if(u){if(r>=s)return u;return u*("desc"==n[r]?-1:1)}}return t.index-e.index}function Di(t,e,n,r){for(var i=-1,o=t.length,a=n.length,s=-1,u=e.length,c=Jf(o-a,0),f=nf(u+c),l=!r;++s<u;)f[s]=e[s];for(;++i<a;)(l||i<o)&&(f[n[i]]=t[i]);for(;c--;)f[s++]=t[i++];return f}function Li(t,e,n,r){for(var i=-1,o=t.length,a=-1,s=n.length,u=-1,c=e.length,f=Jf(o-s,0),l=nf(f+c),p=!r;++i<f;)l[i]=t[i];for(var h=i;++u<c;)l[h+u]=e[u];for(;++a<s;)(p||i<o)&&(l[h+n[a]]=t[i++]);return l}function Ii(t,e){var n=-1,r=t.length;for(e||(e=nf(r));++n<r;)e[n]=t[n];return e}function Mi(t,e,n,r){var i=!n;n||(n={});for(var o=-1,a=e.length;++o<a;){var s=e[o],u=r?r(n[s],t[s],s,n,t):it;u===it&&(u=t[s]),i?tr(n,s,u):Hn(n,s,u)}return n}function Ui(t,e){return Mi(t,Cl(t),e)}function Bi(t,e){return Mi(t,Sl(t),e)}function Vi(t,e){return function(n,r){var i=mp(n)?u:Zn,o=e?e():{};return i(n,t,xo(r,2),o)}}function Fi(t){return ni(function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:it,a=i>2?n[2]:it;for(o=t.length>3&&"function"==typeof o?(i--,o):it,a&&Lo(n[0],n[1],a)&&(o=i<3?it:o,i=1),e=uf(e);++r<i;){var s=n[r];s&&t(e,s,r,o)}return e})}function qi(t,e){return function(n,r){if(null==n)return n;if(!Js(n))return t(n,r);for(var i=n.length,o=e?i:-1,a=uf(n);(e?o--:++o<i)&&!1!==r(a[o],o,a););return n}}function zi(t){return function(e,n,r){for(var i=-1,o=uf(e),a=r(e),s=a.length;s--;){var u=a[t?s:++i];if(!1===n(o[u],u,o))break}return e}}function Hi(t,e,n){function r(){return(this&&this!==Pn&&this instanceof r?o:t).apply(i?n:this,arguments)}var i=e>,o=Yi(t);return r}function Ji(t){return function(e){e=Au(e);var n=q(e)?tt(e):it,r=n?n[0]:e.charAt(0),i=n?Oi(n,1).join(""):e.slice(1);return r[t]()+i}}function Wi(t){return function(e){return m(Cc(oc(e).replace(vn,"")),t,"")}}function Yi(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=dl(t.prototype),r=t.apply(n,e);return iu(r)?r:n}}function Ki(t,e,n){function r(){for(var o=arguments.length,a=nf(o),u=o,c=wo(r);u--;)a[u]=arguments[u];var f=o<3&&a[0]!==c&&a[o-1]!==c?[]:Y(a,c);return(o-=f.length)<n?ao(t,e,Xi,r.placeholder,it,a,f,it,it,n-o):s(this&&this!==Pn&&this instanceof r?i:t,this,a)}var i=Yi(t);return r}function Gi(t){return function(e,n,r){var i=uf(e);if(!Js(e)){var o=xo(n,3);e=Bu(e),n=function(t){return o(i[t],t,i)}}var a=t(e,n,r);return a>-1?i[o?e[a]:a]:it}}function Zi(t){return mo(function(e){var n=e.length,r=n,o=i.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new lf(st);if(o&&!s&&"wrapper"==bo(a))var s=new i([],!0)}for(r=s?r:n;++r<n;){a=e[r];var u=bo(a),c="wrapper"==u?Ol(a):it;s=c&&Uo(c[0])&&c[1]==(Et|_t|wt|Ot)&&!c[4].length&&1==c[9]?s[bo(c[0])].apply(s,c[3]):1==a.length&&Uo(a)?s[u]():s.thru(a)}return function(){var t=arguments,r=t[0];if(s&&1==t.length&&mp(r))return s.plant(r).value();for(var i=0,o=n?e[i].apply(this,t):r;++i<n;)o=e[i].call(this,o);return o}})}function Xi(t,e,n,r,i,o,a,s,u,c){function f(){for(var m=arguments.length,y=nf(m),_=m;_--;)y[_]=arguments[_];if(d)var b=wo(f),w=B(y,b);if(r&&(y=Di(y,r,i,d)),o&&(y=Li(y,o,a,d)),m-=w,d&&m<c){var x=Y(y,b);return ao(t,e,Xi,f.placeholder,n,y,x,s,u,c-m)}var E=p?n:this,O=h?E[t]:t;return m=y.length,s?y=Ko(y,s):v&&m>1&&y.reverse(),l&&u<m&&(y.length=u),this&&this!==Pn&&this instanceof f&&(O=g||Yi(O)),O.apply(E,y)}var l=e&Et,p=e>,h=e&mt,d=e&(_t|bt),v=e&Ct,g=h?it:Yi(t);return f}function Qi(t,e){return function(n,r){return Or(n,t,e(r),{})}}function to(t,e){return function(n,r){var i;if(n===it&&r===it)return e;if(n!==it&&(i=n),r!==it){if(i===it)return r;"string"==typeof n||"string"==typeof r?(n=hi(n),r=hi(r)):(n=pi(n),r=pi(r)),i=t(n,r)}return i}}function eo(t){return mo(function(e){return e=v(e,D(xo())),ni(function(n){var r=this;return t(e,function(t){return s(t,r,n)})})})}function no(t,e){e=e===it?" ":hi(e);var n=e.length;if(n<2)return n?ei(e,t):e;var r=ei(e,Uf(t/Q(e)));return q(e)?Oi(tt(r),0,t).join(""):r.slice(0,t)}function ro(t,e,n,r){function i(){for(var e=-1,u=arguments.length,c=-1,f=r.length,l=nf(f+u),p=this&&this!==Pn&&this instanceof i?a:t;++c<f;)l[c]=r[c];for(;u--;)l[c++]=arguments[++e];return s(p,o?n:this,l)}var o=e>,a=Yi(t);return i}function io(t){return function(e,n,r){return r&&"number"!=typeof r&&Lo(e,n,r)&&(n=r=it),e=wu(e),n===it?(n=e,e=0):n=wu(n),r=r===it?e<n?1:-1:wu(r),ti(e,n,r,t)}}function oo(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Ou(e),n=Ou(n)),t(e,n)}}function ao(t,e,n,r,i,o,a,s,u,c){var f=e&_t,l=f?a:it,p=f?it:a,h=f?o:it,d=f?it:o;e|=f?wt:xt,(e&=~(f?xt:wt))&yt||(e&=~(gt|mt));var v=[t,e,i,h,l,d,p,s,u,c],g=n.apply(it,v);return Uo(t)&&Nl(g,v),g.placeholder=r,Go(g,t,e)}function so(t){var e=sf[t];return function(t,n){if(t=Ou(t),n=null==n?0:Wf(xu(n),292)){var r=(Au(t)+"e").split("e");return r=(Au(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"),+(r[0]+"e"+(+r[1]-n))}return e(t)}}function uo(t){return function(e){var n=Al(e);return n==Kt?J(e):n==ee?G(e):$(e,t(e))}}function co(t,e,n,r,i,o,a,s){var u=e&mt;if(!u&&"function"!=typeof t)throw new lf(st);var c=r?r.length:0;if(c||(e&=~(wt|xt),r=i=it),a=a===it?a:Jf(xu(a),0),s=s===it?s:xu(s),c-=i?i.length:0,e&xt){var f=r,l=i;r=i=it}var p=u?it:Ol(t),h=[t,e,n,r,i,f,l,o,a,s];if(p&&zo(h,p),t=h[0],e=h[1],n=h[2],r=h[3],i=h[4],s=h[9]=h[9]===it?u?0:t.length:Jf(h[9]-c,0),!s&&e&(_t|bt)&&(e&=~(_t|bt)),e&&e!=gt)d=e==_t||e==bt?Ki(t,e,s):e!=wt&&e!=(gt|wt)||i.length?Xi.apply(it,h):ro(t,e,n,r);else var d=Hi(t,e,n);return Go((p?_l:Nl)(d,h),t,e)}function fo(t,e,n,r){return t===it||Hs(t,df[n])&&!mf.call(r,n)?e:t}function lo(t,e,n,r,i,o){return iu(t)&&iu(e)&&(o.set(e,t),zr(t,e,it,lo,o),o.delete(e)),t}function po(t){return hu(t)?it:t}function ho(t,e,n,r,i,o){var a=n&dt,s=t.length,u=e.length;if(s!=u&&!(a&&u>s))return!1;var c=o.get(t);if(c&&o.get(e))return c==e;var f=-1,l=!0,p=n&vt?new mn:it;for(o.set(t,e),o.set(e,t);++f<s;){var h=t[f],d=e[f];if(r)var v=a?r(d,h,f,e,t,o):r(h,d,f,t,e,o);if(v!==it){if(v)continue;l=!1;break}if(p){if(!_(e,function(t,e){if(!I(p,e)&&(h===t||i(h,t,n,r,o)))return p.push(e)})){l=!1;break}}else if(h!==d&&!i(h,d,n,r,o)){l=!1;break}}return o.delete(t),o.delete(e),l}function vo(t,e,n,r,i,o,a){switch(n){case ue:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case se:return!(t.byteLength!=e.byteLength||!o(new Sf(t),new Sf(e)));case qt:case zt:case Gt:return Hs(+t,+e);case Jt:return t.name==e.name&&t.message==e.message;case te:case ne:return t==e+"";case Kt:var s=J;case ee:var u=r&dt;if(s||(s=K),t.size!=e.size&&!u)return!1;var c=a.get(t);if(c)return c==e;r|=vt,a.set(t,e);var f=ho(s(t),s(e),r,i,o,a);return a.delete(t),f;case re:if(pl)return pl.call(t)==pl.call(e)}return!1}function go(t,e,n,r,i,o){var a=n&dt,s=yo(t),u=s.length;if(u!=yo(e).length&&!a)return!1;for(var c=u;c--;){var f=s[c];if(!(a?f in e:mf.call(e,f)))return!1}var l=o.get(t);if(l&&o.get(e))return l==e;var p=!0;o.set(t,e),o.set(e,t);for(var h=a;++c<u;){f=s[c];var d=t[f],v=e[f];if(r)var g=a?r(v,d,f,e,t,o):r(d,v,f,t,e,o);if(!(g===it?d===v||i(d,v,n,r,o):g)){p=!1;break}h||(h="constructor"==f)}if(p&&!h){var m=t.constructor,y=e.constructor;m!=y&&"constructor"in t&&"constructor"in e&&!("function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y)&&(p=!1)}return o.delete(t),o.delete(e),p}function mo(t){return jl(Wo(t,it,ha),t+"")}function yo(t){return mr(t,Bu,Cl)}function _o(t){return mr(t,Vu,Sl)}function bo(t){for(var e=t.name+"",n=ol[e],r=mf.call(ol,e)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==t)return i.name}return e}function wo(t){return(mf.call(n,"placeholder")?n:t).placeholder}function xo(){var t=n.iteratee||jc;return t=t===jc?Ir:t,arguments.length?t(arguments[0],arguments[1]):t}function Eo(t,e){var n=t.__data__;return Mo(e)?n["string"==typeof e?"string":"hash"]:n.map}function Oo(t){for(var e=Bu(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Fo(i)]}return e}function Co(t,e){var n=F(t,e);return Pr(n)?n:it}function So(t){var e=mf.call(t,$f),n=t[$f];try{t[$f]=it;var r=!0}catch(t){}var i=bf.call(t);return r&&(e?t[$f]=n:delete t[$f]),i}function Ao(t,e,n){for(var r=-1,i=n.length;++r<i;){var o=n[r],a=o.size;switch(o.type){case"drop":t+=a;break;case"dropRight":e-=a;break;case"take":e=Wf(e,t+a);break;case"takeRight":t=Jf(t,e-a)}}return{start:t,end:e}}function ko(t){var e=t.match(Me);return e?e[1].split(Ue):[]}function No(t,e,n){e=Ei(e,t);for(var r=-1,i=e.length,o=!1;++r<i;){var a=Qo(e[r]);if(!(o=null!=t&&n(t,a)))break;t=t[a]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&ru(i)&&Do(a,i)&&(mp(t)||gp(t))}function To(t){var e=t.length,n=t.constructor(e);return e&&"string"==typeof t[0]&&mf.call(t,"index")&&(n.index=t.index,n.input=t.input),n}function jo(t){return"function"!=typeof t.constructor||Vo(t)?{}:dl(kf(t))}function Ro(t,e,n,r){var i=t.constructor;switch(e){case se:return Si(t);case qt:case zt:return new i(+t);case ue:return Ai(t,r);case ce:case fe:case le:case pe:case he:case de:case ve:case ge:case me:return Ri(t,r);case Kt:return ki(t,r,n);case Gt:case ne:return new i(t);case te:return Ni(t);case ee:return Ti(t,r,n);case re:return ji(t)}}function Po(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Ie,"{\n/* [wrapped with "+e+"] */\n")}function $o(t){return mp(t)||gp(t)||!!(Rf&&t&&t[Rf])}function Do(t,e){return!!(e=null==e?Pt:e)&&("number"==typeof t||Ye.test(t))&&t>-1&&t%1==0&&t<e}function Lo(t,e,n){if(!iu(n))return!1;var r=typeof e;return!!("number"==r?Js(n)&&Do(e,n.length):"string"==r&&e in n)&&Hs(n[e],t)}function Io(t,e){if(mp(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!gu(t))||(Ne.test(t)||!ke.test(t)||null!=e&&t in uf(e))}function Mo(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}function Uo(t){var e=bo(t),r=n[e];if("function"!=typeof r||!(e in b.prototype))return!1;if(t===r)return!0;var i=Ol(r);return!!i&&t===i[0]}function Bo(t){return!!_f&&_f in t}function Vo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||df)}function Fo(t){return t===t&&!iu(t)}function qo(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==it||t in uf(n)))}}function zo(t,e){var n=t[1],r=e[1],i=n|r,o=i<(gt|mt|Et),a=r==Et&&n==_t||r==Et&&n==Ot&&t[7].length<=e[8]||r==(Et|Ot)&&e[7].length<=e[8]&&n==_t;if(!o&&!a)return t;r>&&(t[2]=e[2],i|=n>?0:yt);var s=e[3];if(s){var u=t[3];t[3]=u?Di(u,s,e[4]):s,t[4]=u?Y(t[3],ft):e[4]}return s=e[5],s&&(u=t[5],t[5]=u?Li(u,s,e[6]):s,t[6]=u?Y(t[5],ft):e[6]),s=e[7],s&&(t[7]=s),r&Et&&(t[8]=null==t[8]?e[8]:Wf(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=i,t}function Ho(t){var e=[];if(null!=t)for(var n in uf(t))e.push(n);return e}function Jo(t){return bf.call(t)}function Wo(t,e,n){return e=Jf(e===it?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=Jf(r.length-e,0),a=nf(o);++i<o;)a[i]=r[e+i];i=-1;for(var u=nf(e+1);++i<e;)u[i]=r[i];return u[e]=n(a),s(t,this,u)}}function Yo(t,e){return e.length<2?t:gr(t,si(e,0,-1))}function Ko(t,e){for(var n=t.length,r=Wf(e.length,n),i=Ii(t);r--;){var o=e[r];t[r]=Do(o,n)?i[o]:it}return t}function Go(t,e,n){var r=e+"";return jl(t,Po(r,ea(ko(r),n)))}function Zo(t){var e=0,n=0;return function(){var r=Yf(),i=Nt-(r-n);if(n=r,i>0){if(++e>=kt)return arguments[0]}else e=0;return t.apply(it,arguments)}}function Xo(t,e){var n=-1,r=t.length,i=r-1;for(e=e===it?r:e;++n<e;){var o=Qr(n,i),a=t[o];t[o]=t[n],t[n]=a}return t.length=e,t}function Qo(t){if("string"==typeof t||gu(t))return t;var e=t+"";return"0"==e&&1/t==-Rt?"-0":e}function ta(t){if(null!=t){try{return gf.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function ea(t,e){return c(Ut,function(n){var r="_."+n[0];e&n[1]&&!h(t,r)&&t.push(r)}),t.sort()}function na(t){if(t instanceof b)return t.clone();var e=new i(t.__wrapped__,t.__chain__);return e.__actions__=Ii(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}function ra(t,e,n){e=(n?Lo(t,e,n):e===it)?1:Jf(xu(e),0);var r=null==t?0:t.length;if(!r||e<1)return[];for(var i=0,o=0,a=nf(Uf(r/e));i<r;)a[o++]=si(t,i,i+=e);return a}function ia(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var o=t[e];o&&(i[r++]=o)}return i}function oa(){var t=arguments.length;if(!t)return[];for(var e=nf(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return g(mp(n)?Ii(n):[n],pr(e,1))}function aa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),si(t,e<0?0:e,r)):[]}function sa(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),e=r-e,si(t,0,e<0?0:e)):[]}function ua(t,e){return t&&t.length?mi(t,xo(e,3),!0,!0):[]}function ca(t,e){return t&&t.length?mi(t,xo(e,3),!0):[]}function fa(t,e,n,r){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&Lo(t,e,n)&&(n=0,r=i),fr(t,e,n,r)):[]}function la(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:xu(n);return i<0&&(i=Jf(r+i,0)),E(t,xo(e,3),i)}function pa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r-1;return n!==it&&(i=xu(n),i=n<0?Jf(r+i,0):Wf(i,r-1)),E(t,xo(e,3),i,!0)}function ha(t){return(null==t?0:t.length)?pr(t,1):[]}function da(t){return(null==t?0:t.length)?pr(t,Rt):[]}function va(t,e){return(null==t?0:t.length)?(e=e===it?1:xu(e),pr(t,e)):[]}function ga(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r}function ma(t){return t&&t.length?t[0]:it}function ya(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:xu(n);return i<0&&(i=Jf(r+i,0)),O(t,e,i)}function _a(t){return(null==t?0:t.length)?si(t,0,-1):[]}function ba(t,e){return null==t?"":zf.call(t,e)}function wa(t){var e=null==t?0:t.length;return e?t[e-1]:it}function xa(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==it&&(i=xu(n),i=i<0?Jf(r+i,0):Wf(i,r-1)),e===e?X(t,e,i):E(t,S,i,!0)}function Ea(t,e){return t&&t.length?Jr(t,xu(e)):it}function Oa(t,e){return t&&t.length&&e&&e.length?Zr(t,e):t}function Ca(t,e,n){return t&&t.length&&e&&e.length?Zr(t,e,xo(n,2)):t}function Sa(t,e,n){return t&&t.length&&e&&e.length?Zr(t,e,it,n):t}function Aa(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],o=t.length;for(e=xo(e,3);++r<o;){var a=t[r];e(a,r,t)&&(n.push(a),i.push(r))}return Xr(t,i),n}function ka(t){return null==t?t:Zf.call(t)}function Na(t,e,n){var r=null==t?0:t.length;return r?(n&&"number"!=typeof n&&Lo(t,e,n)?(e=0,n=r):(e=null==e?0:xu(e),n=n===it?r:xu(n)),si(t,e,n)):[]}function Ta(t,e){return ci(t,e)}function ja(t,e,n){return fi(t,e,xo(n,2))}function Ra(t,e){var n=null==t?0:t.length;if(n){var r=ci(t,e);if(r<n&&Hs(t[r],e))return r}return-1}function Pa(t,e){return ci(t,e,!0)}function $a(t,e,n){return fi(t,e,xo(n,2),!0)}function Da(t,e){if(null==t?0:t.length){var n=ci(t,e,!0)-1;if(Hs(t[n],e))return n}return-1}function La(t){return t&&t.length?li(t):[]}function Ia(t,e){return t&&t.length?li(t,xo(e,2)):[]}function Ma(t){var e=null==t?0:t.length;return e?si(t,1,e):[]}function Ua(t,e,n){return t&&t.length?(e=n||e===it?1:xu(e),si(t,0,e<0?0:e)):[]}function Ba(t,e,n){var r=null==t?0:t.length;return r?(e=n||e===it?1:xu(e),e=r-e,si(t,e<0?0:e,r)):[]}function Va(t,e){return t&&t.length?mi(t,xo(e,3),!1,!0):[]}function Fa(t,e){return t&&t.length?mi(t,xo(e,3)):[]}function qa(t){return t&&t.length?di(t):[]}function za(t,e){return t&&t.length?di(t,xo(e,2)):[]}function Ha(t,e){return e="function"==typeof e?e:it,t&&t.length?di(t,it,e):[]}function Ja(t){if(!t||!t.length)return[];var e=0;return t=p(t,function(t){if(Ws(t))return e=Jf(t.length,e),!0}),P(e,function(e){return v(t,k(e))})}function Wa(t,e){if(!t||!t.length)return[];var n=Ja(t);return null==e?n:v(n,function(t){return s(e,it,t)})}function Ya(t,e){return bi(t||[],e||[],Hn)}function Ka(t,e){return bi(t||[],e||[],oi)}function Ga(t){var e=n(t);return e.__chain__=!0,e}function Za(t,e){return e(t),t}function Xa(t,e){return e(t)}function Qa(){return Ga(this)}function ts(){return new i(this.value(),this.__chain__)}function es(){this.__values__===it&&(this.__values__=bu(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?it:this.__values__[this.__index__++]}}function ns(){return this}function rs(t){for(var e,n=this;n instanceof r;){var i=na(n);i.__index__=0,i.__values__=it,e?o.__wrapped__=i:e=i;var o=i;n=n.__wrapped__}return o.__wrapped__=t,e}function is(){var t=this.__wrapped__;if(t instanceof b){var e=t;return this.__actions__.length&&(e=new b(this)),e=e.reverse(),e.__actions__.push({func:Xa,args:[ka],thisArg:it}),new i(e,this.__chain__)}return this.thru(ka)}function os(){return yi(this.__wrapped__,this.__actions__)}function as(t,e,n){var r=mp(t)?l:ur;return n&&Lo(t,e,n)&&(e=it),r(t,xo(e,3))}function ss(t,e){return(mp(t)?p:lr)(t,xo(e,3))}function us(t,e){return pr(ds(t,e),1)}function cs(t,e){return pr(ds(t,e),Rt)}function fs(t,e,n){return n=n===it?1:xu(n),pr(ds(t,e),n)}function ls(t,e){return(mp(t)?c:vl)(t,xo(e,3))}function ps(t,e){return(mp(t)?f:gl)(t,xo(e,3))}function hs(t,e,n,r){t=Js(t)?t:Qu(t),n=n&&!r?xu(n):0;var i=t.length;return n<0&&(n=Jf(i+n,0)),vu(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&O(t,e,n)>-1}function ds(t,e){return(mp(t)?v:Vr)(t,xo(e,3))}function vs(t,e,n,r){return null==t?[]:(mp(e)||(e=null==e?[]:[e]),n=r?it:n,mp(n)||(n=null==n?[]:[n]),Wr(t,e,n))}function gs(t,e,n){var r=mp(t)?m:T,i=arguments.length<3;return r(t,xo(e,4),n,i,vl)}function ms(t,e,n){var r=mp(t)?y:T,i=arguments.length<3;return r(t,xo(e,4),n,i,gl)}function ys(t,e){return(mp(t)?p:lr)(t,Rs(xo(e,3)))}function _s(t){return(mp(t)?$n:ri)(t)}function bs(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:xu(e),(mp(t)?Dn:ii)(t,e)}function ws(t){return(mp(t)?In:ai)(t)}function xs(t){if(null==t)return 0;if(Js(t))return vu(t)?Q(t):t.length;var e=Al(t);return e==Kt||e==ee?t.size:Mr(t).length}function Es(t,e,n){var r=mp(t)?_:ui;return n&&Lo(t,e,n)&&(e=it),r(t,xo(e,3))}function Os(t,e){if("function"!=typeof e)throw new lf(st);return t=xu(t),function(){if(--t<1)return e.apply(this,arguments)}}function Cs(t,e,n){return e=n?it:e,e=t&&null==e?t.length:e,co(t,Et,it,it,it,it,e)}function Ss(t,e){var n;if("function"!=typeof e)throw new lf(st);return t=xu(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=it),n}}function As(t,e,n){e=n?it:e;var r=co(t,_t,it,it,it,it,it,e);return r.placeholder=As.placeholder,r}function ks(t,e,n){e=n?it:e;var r=co(t,bt,it,it,it,it,it,e);return r.placeholder=ks.placeholder,r}function Ns(t,e,n){function r(e){var n=p,r=h;return p=h=it,y=e,v=t.apply(r,n)}function i(t){return y=t,g=Tl(s,e),_?r(t):v}function o(t){var n=t-m,r=t-y,i=e-n;return b?Wf(i,d-r):i}function a(t){var n=t-m,r=t-y;return m===it||n>=e||n<0||b&&r>=d}function s(){var t=op();if(a(t))return u(t);g=Tl(s,o(t))}function u(t){return g=it,w&&p?r(t):(p=h=it,v)}function c(){g!==it&&xl(g),y=0,p=m=h=g=it}function f(){return g===it?v:u(op())}function l(){var t=op(),n=a(t);if(p=arguments,h=this,m=t,n){if(g===it)return i(m);if(b)return g=Tl(s,e),r(m)}return g===it&&(g=Tl(s,e)),v}var p,h,d,v,g,m,y=0,_=!1,b=!1,w=!0;if("function"!=typeof t)throw new lf(st);return e=Ou(e)||0,iu(n)&&(_=!!n.leading,b="maxWait"in n,d=b?Jf(Ou(n.maxWait)||0,e):d,w="trailing"in n?!!n.trailing:w),l.cancel=c,l.flush=f,l}function Ts(t){return co(t,Ct)}function js(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new lf(st);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(js.Cache||cn),n}function Rs(t){if("function"!=typeof t)throw new lf(st);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}function Ps(t){return Ss(2,t)}function $s(t,e){if("function"!=typeof t)throw new lf(st);return e=e===it?e:xu(e),ni(t,e)}function Ds(t,e){if("function"!=typeof t)throw new lf(st);return e=null==e?0:Jf(xu(e),0),ni(function(n){var r=n[e],i=Oi(n,0,e);return r&&g(i,r),s(t,this,i)})}function Ls(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new lf(st);return iu(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ns(t,e,{leading:r,maxWait:e,trailing:i})}function Is(t){return Cs(t,1)}function Ms(t,e){return lp(xi(e),t)}function Us(){if(!arguments.length)return[];var t=arguments[0];return mp(t)?t:[t]}function Bs(t){return rr(t,ht)}function Vs(t,e){return e="function"==typeof e?e:it,rr(t,ht,e)}function Fs(t){return rr(t,lt|ht)}function qs(t,e){return e="function"==typeof e?e:it,rr(t,lt|ht,e)}function zs(t,e){return null==e||or(t,e,Bu(e))}function Hs(t,e){return t===e||t!==t&&e!==e}function Js(t){return null!=t&&ru(t.length)&&!eu(t)}function Ws(t){return ou(t)&&Js(t)}function Ys(t){return!0===t||!1===t||ou(t)&&yr(t)==qt}function Ks(t){return ou(t)&&1===t.nodeType&&!hu(t)}function Gs(t){if(null==t)return!0;if(Js(t)&&(mp(t)||"string"==typeof t||"function"==typeof t.splice||_p(t)||Op(t)||gp(t)))return!t.length;var e=Al(t);if(e==Kt||e==ee)return!t.size;if(Vo(t))return!Mr(t).length;for(var n in t)if(mf.call(t,n))return!1;return!0}function Zs(t,e){return Nr(t,e)}function Xs(t,e,n){n="function"==typeof n?n:it;var r=n?n(t,e):it;return r===it?Nr(t,e,it,n):!!r}function Qs(t){if(!ou(t))return!1;var e=yr(t);return e==Jt||e==Ht||"string"==typeof t.message&&"string"==typeof t.name&&!hu(t)}function tu(t){return"number"==typeof t&&qf(t)}function eu(t){if(!iu(t))return!1;var e=yr(t);return e==Wt||e==Yt||e==Ft||e==Qt}function nu(t){return"number"==typeof t&&t==xu(t)}function ru(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=Pt}function iu(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function ou(t){return null!=t&&"object"==typeof t}function au(t,e){return t===e||Rr(t,e,Oo(e))}function su(t,e,n){return n="function"==typeof n?n:it,Rr(t,e,Oo(e),n)}function uu(t){return pu(t)&&t!=+t}function cu(t){if(kl(t))throw new of(at);return Pr(t)}function fu(t){return null===t}function lu(t){return null==t}function pu(t){return"number"==typeof t||ou(t)&&yr(t)==Gt}function hu(t){if(!ou(t)||yr(t)!=Xt)return!1;var e=kf(t);if(null===e)return!0;var n=mf.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&gf.call(n)==wf}function du(t){return nu(t)&&t>=-Pt&&t<=Pt}function vu(t){return"string"==typeof t||!mp(t)&&ou(t)&&yr(t)==ne}function gu(t){return"symbol"==typeof t||ou(t)&&yr(t)==re}function mu(t){return t===it}function yu(t){return ou(t)&&Al(t)==oe}function _u(t){return ou(t)&&yr(t)==ae}function bu(t){if(!t)return[];if(Js(t))return vu(t)?tt(t):Ii(t);if(Pf&&t[Pf])return H(t[Pf]());var e=Al(t);return(e==Kt?J:e==ee?K:Qu)(t)}function wu(t){if(!t)return 0===t?t:0;if((t=Ou(t))===Rt||t===-Rt){return(t<0?-1:1)*$t}return t===t?t:0}function xu(t){var e=wu(t),n=e%1;return e===e?n?e-n:e:0}function Eu(t){return t?nr(xu(t),0,Lt):0}function Ou(t){if("number"==typeof t)return t;if(gu(t))return Dt;if(iu(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=iu(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace($e,"");var n=He.test(t);return n||We.test(t)?Tn(t.slice(2),n?2:8):ze.test(t)?Dt:+t}function Cu(t){return Mi(t,Vu(t))}function Su(t){return t?nr(xu(t),-Pt,Pt):0===t?t:0}function Au(t){return null==t?"":hi(t)}function ku(t,e){var n=dl(t);return null==e?n:Xn(n,e)}function Nu(t,e){return x(t,xo(e,3),hr)}function Tu(t,e){return x(t,xo(e,3),dr)}function ju(t,e){return null==t?t:ml(t,xo(e,3),Vu)}function Ru(t,e){return null==t?t:yl(t,xo(e,3),Vu)}function Pu(t,e){return t&&hr(t,xo(e,3))}function $u(t,e){return t&&dr(t,xo(e,3))}function Du(t){return null==t?[]:vr(t,Bu(t))}function Lu(t){return null==t?[]:vr(t,Vu(t))}function Iu(t,e,n){var r=null==t?it:gr(t,e);return r===it?n:r}function Mu(t,e){return null!=t&&No(t,e,br)}function Uu(t,e){return null!=t&&No(t,e,wr)}function Bu(t){return Js(t)?Rn(t):Mr(t)}function Vu(t){return Js(t)?Rn(t,!0):Ur(t)}function Fu(t,e){var n={};return e=xo(e,3),hr(t,function(t,r,i){tr(n,e(t,r,i),t)}),n}function qu(t,e){var n={};return e=xo(e,3),hr(t,function(t,r,i){tr(n,r,e(t,r,i))}),n}function zu(t,e){return Hu(t,Rs(xo(e)))}function Hu(t,e){if(null==t)return{};var n=v(_o(t),function(t){return[t]});return e=xo(e),Kr(t,n,function(t,n){return e(t,n[0])})}function Ju(t,e,n){e=Ei(e,t);var r=-1,i=e.length;for(i||(i=1,t=it);++r<i;){var o=null==t?it:t[Qo(e[r])];o===it&&(r=i,o=n),t=eu(o)?o.call(t):o}return t}function Wu(t,e,n){return null==t?t:oi(t,e,n)}function Yu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:oi(t,e,n,r)}function Ku(t,e,n){var r=mp(t),i=r||_p(t)||Op(t);if(e=xo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:iu(t)&&eu(o)?dl(kf(t)):{}}return(i?c:hr)(t,function(t,r,i){return e(n,t,r,i)}),n}function Gu(t,e){return null==t||vi(t,e)}function Zu(t,e,n){return null==t?t:gi(t,e,xi(n))}function Xu(t,e,n,r){return r="function"==typeof r?r:it,null==t?t:gi(t,e,xi(n),r)}function Qu(t){return null==t?[]:L(t,Bu(t))}function tc(t){return null==t?[]:L(t,Vu(t))}function ec(t,e,n){return n===it&&(n=e,e=it),n!==it&&(n=Ou(n),n=n===n?n:0),e!==it&&(e=Ou(e),e=e===e?e:0),nr(Ou(t),e,n)}function nc(t,e,n){return e=wu(e),n===it?(n=e,e=0):n=wu(n),t=Ou(t),xr(t,e,n)}function rc(t,e,n){if(n&&"boolean"!=typeof n&&Lo(t,e,n)&&(e=n=it),n===it&&("boolean"==typeof e?(n=e,e=it):"boolean"==typeof t&&(n=t,t=it)),t===it&&e===it?(t=0,e=1):(t=wu(t),e===it?(e=t,t=0):e=wu(e)),t>e){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Gf();return Wf(t+i*(e-t+Nn("1e-"+((i+"").length-1))),e)}return Qr(t,e)}function ic(t){return Gp(Au(t).toLowerCase())}function oc(t){return(t=Au(t))&&t.replace(Ke,Jn).replace(gn,"")}function ac(t,e,n){t=Au(t),e=hi(e);var r=t.length;n=n===it?r:nr(xu(n),0,r);var i=n;return(n-=e.length)>=0&&t.slice(n,i)==e}function sc(t){return t=Au(t),t&&Oe.test(t)?t.replace(xe,Wn):t}function uc(t){return t=Au(t),t&&Pe.test(t)?t.replace(Re,"\\$&"):t}function cc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return no(Bf(i),n)+t+no(Uf(i),n)}function fc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;return e&&r<e?t+no(e-r,n):t}function lc(t,e,n){t=Au(t),e=xu(e);var r=e?Q(t):0;return e&&r<e?no(e-r,n)+t:t}function pc(t,e,n){return n||null==e?e=0:e&&(e=+e),Kf(Au(t).replace(De,""),e||0)}function hc(t,e,n){return e=(n?Lo(t,e,n):e===it)?1:xu(e),ei(Au(t),e)}function dc(){var t=arguments,e=Au(t[0]);return t.length<3?e:e.replace(t[1],t[2])}function vc(t,e,n){return n&&"number"!=typeof n&&Lo(t,e,n)&&(e=n=it),(n=n===it?Lt:n>>>0)?(t=Au(t),t&&("string"==typeof e||null!=e&&!xp(e))&&!(e=hi(e))&&q(t)?Oi(tt(t),0,n):t.split(e,n)):[]}function gc(t,e,n){return t=Au(t),n=null==n?0:nr(xu(n),0,t.length),e=hi(e),t.slice(n,n+e.length)==e}function mc(t,e,r){var i=n.templateSettings;r&&Lo(t,e,r)&&(e=it),t=Au(t),e=Np({},e,i,fo);var o,a,s=Np({},e.imports,i.imports,fo),u=Bu(s),c=L(s,u),f=0,l=e.interpolate||Ge,p="__p += '",h=cf((e.escape||Ge).source+"|"+l.source+"|"+(l===Ae?Fe:Ge).source+"|"+(e.evaluate||Ge).source+"|$","g"),d="//# sourceURL="+("sourceURL"in e?e.sourceURL:"lodash.templateSources["+ ++xn+"]")+"\n";t.replace(h,function(e,n,r,i,s,u){return r||(r=i),p+=t.slice(f,u).replace(Ze,V),n&&(o=!0,p+="' +\n__e("+n+") +\n'"),s&&(a=!0,p+="';\n"+s+";\n__p += '"),r&&(p+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=u+e.length,e}),p+="';\n";var v=e.variable;v||(p="with (obj) {\n"+p+"\n}\n"),p=(a?p.replace(ye,""):p).replace(_e,"$1").replace(be,"$1;"),p="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(a?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+p+"return __p\n}";var g=Zp(function(){return af(u,d+"return "+p).apply(it,c)});if(g.source=p,Qs(g))throw g;return g}function yc(t){return Au(t).toLowerCase()}function _c(t){return Au(t).toUpperCase()}function bc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace($e,"");if(!t||!(e=hi(e)))return t;var r=tt(t),i=tt(e);return Oi(r,M(r,i),U(r,i)+1).join("")}function wc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace(Le,"");if(!t||!(e=hi(e)))return t;var r=tt(t);return Oi(r,0,U(r,tt(e))+1).join("")}function xc(t,e,n){if((t=Au(t))&&(n||e===it))return t.replace(De,"");if(!t||!(e=hi(e)))return t;var r=tt(t);return Oi(r,M(r,tt(e))).join("")}function Ec(t,e){var n=St,r=At;if(iu(e)){var i="separator"in e?e.separator:i;n="length"in e?xu(e.length):n,r="omission"in e?hi(e.omission):r}t=Au(t);var o=t.length;if(q(t)){var a=tt(t);o=a.length}if(n>=o)return t;var s=n-Q(r);if(s<1)return r;var u=a?Oi(a,0,s).join(""):t.slice(0,s);if(i===it)return u+r;if(a&&(s+=u.length-s),xp(i)){if(t.slice(s).search(i)){var c,f=u;for(i.global||(i=cf(i.source,Au(qe.exec(i))+"g")),i.lastIndex=0;c=i.exec(f);)var l=c.index;u=u.slice(0,l===it?s:l)}}else if(t.indexOf(hi(i),s)!=s){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r}function Oc(t){return t=Au(t),t&&Ee.test(t)?t.replace(we,Yn):t}function Cc(t,e,n){return t=Au(t),e=n?it:e,e===it?z(t)?rt(t):w(t):t.match(e)||[]}function Sc(t){var e=null==t?0:t.length,n=xo();return t=e?v(t,function(t){if("function"!=typeof t[1])throw new lf(st);return[n(t[0]),t[1]]}):[],ni(function(n){for(var r=-1;++r<e;){var i=t[r];if(s(i[0],this,n))return s(i[1],this,n)}})}function Ac(t){return ir(rr(t,lt))}function kc(t){return function(){return t}}function Nc(t,e){return null==t||t!==t?e:t}function Tc(t){return t}function jc(t){return Ir("function"==typeof t?t:rr(t,lt))}function Rc(t){return Fr(rr(t,lt))}function Pc(t,e){return qr(t,rr(e,lt))}function $c(t,e,n){var r=Bu(e),i=vr(e,r);null!=n||iu(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=vr(e,Bu(e)));var o=!(iu(n)&&"chain"in n&&!n.chain),a=eu(t);return c(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=Ii(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,g([this.value()],arguments))})}),t}function Dc(){return Pn._===this&&(Pn._=xf),this}function Lc(){}function Ic(t){return t=xu(t),ni(function(e){return Jr(e,t)})}function Mc(t){return Io(t)?k(Qo(t)):Gr(t)}function Uc(t){return function(e){return null==t?it:gr(t,e)}}function Bc(){return[]}function Vc(){return!1}function Fc(){return{}}function qc(){return""}function zc(){return!0}function Hc(t,e){if((t=xu(t))<1||t>Pt)return[];var n=Lt,r=Wf(t,Lt);e=xo(e),t-=Lt;for(var i=P(r,e);++n<t;)e(n);return i}function Jc(t){return mp(t)?v(t,Qo):gu(t)?[t]:Ii(Rl(Au(t)))}function Wc(t){var e=++yf;return Au(t)+e}function Yc(t){return t&&t.length?cr(t,Tc,_r):it}function Kc(t,e){return t&&t.length?cr(t,xo(e,2),_r):it}function Gc(t){return A(t,Tc)}function Zc(t,e){return A(t,xo(e,2))}function Xc(t){return t&&t.length?cr(t,Tc,Br):it}function Qc(t,e){return t&&t.length?cr(t,xo(e,2),Br):it}function tf(t){return t&&t.length?R(t,Tc):0}function ef(t,e){return t&&t.length?R(t,xo(e,2)):0}e=null==e?Pn:Kn.defaults(Pn.Object(),e,Kn.pick(Pn,wn));var nf=e.Array,rf=e.Date,of=e.Error,af=e.Function,sf=e.Math,uf=e.Object,cf=e.RegExp,ff=e.String,lf=e.TypeError,pf=nf.prototype,hf=af.prototype,df=uf.prototype,vf=e["__core-js_shared__"],gf=hf.toString,mf=df.hasOwnProperty,yf=0,_f=function(){var t=/[^.]+$/.exec(vf&&vf.keys&&vf.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),bf=df.toString,wf=gf.call(uf),xf=Pn._,Ef=cf("^"+gf.call(mf).replace(Re,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Of=Ln?e.Buffer:it,Cf=e.Symbol,Sf=e.Uint8Array,Af=Of?Of.allocUnsafe:it,kf=W(uf.getPrototypeOf,uf),Nf=uf.create,Tf=df.propertyIsEnumerable,jf=pf.splice,Rf=Cf?Cf.isConcatSpreadable:it,Pf=Cf?Cf.iterator:it,$f=Cf?Cf.toStringTag:it,Df=function(){try{var t=Co(uf,"defineProperty");return t({},"",{}),t}catch(t){}}(),Lf=e.clearTimeout!==Pn.clearTimeout&&e.clearTimeout,If=rf&&rf.now!==Pn.Date.now&&rf.now,Mf=e.setTimeout!==Pn.setTimeout&&e.setTimeout,Uf=sf.ceil,Bf=sf.floor,Vf=uf.getOwnPropertySymbols,Ff=Of?Of.isBuffer:it,qf=e.isFinite,zf=pf.join,Hf=W(uf.keys,uf),Jf=sf.max,Wf=sf.min,Yf=rf.now,Kf=e.parseInt,Gf=sf.random,Zf=pf.reverse,Xf=Co(e,"DataView"),Qf=Co(e,"Map"),tl=Co(e,"Promise"),el=Co(e,"Set"),nl=Co(e,"WeakMap"),rl=Co(uf,"create"),il=nl&&new nl,ol={},al=ta(Xf),sl=ta(Qf),ul=ta(tl),cl=ta(el),fl=ta(nl),ll=Cf?Cf.prototype:it,pl=ll?ll.valueOf:it,hl=ll?ll.toString:it,dl=function(){function t(){}return function(e){if(!iu(e))return{};if(Nf)return Nf(e);t.prototype=e;var n=new t;return t.prototype=it,n}}();n.templateSettings={escape:Ce,evaluate:Se,interpolate:Ae,variable:"",imports:{_:n}},n.prototype=r.prototype,n.prototype.constructor=n,i.prototype=dl(r.prototype),i.prototype.constructor=i,b.prototype=dl(r.prototype),b.prototype.constructor=b,nt.prototype.clear=Be,nt.prototype.delete=Xe,nt.prototype.get=Qe,nt.prototype.has=tn,nt.prototype.set=en,nn.prototype.clear=rn,nn.prototype.delete=on,nn.prototype.get=an,nn.prototype.has=sn,nn.prototype.set=un,cn.prototype.clear=fn,cn.prototype.delete=ln,cn.prototype.get=pn,cn.prototype.has=hn,cn.prototype.set=dn,mn.prototype.add=mn.prototype.push=yn,mn.prototype.has=_n,bn.prototype.clear=Cn,bn.prototype.delete=Sn,bn.prototype.get=An,bn.prototype.has=kn,bn.prototype.set=jn;var vl=qi(hr),gl=qi(dr,!0),ml=zi(),yl=zi(!0),_l=il?function(t,e){return il.set(t,e),t}:Tc,bl=Df?function(t,e){return Df(t,"toString",{configurable:!0,enumerable:!1,value:kc(e),writable:!0})}:Tc,wl=ni,xl=Lf||function(t){return Pn.clearTimeout(t)},El=el&&1/K(new el([,-0]))[1]==Rt?function(t){return new el(t)}:Lc,Ol=il?function(t){return il.get(t)}:Lc,Cl=Vf?function(t){return null==t?[]:(t=uf(t),p(Vf(t),function(e){return Tf.call(t,e)}))}:Bc,Sl=Vf?function(t){for(var e=[];t;)g(e,Cl(t)),t=kf(t);return e}:Bc,Al=yr;(Xf&&Al(new Xf(new ArrayBuffer(1)))!=ue||Qf&&Al(new Qf)!=Kt||tl&&"[object Promise]"!=Al(tl.resolve())||el&&Al(new el)!=ee||nl&&Al(new nl)!=oe)&&(Al=function(t){var e=yr(t),n=e==Xt?t.constructor:it,r=n?ta(n):"";if(r)switch(r){case al:return ue;case sl:return Kt;case ul:return"[object Promise]";case cl:return ee;case fl:return oe}return e});var kl=vf?eu:Vc,Nl=Zo(_l),Tl=Mf||function(t,e){return Pn.setTimeout(t,e)},jl=Zo(bl),Rl=function(t){var e=js(t,function(t){return n.size===ct&&n.clear(),t}),n=e.cache;return e}(function(t){var e=[];return Te.test(t)&&e.push(""),t.replace(je,function(t,n,r,i){e.push(r?i.replace(Ve,"$1"):n||t)}),e}),Pl=ni(function(t,e){return Ws(t)?sr(t,pr(e,1,Ws,!0)):[]}),$l=ni(function(t,e){var n=wa(e);return Ws(n)&&(n=it),Ws(t)?sr(t,pr(e,1,Ws,!0),xo(n,2)):[]}),Dl=ni(function(t,e){var n=wa(e);return Ws(n)&&(n=it),Ws(t)?sr(t,pr(e,1,Ws,!0),it,n):[]}),Ll=ni(function(t){var e=v(t,wi);return e.length&&e[0]===t[0]?Er(e):[]}),Il=ni(function(t){var e=wa(t),n=v(t,wi);return e===wa(n)?e=it:n.pop(),n.length&&n[0]===t[0]?Er(n,xo(e,2)):[]}),Ml=ni(function(t){var e=wa(t),n=v(t,wi);return e="function"==typeof e?e:it,e&&n.pop(),n.length&&n[0]===t[0]?Er(n,it,e):[]}),Ul=ni(Oa),Bl=mo(function(t,e){var n=null==t?0:t.length,r=er(t,e);return Xr(t,v(e,function(t){return Do(t,n)?+t:t}).sort(Pi)),r}),Vl=ni(function(t){return di(pr(t,1,Ws,!0))}),Fl=ni(function(t){var e=wa(t);return Ws(e)&&(e=it),di(pr(t,1,Ws,!0),xo(e,2))}),ql=ni(function(t){var e=wa(t);return e="function"==typeof e?e:it,di(pr(t,1,Ws,!0),it,e)}),zl=ni(function(t,e){return Ws(t)?sr(t,e):[]}),Hl=ni(function(t){return _i(p(t,Ws))}),Jl=ni(function(t){var e=wa(t);return Ws(e)&&(e=it),_i(p(t,Ws),xo(e,2))}),Wl=ni(function(t){var e=wa(t);return e="function"==typeof e?e:it,_i(p(t,Ws),it,e)}),Yl=ni(Ja),Kl=ni(function(t){var e=t.length,n=e>1?t[e-1]:it;return n="function"==typeof n?(t.pop(),n):it,Wa(t,n)}),Gl=mo(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,o=function(e){return er(e,t)};return!(e>1||this.__actions__.length)&&r instanceof b&&Do(n)?(r=r.slice(n,+n+(e?1:0)),r.__actions__.push({func:Xa,args:[o],thisArg:it}),new i(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(it),t})):this.thru(o)}),Zl=Vi(function(t,e,n){mf.call(t,n)?++t[n]:tr(t,n,1)}),Xl=Gi(la),Ql=Gi(pa),tp=Vi(function(t,e,n){mf.call(t,n)?t[n].push(e):tr(t,n,[e])}),ep=ni(function(t,e,n){var r=-1,i="function"==typeof e,o=Js(t)?nf(t.length):[];return vl(t,function(t){o[++r]=i?s(e,t,n):Cr(t,e,n)}),o}),np=Vi(function(t,e,n){tr(t,n,e)}),rp=Vi(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]}),ip=ni(function(t,e){if(null==t)return[];var n=e.length;return n>1&&Lo(t,e[0],e[1])?e=[]:n>2&&Lo(e[0],e[1],e[2])&&(e=[e[0]]),Wr(t,pr(e,1),[])}),op=If||function(){return Pn.Date.now()},ap=ni(function(t,e,n){var r=gt;if(n.length){var i=Y(n,wo(ap));r|=wt}return co(t,r,e,n,i)}),sp=ni(function(t,e,n){var r=gt|mt;if(n.length){var i=Y(n,wo(sp));r|=wt}return co(e,r,t,n,i)}),up=ni(function(t,e){return ar(t,1,e)}),cp=ni(function(t,e,n){return ar(t,Ou(e)||0,n)});js.Cache=cn;var fp=wl(function(t,e){e=1==e.length&&mp(e[0])?v(e[0],D(xo())):v(pr(e,1),D(xo()));var n=e.length;return ni(function(r){for(var i=-1,o=Wf(r.length,n);++i<o;)r[i]=e[i].call(this,r[i]);return s(t,this,r)})}),lp=ni(function(t,e){var n=Y(e,wo(lp));return co(t,wt,it,e,n)}),pp=ni(function(t,e){var n=Y(e,wo(pp));return co(t,xt,it,e,n)}),hp=mo(function(t,e){return co(t,Ot,it,it,it,e)}),dp=oo(_r),vp=oo(function(t,e){return t>=e}),gp=Sr(function(){return arguments}())?Sr:function(t){return ou(t)&&mf.call(t,"callee")&&!Tf.call(t,"callee")},mp=nf.isArray,yp=Un?D(Un):Ar,_p=Ff||Vc,bp=Bn?D(Bn):kr,wp=Vn?D(Vn):jr,xp=Fn?D(Fn):$r,Ep=qn?D(qn):Dr,Op=zn?D(zn):Lr,Cp=oo(Br),Sp=oo(function(t,e){return t<=e}),Ap=Fi(function(t,e){if(Vo(e)||Js(e))return void Mi(e,Bu(e),t);for(var n in e)mf.call(e,n)&&Hn(t,n,e[n])}),kp=Fi(function(t,e){Mi(e,Vu(e),t)}),Np=Fi(function(t,e,n,r){Mi(e,Vu(e),t,r)}),Tp=Fi(function(t,e,n,r){Mi(e,Bu(e),t,r)}),jp=mo(er),Rp=ni(function(t){return t.push(it,fo),s(Np,it,t)}),Pp=ni(function(t){return t.push(it,lo),s(Mp,it,t)}),$p=Qi(function(t,e,n){t[e]=n},kc(Tc)),Dp=Qi(function(t,e,n){mf.call(t,e)?t[e].push(n):t[e]=[n]},xo),Lp=ni(Cr),Ip=Fi(function(t,e,n){zr(t,e,n)}),Mp=Fi(function(t,e,n,r){zr(t,e,n,r)}),Up=mo(function(t,e){var n={};if(null==t)return n;var r=!1;e=v(e,function(e){return e=Ei(e,t),r||(r=e.length>1),e}),Mi(t,_o(t),n),r&&(n=rr(n,lt|pt|ht,po));for(var i=e.length;i--;)vi(n,e[i]);return n}),Bp=mo(function(t,e){return null==t?{}:Yr(t,e)}),Vp=uo(Bu),Fp=uo(Vu),qp=Wi(function(t,e,n){return e=e.toLowerCase(),t+(n?ic(e):e)}),zp=Wi(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),Hp=Wi(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),Jp=Ji("toLowerCase"),Wp=Wi(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}),Yp=Wi(function(t,e,n){return t+(n?" ":"")+Gp(e)}),Kp=Wi(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Gp=Ji("toUpperCase"),Zp=ni(function(t,e){try{return s(t,it,e)}catch(t){return Qs(t)?t:new of(t)}}),Xp=mo(function(t,e){return c(e,function(e){e=Qo(e),tr(t,e,ap(t[e],t))}),t}),Qp=Zi(),th=Zi(!0),eh=ni(function(t,e){return function(n){return Cr(n,t,e)}}),nh=ni(function(t,e){return function(n){return Cr(t,n,e)}}),rh=eo(v),ih=eo(l),oh=eo(_),ah=io(),sh=io(!0),uh=to(function(t,e){return t+e},0),ch=so("ceil"),fh=to(function(t,e){return t/e},1),lh=so("floor"),ph=to(function(t,e){return t*e},1),hh=so("round"),dh=to(function(t,e){return t-e},0);return n.after=Os,n.ary=Cs,n.assign=Ap,n.assignIn=kp,n.assignInWith=Np,n.assignWith=Tp,n.at=jp,n.before=Ss,n.bind=ap,n.bindAll=Xp,n.bindKey=sp,n.castArray=Us,n.chain=Ga,n.chunk=ra,n.compact=ia,n.concat=oa,n.cond=Sc,n.conforms=Ac,n.constant=kc,n.countBy=Zl,n.create=ku,n.curry=As,n.curryRight=ks,n.debounce=Ns,n.defaults=Rp,n.defaultsDeep=Pp,n.defer=up,n.delay=cp,n.difference=Pl,n.differenceBy=$l,n.differenceWith=Dl,n.drop=aa,n.dropRight=sa,n.dropRightWhile=ua,n.dropWhile=ca,n.fill=fa,n.filter=ss,n.flatMap=us,n.flatMapDeep=cs,n.flatMapDepth=fs,n.flatten=ha,n.flattenDeep=da,n.flattenDepth=va,n.flip=Ts,n.flow=Qp,n.flowRight=th,n.fromPairs=ga,n.functions=Du,n.functionsIn=Lu,n.groupBy=tp,n.initial=_a,n.intersection=Ll,n.intersectionBy=Il,n.intersectionWith=Ml,n.invert=$p,n.invertBy=Dp,n.invokeMap=ep,n.iteratee=jc,n.keyBy=np,n.keys=Bu,n.keysIn=Vu,n.map=ds,n.mapKeys=Fu,n.mapValues=qu,n.matches=Rc,n.matchesProperty=Pc,n.memoize=js,n.merge=Ip,n.mergeWith=Mp,n.method=eh,n.methodOf=nh,n.mixin=$c,n.negate=Rs,n.nthArg=Ic,n.omit=Up,n.omitBy=zu,n.once=Ps,n.orderBy=vs,n.over=rh,n.overArgs=fp,n.overEvery=ih,n.overSome=oh,n.partial=lp,n.partialRight=pp,n.partition=rp,n.pick=Bp,n.pickBy=Hu,n.property=Mc,n.propertyOf=Uc,n.pull=Ul,n.pullAll=Oa,n.pullAllBy=Ca,n.pullAllWith=Sa,n.pullAt=Bl,n.range=ah,n.rangeRight=sh,n.rearg=hp,n.reject=ys,n.remove=Aa,n.rest=$s,n.reverse=ka,n.sampleSize=bs,n.set=Wu,n.setWith=Yu,n.shuffle=ws,n.slice=Na,n.sortBy=ip,n.sortedUniq=La,n.sortedUniqBy=Ia,n.split=vc,n.spread=Ds,n.tail=Ma,n.take=Ua,n.takeRight=Ba,n.takeRightWhile=Va,n.takeWhile=Fa,n.tap=Za,n.throttle=Ls,n.thru=Xa,n.toArray=bu,n.toPairs=Vp,n.toPairsIn=Fp,n.toPath=Jc,n.toPlainObject=Cu,n.transform=Ku,n.unary=Is,n.union=Vl,n.unionBy=Fl,n.unionWith=ql,n.uniq=qa,n.uniqBy=za,n.uniqWith=Ha,n.unset=Gu,n.unzip=Ja,n.unzipWith=Wa,n.update=Zu,n.updateWith=Xu,n.values=Qu,n.valuesIn=tc,n.without=zl,n.words=Cc,n.wrap=Ms,n.xor=Hl,n.xorBy=Jl,n.xorWith=Wl,n.zip=Yl,n.zipObject=Ya,n.zipObjectDeep=Ka,n.zipWith=Kl,n.entries=Vp,n.entriesIn=Fp,n.extend=kp,n.extendWith=Np,$c(n,n),n.add=uh,n.attempt=Zp,n.camelCase=qp,n.capitalize=ic,n.ceil=ch,n.clamp=ec,n.clone=Bs,n.cloneDeep=Fs,n.cloneDeepWith=qs,n.cloneWith=Vs,n.conformsTo=zs,n.deburr=oc,n.defaultTo=Nc,n.divide=fh,n.endsWith=ac,n.eq=Hs,n.escape=sc,n.escapeRegExp=uc,n.every=as,n.find=Xl,n.findIndex=la,n.findKey=Nu,n.findLast=Ql,n.findLastIndex=pa,n.findLastKey=Tu,n.floor=lh,n.forEach=ls,n.forEachRight=ps,n.forIn=ju,n.forInRight=Ru,n.forOwn=Pu,n.forOwnRight=$u,n.get=Iu,n.gt=dp,n.gte=vp,n.has=Mu,n.hasIn=Uu,n.head=ma,n.identity=Tc,n.includes=hs,n.indexOf=ya,n.inRange=nc,n.invoke=Lp,n.isArguments=gp,n.isArray=mp,n.isArrayBuffer=yp,n.isArrayLike=Js,n.isArrayLikeObject=Ws,n.isBoolean=Ys,n.isBuffer=_p,n.isDate=bp,n.isElement=Ks,n.isEmpty=Gs,n.isEqual=Zs,n.isEqualWith=Xs,n.isError=Qs,n.isFinite=tu,n.isFunction=eu,n.isInteger=nu,n.isLength=ru,n.isMap=wp,n.isMatch=au,n.isMatchWith=su,n.isNaN=uu,n.isNative=cu,n.isNil=lu,n.isNull=fu,n.isNumber=pu,n.isObject=iu,n.isObjectLike=ou,n.isPlainObject=hu,n.isRegExp=xp,n.isSafeInteger=du,n.isSet=Ep,n.isString=vu,n.isSymbol=gu,n.isTypedArray=Op,n.isUndefined=mu,n.isWeakMap=yu,n.isWeakSet=_u,n.join=ba,n.kebabCase=zp,n.last=wa,n.lastIndexOf=xa,n.lowerCase=Hp,n.lowerFirst=Jp,n.lt=Cp,n.lte=Sp,n.max=Yc,n.maxBy=Kc,n.mean=Gc,n.meanBy=Zc,n.min=Xc,n.minBy=Qc,n.stubArray=Bc,n.stubFalse=Vc,n.stubObject=Fc,n.stubString=qc,n.stubTrue=zc,n.multiply=ph,n.nth=Ea,n.noConflict=Dc,n.noop=Lc,n.now=op,n.pad=cc,n.padEnd=fc,n.padStart=lc,n.parseInt=pc,n.random=rc,n.reduce=gs,n.reduceRight=ms,n.repeat=hc,n.replace=dc,n.result=Ju,n.round=hh,n.runInContext=t,n.sample=_s,n.size=xs,n.snakeCase=Wp,n.some=Es,n.sortedIndex=Ta,n.sortedIndexBy=ja,n.sortedIndexOf=Ra,n.sortedLastIndex=Pa,n.sortedLastIndexBy=$a,n.sortedLastIndexOf=Da,n.startCase=Yp,n.startsWith=gc,n.subtract=dh,n.sum=tf,n.sumBy=ef,n.template=mc,n.times=Hc,n.toFinite=wu,n.toInteger=xu,n.toLength=Eu,n.toLower=yc,n.toNumber=Ou,n.toSafeInteger=Su,n.toString=Au,n.toUpper=_c,n.trim=bc,n.trimEnd=wc,n.trimStart=xc,n.truncate=Ec,n.unescape=Oc,n.uniqueId=Wc,n.upperCase=Kp,n.upperFirst=Gp,n.each=ls,n.eachRight=ps,n.first=ma,$c(n,function(){var t={};return hr(n,function(e,r){mf.call(n.prototype,r)||(t[r]=e)}),t}(),{chain:!1}),n.VERSION="4.17.4",c(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){n[t].placeholder=n}),c(["drop","take"],function(t,e){b.prototype[t]=function(n){n=n===it?1:Jf(xu(n),0);var r=this.__filtered__&&!e?new b(this):this.clone();return r.__filtered__?r.__takeCount__=Wf(n,r.__takeCount__):r.__views__.push({size:Wf(n,Lt),type:t+(r.__dir__<0?"Right":"")}),r},b.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),c(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==Tt||3==n;b.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:xo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),c(["head","last"],function(t,e){var n="take"+(e?"Right":"");b.prototype[t]=function(){return this[n](1).value()[0]}}),c(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");b.prototype[t]=function(){return this.__filtered__?new b(this):this[n](1)}}),b.prototype.compact=function(){return this.filter(Tc)},b.prototype.find=function(t){return this.filter(t).head()},b.prototype.findLast=function(t){return this.reverse().find(t)},b.prototype.invokeMap=ni(function(t,e){return"function"==typeof t?new b(this):this.map(function(n){return Cr(n,t,e)})}),b.prototype.reject=function(t){return this.filter(Rs(xo(t)))},b.prototype.slice=function(t,e){t=xu(t);var n=this;return n.__filtered__&&(t>0||e<0)?new b(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==it&&(e=xu(e),n=e<0?n.dropRight(-e):n.take(e-t)),n)},b.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},b.prototype.toArray=function(){return this.take(Lt)},hr(b.prototype,function(t,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),o=/^(?:head|last)$/.test(e),a=n[o?"take"+("last"==e?"Right":""):e],s=o||/^find/.test(e);a&&(n.prototype[e]=function(){var e=this.__wrapped__,u=o?[1]:arguments,c=e instanceof b,f=u[0],l=c||mp(e),p=function(t){var e=a.apply(n,g([t],u));return o&&h?e[0]:e};l&&r&&"function"==typeof f&&1!=f.length&&(c=l=!1);var h=this.__chain__,d=!!this.__actions__.length,v=s&&!h,m=c&&!d;if(!s&&l){e=m?e:new b(this);var y=t.apply(e,u);return y.__actions__.push({func:Xa,args:[p],thisArg:it}),new i(y,h)}return v&&m?t.apply(this,u):(y=this.thru(p),v?o?y.value()[0]:y.value():y)})}),c(["pop","push","shift","sort","splice","unshift"],function(t){var e=pf[t],r=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",i=/^(?:pop|shift)$/.test(t);n.prototype[t]=function(){var t=arguments;if(i&&!this.__chain__){var n=this.value();return e.apply(mp(n)?n:[],t)}return this[r](function(n){return e.apply(mp(n)?n:[],t)})}}),hr(b.prototype,function(t,e){var r=n[e];if(r){var i=r.name+"";(ol[i]||(ol[i]=[])).push({name:e,func:r})}}),ol[Xi(it,mt).name]=[{name:"wrapper",func:it}],b.prototype.clone=N,b.prototype.reverse=Z,b.prototype.value=et,n.prototype.at=Gl,n.prototype.chain=Qa,n.prototype.commit=ts,n.prototype.next=es,n.prototype.plant=rs,n.prototype.reverse=is,n.prototype.toJSON=n.prototype.valueOf=n.prototype.value=os,n.prototype.first=n.prototype.head,Pf&&(n.prototype[Pf]=ns),n}();Pn._=Kn,(i=function(){return Kn}.call(e,n,e,r))!==it&&(r.exports=i)}).call(this)}).call(e,n(1),n(12)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(0),i=n(34),o={token:"",baseUrl:"https://www.flex.io/api/v1",insecure:!1,debug:!1},a={_init:function(){this.connections=n(61).getConnectionsObject(this),this.pipes=n(62).getPipesObject(this),this.util=n(5).getUtilObject(this),this._http=null,this.version=this.util.isNodeJs()?n(63).version:"1.21.0";var t=n(64).getPipeConstructor;this.pipe=t(this);var e=n(65).getConnectionConstructor;this.connection=e(this)},setup:function(t,e){return o=r.assign(o,{token:t},e),this._http=null,this._createHttp(),this},getConfig:function(){return r.assign({},o)},http:function(){return this._http||this._createHttp(),this._http},task:i,_createHttp:function(){var t={baseURL:o.baseUrl,headers:{Authorization:"Bearer "+o.token},insecure:!0===o.insecure};this._http=n(66).create(t)}};a._init(),t.exports=a},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t){function n(){if(void 0!==o)return o;if(t.XMLHttpRequest){o=new t.XMLHttpRequest;try{o.open("GET",t.XDomainRequest?"/":"https://example.com")}catch(t){o=null}}else o=null;return o}function r(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(t.fetch)&&i(t.ReadableStream),e.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),e.blobConstructor=!0}catch(t){}var o,a=void 0!==t.ArrayBuffer,s=a&&i(t.ArrayBuffer.prototype.slice);e.arraybuffer=e.fetch||a&&r("arraybuffer"),e.msstream=!e.fetch&&s&&r("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&a&&r("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),e.vbArray=i(t.VBArray),o=null}).call(e,n(1))},function(t,e,n){e=t.exports=n(17),e.Stream=e,e.Readable=e,e.Writable=n(21),e.Duplex=n(6),e.Transform=n(23),e.PassThrough=n(77)},function(t,e,n){"use strict";(function(e,r){function i(t){return I.from(t)}function o(t){return I.isBuffer(t)||t instanceof M}function a(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?$(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}function s(t,e){P=P||n(6),t=t||{},this.objectMode=!!t.objectMode,e instanceof P&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new q,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(F||(F=n(22).StringDecoder),this.decoder=new F(t.encoding),this.encoding=t.encoding)}function u(t){if(P=P||n(6),!(this instanceof u))return new u(t);this._readableState=new s(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),L.call(this)}function c(t,e,n,r,o){var a=t._readableState;if(null===e)a.reading=!1,v(t,a);else{var s;o||(s=l(a,e)),s?t.emit("error",s):a.objectMode||e&&e.length>0?("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===I.prototype||(e=i(e)),r?a.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):f(t,a,e,!0):a.ended?t.emit("error",new Error("stream.push() after EOF")):(a.reading=!1,a.decoder&&!n?(e=a.decoder.write(e),a.objectMode||0!==e.length?f(t,a,e,!1):y(t,a)):f(t,a,e,!1))):r||(a.reading=!1)}return p(a)}function f(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&g(t)),y(t,e)}function l(t,e){var n;return o(e)||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function p(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}function h(t){return t>=J?t=J:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function d(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=h(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function v(t,e){if(!e.ended){if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,g(t)}}function g(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(V("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?R(m,t):m(t))}function m(t){V("emit readable"),t.emit("readable"),O(t)}function y(t,e){e.readingMore||(e.readingMore=!0,R(_,t,e))}function _(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(V("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function b(t){return function(){var e=t._readableState;V("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&D(t,"data")&&(e.flowing=!0,O(t))}}function w(t){V("readable nexttick read 0"),t.read(0)}function x(t,e){e.resumeScheduled||(e.resumeScheduled=!0,R(E,t,e))}function E(t,e){e.reading||(V("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),O(t),e.flowing&&!e.reading&&t.read(0)}function O(t){var e=t._readableState;for(V("flow",e.flowing);e.flowing&&null!==t.read(););}function C(t,e){if(0===e.length)return null;var n;return e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=S(t,e.buffer,e.decoder),n}function S(t,e,n){var r;return t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?A(t,e):k(t,e),r}function A(t,e){var n=e.head,r=1,i=n.data;for(t-=i.length;n=n.next;){var o=n.data,a=t>o.length?o.length:t;if(a===o.length?i+=o:i+=o.slice(0,t),0===(t-=a)){a===o.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=o.slice(a));break}++r}return e.length-=r,i}function k(t,e){var n=I.allocUnsafe(t),r=e.head,i=1;for(r.data.copy(n),t-=r.data.length;r=r.next;){var o=r.data,a=t>o.length?o.length:t;if(o.copy(n,n.length-t,0,a),0===(t-=a)){a===o.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=o.slice(a));break}++i}return e.length-=i,n}function N(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,R(T,e,t))}function T(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function j(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}var R=n(8);t.exports=u;var P,$=n(14);u.ReadableState=s;var D=(n(18).EventEmitter,function(t,e){return t.listeners(e).length}),L=n(19),I=n(9).Buffer,M=e.Uint8Array||function(){},U=n(7);U.inherits=n(4);var B=n(72),V=void 0;V=B&&B.debuglog?B.debuglog("stream"):function(){};var F,q=n(73),z=n(20);U.inherits(u,L);var H=["error","close","destroy","pause","resume"];Object.defineProperty(u.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),u.prototype.destroy=z.destroy,u.prototype._undestroy=z.undestroy,u.prototype._destroy=function(t,e){this.push(null),e(t)},u.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=I.from(t,e),e=""),n=!0),c(this,t,e,!1,n)},u.prototype.unshift=function(t){return c(this,t,null,!0,!1)},u.prototype.isPaused=function(){return!1===this._readableState.flowing},u.prototype.setEncoding=function(t){return F||(F=n(22).StringDecoder),this._readableState.decoder=new F(t),this._readableState.encoding=t,this};var J=8388608;u.prototype.read=function(t){V("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return V("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?N(this):g(this),null;if(0===(t=d(t,e))&&e.ended)return 0===e.length&&N(this),null;var r=e.needReadable;V("need readable",r),(0===e.length||e.length-t<e.highWaterMark)&&(r=!0,V("length less than watermark",r)),e.ended||e.reading?(r=!1,V("reading or ended",r)):r&&(V("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=d(n,e)));var i;return i=t>0?C(t,e):null,null===i?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&N(this)),null!==i&&this.emit("data",i),i},u.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},u.prototype.pipe=function(t,e){function n(t,e){V("onunpipe"),t===p&&e&&!1===e.hasUnpiped&&(e.hasUnpiped=!0,o())}function i(){V("onend"),t.end()}function o(){V("cleanup"),t.removeListener("close",c),t.removeListener("finish",f),t.removeListener("drain",g),t.removeListener("error",u),t.removeListener("unpipe",n),p.removeListener("end",i),p.removeListener("end",l),p.removeListener("data",s),m=!0,!h.awaitDrain||t._writableState&&!t._writableState.needDrain||g()}function s(e){V("ondata"),y=!1,!1!==t.write(e)||y||((1===h.pipesCount&&h.pipes===t||h.pipesCount>1&&-1!==j(h.pipes,t))&&!m&&(V("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,y=!0),p.pause())}function u(e){V("onerror",e),l(),t.removeListener("error",u),0===D(t,"error")&&t.emit("error",e)}function c(){t.removeListener("finish",f),l()}function f(){V("onfinish"),t.removeListener("close",c),l()}function l(){V("unpipe"),p.unpipe(t)}var p=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=t;break;case 1:h.pipes=[h.pipes,t];break;default:h.pipes.push(t)}h.pipesCount+=1,V("pipe count=%d opts=%j",h.pipesCount,e);var d=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr,v=d?i:l;h.endEmitted?R(v):p.once("end",v),t.on("unpipe",n);var g=b(p);t.on("drain",g);var m=!1,y=!1;return p.on("data",s),a(t,"error",u),t.once("close",c),t.once("finish",f),t.emit("pipe",p),h.flowing||(V("pipe resume"),p.resume()),t},u.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,n);return this}var a=j(e.pipes,t);return-1===a?this:(e.pipes.splice(a,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},u.prototype.on=function(t,e){var n=L.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&g(this):R(w,this))}return n},u.prototype.addListener=u.prototype.on,u.prototype.resume=function(){var t=this._readableState;return t.flowing||(V("resume"),t.flowing=!0,x(this,t)),this},u.prototype.pause=function(){return V("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(V("pause"),this._readableState.flowing=!1,this.emit("pause")),this},u.prototype.wrap=function(t){var e=this._readableState,n=!1,r=this;t.on("end",function(){if(V("wrapped end"),e.decoder&&!e.ended){var t=e.decoder.end();t&&t.length&&r.push(t)}r.push(null)}),t.on("data",function(i){if(V("wrapped data"),e.decoder&&(i=e.decoder.write(i)),(!e.objectMode||null!==i&&void 0!==i)&&(e.objectMode||i&&i.length)){r.push(i)||(n=!0,t.pause())}});for(var i in t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var o=0;o<H.length;o++)t.on(H[o],r.emit.bind(r,H[o]));return r._read=function(e){V("wrapped _read",e),n&&(n=!1,t.resume())},r},u._fromList=C}).call(e,n(1),n(2))},function(t,e){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(t){return"function"==typeof t}function i(t){return"number"==typeof t}function o(t){return"object"==typeof t&&null!==t}function a(t){return void 0===t}t.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!i(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,n,i,s,u,c;if(this._events||(this._events={}),"error"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var f=new Error('Uncaught, unspecified "error" event. ('+e+")");throw f.context=e,f}if(n=this._events[t],a(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(o(n))for(s=Array.prototype.slice.call(arguments,1),c=n.slice(),i=c.length,u=0;u<i;u++)c[u].apply(this,s);return!0},n.prototype.addListener=function(t,e){var i;if(!r(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,r(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(i=a(this._maxListeners)?n.defaultMaxListeners:this._maxListeners)&&i>0&&this._events[t].length>i&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function n(){this.removeListener(t,n),i||(i=!0,e.apply(this,arguments))}if(!r(e))throw TypeError("listener must be a function");var i=!1;return n.listener=e,this.on(t,n),this},n.prototype.removeListener=function(t,e){var n,i,a,s;if(!r(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(n=this._events[t],a=n.length,i=-1,n===e||r(n.listener)&&n.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(o(n)){for(s=a;s-- >0;)if(n[s]===e||n[s].listener&&n[s].listener===e){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[t]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[t],r(n))this.removeListener(t,n);else if(n)for(;n.length;)this.removeListener(t,n[n.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){return this._events&&this._events[t]?r(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(r(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,n){t.exports=n(18).EventEmitter},function(t,e,n){"use strict";function r(t,e){var n=this,r=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;if(r||i)return void(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||a(o,this,t));this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?(a(o,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)})}function i(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function o(t,e){t.emit("error",e)}var a=n(8);t.exports={destroy:r,undestroy:i}},function(t,e,n){"use strict";(function(e,r,i){function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){A(e,t)}}function a(t){return $.from(t)}function s(t){return $.isBuffer(t)||t instanceof D}function u(){}function c(t,e){N=N||n(6),t=t||{},this.objectMode=!!t.objectMode,e instanceof N&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var r=t.highWaterMark,i=this.objectMode?16:16384;this.highWaterMark=r||0===r?r:i,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){y(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function f(t){if(N=N||n(6),!(I.call(f,this)||this instanceof N))return new f(t);this._writableState=new c(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),P.call(this)}function l(t,e){var n=new Error("write after end");t.emit("error",n),k(e,n)}function p(t,e,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),k(r,o),i=!1),i}function h(t,e,n){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=$.from(e,n)),e}function d(t,e,n,r,i,o){if(!n){var a=h(e,r,i);r!==a&&(n=!0,i="buffer",r=a)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;if(u||(e.needDrain=!0),e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else v(t,e,!1,s,r,i,o);return u}function v(t,e,n,r,i,o,a){e.writelen=r,e.writecb=a,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,o,e.onwrite),e.sync=!1}function g(t,e,n,r,i){--e.pendingcb,n?(k(i,r),k(C,t,e),t._writableState.errorEmitted=!0,t.emit("error",r)):(i(r),t._writableState.errorEmitted=!0,t.emit("error",r),C(t,e))}function m(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function y(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(m(n),e)g(t,n,r,e,i);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||w(t,n),r?T(_,t,n,o,i):_(t,n,o,i)}}function _(t,e,n,r){n||b(t,e),e.pendingcb--,r(),C(t,e)}function b(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function w(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,u=!0;n;)i[s]=n,n.isBuf||(u=!1),n=n.next,s+=1;i.allBuffers=u,v(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e)}else{for(;n;){var c=n.chunk,f=n.encoding,l=n.callback;if(v(t,e,!1,e.objectMode?1:c.length,c,f,l),n=n.next,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequestCount=0,e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function E(t,e){t._final(function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),C(t,e)})}function O(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,k(E,t,e)):(e.prefinished=!0,t.emit("prefinish")))}function C(t,e){var n=x(e);return n&&(O(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}function S(t,e,n){e.ending=!0,C(t,e),n&&(e.finished?k(n):t.once("finish",n)),e.ended=!0,t.writable=!1}function A(t,e,n){var r=t.entry;for(t.entry=null;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}var k=n(8);t.exports=f;var N,T=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:k;f.WritableState=c;var j=n(7);j.inherits=n(4);var R={deprecate:n(76)},P=n(19),$=n(9).Buffer,D=i.Uint8Array||function(){},L=n(20);j.inherits(f,P),c.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(c.prototype,"buffer",{get:R.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}();var I;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(I=Function.prototype[Symbol.hasInstance],Object.defineProperty(f,Symbol.hasInstance,{value:function(t){return!!I.call(this,t)||t&&t._writableState instanceof c}})):I=function(t){return t instanceof this},f.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},f.prototype.write=function(t,e,n){var r=this._writableState,i=!1,o=s(t)&&!r.objectMode;return o&&!$.isBuffer(t)&&(t=a(t)),"function"==typeof e&&(n=e,e=null),o?e="buffer":e||(e=r.defaultEncoding),"function"!=typeof n&&(n=u),r.ended?l(this,n):(o||p(this,r,t,n))&&(r.pendingcb++,i=d(this,r,o,t,e,n)),i},f.prototype.cork=function(){this._writableState.corked++},f.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},f.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},f.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},f.prototype._writev=null,f.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!==t&&void 0!==t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||S(this,r,n)},Object.defineProperty(f.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),f.prototype.destroy=L.destroy,f.prototype._undestroy=L.undestroy,f.prototype._destroy=function(t,e){this.end(),e(t)}}).call(e,n(2),n(74).setImmediate,n(1))},function(t,e,n){function r(t){if(t&&!u(t))throw new Error("Unknown encoding: "+t)}function i(t){return t.toString(this.encoding)}function o(t){this.charReceived=t.length%2,this.charLength=this.charReceived?2:0}function a(t){this.charReceived=t.length%3,this.charLength=this.charReceived?3:0}var s=n(3).Buffer,u=s.isEncoding||function(t){switch(t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}},c=e.StringDecoder=function(t){switch(this.encoding=(t||"utf8").toLowerCase().replace(/[-_]/,""),r(t),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=o;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=a;break;default:return void(this.write=i)}this.charBuffer=new s(6),this.charReceived=0,this.charLength=0};c.prototype.write=function(t){for(var e="";this.charLength;){var n=t.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:t.length;if(t.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived<this.charLength)return"";t=t.slice(n,t.length),e=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var r=e.charCodeAt(e.length-1);if(!(r>=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===t.length)return e;break}this.charLength+=this.surrogateSize,e=""}this.detectIncompleteChar(t);var i=t.length;this.charLength&&(t.copy(this.charBuffer,0,t.length-this.charReceived,i),i-=this.charReceived),e+=t.toString(this.encoding,0,i);var i=e.length-1,r=e.charCodeAt(i);if(r>=55296&&r<=56319){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),t.copy(this.charBuffer,0,0,o),e.substring(0,i)}return e},c.prototype.detectIncompleteChar=function(t){for(var e=t.length>=3?3:t.length;e>0;e--){var n=t[t.length-e];if(1==e&&n>>5==6){this.charLength=2;break}if(e<=2&&n>>4==14){this.charLength=3;break}if(e<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=e},c.prototype.end=function(t){var e="";if(t&&t.length&&(e=this.write(t)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;e+=r.slice(0,n).toString(i)}return e}},function(t,e,n){"use strict";function r(t){this.afterTransform=function(e,n){return i(t,e,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null,this.writeencoding=null}function i(t,e,n){var r=t._transformState;r.transforming=!1;var i=r.writecb;if(!i)return t.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&t.push(n),i(e);var o=t._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&t._read(o.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);s.call(this,t),this._transformState=new r(this);var e=this;this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.once("prefinish",function(){"function"==typeof this._flush?this._flush(function(t,n){a(e,t,n)}):a(e)})}function a(t,e,n){if(e)return t.emit("error",e);null!==n&&void 0!==n&&t.push(n);var r=t._writableState,i=t._transformState;if(r.length)throw new Error("Calling transform done when ws.length != 0");if(i.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}t.exports=o;var s=n(6),u=n(7);u.inherits=n(4),u.inherits(o,s),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,s.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var n=this;s.prototype._destroy.call(this,t,function(t){e(t),n.emit("close")})}},function(t,e,n){"use strict";function r(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function i(t,e,n){if(t&&c.isObject(t)&&t instanceof r)return t;var i=new r;return i.parse(t,e,n),i}function o(t){return c.isString(t)&&(t=i(t)),t instanceof r?t.format():r.prototype.format.call(t)}function a(t,e){return i(t,!1,!0).resolve(e)}function s(t,e){return t?i(t,!1,!0).resolveObject(e):e}var u=n(81),c=n(82);e.parse=i,e.resolve=a,e.resolveObject=s,e.format=o,e.Url=r;var f=/^([a-z0-9.+-]+:)/i,l=/:[0-9]*$/,p=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,h=["<",">",'"',"`"," ","\r","\n","\t"],d=["{","}","|","\\","^","`"].concat(h),v=["'"].concat(d),g=["%","/","?",";","#"].concat(v),m=["/","?","#"],y=/^[+a-z0-9A-Z_-]{0,63}$/,_=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},w={javascript:!0,"javascript:":!0},x={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},E=n(83);r.prototype.parse=function(t,e,n){if(!c.isString(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var r=t.indexOf("?"),i=-1!==r&&r<t.indexOf("#")?"?":"#",o=t.split(i),a=/\\/g;o[0]=o[0].replace(a,"/"),t=o.join(i);var s=t;if(s=s.trim(),!n&&1===t.split("#").length){var l=p.exec(s);if(l)return this.path=s,this.href=s,this.pathname=l[1],l[2]?(this.search=l[2],this.query=e?E.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var h=f.exec(s);if(h){h=h[0];var d=h.toLowerCase();this.protocol=d,s=s.substr(h.length)}if(n||h||s.match(/^\/\/[^@\/]+@[^@\/]+/)){var O="//"===s.substr(0,2);!O||h&&w[h]||(s=s.substr(2),this.slashes=!0)}if(!w[h]&&(O||h&&!x[h])){for(var C=-1,S=0;S<m.length;S++){var A=s.indexOf(m[S]);-1!==A&&(-1===C||A<C)&&(C=A)}var k,N;N=-1===C?s.lastIndexOf("@"):s.lastIndexOf("@",C),-1!==N&&(k=s.slice(0,N),s=s.slice(N+1),this.auth=decodeURIComponent(k)),C=-1;for(var S=0;S<g.length;S++){var A=s.indexOf(g[S]);-1!==A&&(-1===C||A<C)&&(C=A)}-1===C&&(C=s.length),this.host=s.slice(0,C),s=s.slice(C),this.parseHost(),this.hostname=this.hostname||"";var T="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!T)for(var j=this.hostname.split(/\./),S=0,R=j.length;S<R;S++){var P=j[S];if(P&&!P.match(y)){for(var $="",D=0,L=P.length;D<L;D++)P.charCodeAt(D)>127?$+="x":$+=P[D];if(!$.match(y)){var I=j.slice(0,S),M=j.slice(S+1),U=P.match(_);U&&(I.push(U[1]),M.unshift(U[2])),M.length&&(s="/"+M.join(".")+s),this.hostname=I.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=u.toASCII(this.hostname));var B=this.port?":"+this.port:"",V=this.hostname||"";this.host=V+B,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==s[0]&&(s="/"+s))}if(!b[d])for(var S=0,R=v.length;S<R;S++){var F=v[S];if(-1!==s.indexOf(F)){var q=encodeURIComponent(F);q===F&&(q=escape(F)),s=s.split(F).join(q)}}var z=s.indexOf("#");-1!==z&&(this.hash=s.substr(z),s=s.slice(0,z));var H=s.indexOf("?");if(-1!==H?(this.search=s.substr(H),this.query=s.substr(H+1),e&&(this.query=E.parse(this.query)),s=s.slice(0,H)):e&&(this.search="",this.query={}),s&&(this.pathname=s),x[d]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){var B=this.pathname||"",J=this.search||"";this.path=B+J}return this.href=this.format(),this},r.prototype.format=function(){var t=this.auth||"";t&&(t=encodeURIComponent(t),t=t.replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",r=this.hash||"",i=!1,o="";this.host?i=t+this.host:this.hostname&&(i=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(i+=":"+this.port)),this.query&&c.isObject(this.query)&&Object.keys(this.query).length&&(o=E.stringify(this.query));var a=this.search||o&&"?"+o||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||x[e])&&!1!==i?(i="//"+(i||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):i||(i=""),r&&"#"!==r.charAt(0)&&(r="#"+r),a&&"?"!==a.charAt(0)&&(a="?"+a),n=n.replace(/[?#]/g,function(t){return encodeURIComponent(t)}),a=a.replace("#","%23"),e+i+n+a+r},r.prototype.resolve=function(t){return this.resolveObject(i(t,!1,!0)).format()},r.prototype.resolveObject=function(t){if(c.isString(t)){var e=new r;e.parse(t,!1,!0),t=e}for(var n=new r,i=Object.keys(this),o=0;o<i.length;o++){var a=i[o];n[a]=this[a]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var s=Object.keys(t),u=0;u<s.length;u++){var f=s[u];"protocol"!==f&&(n[f]=t[f])}return x[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!x[t.protocol]){for(var l=Object.keys(t),p=0;p<l.length;p++){var h=l[p];n[h]=t[h]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||w[t.protocol])n.pathname=t.pathname;else{for(var d=(t.pathname||"").split("/");d.length&&!(t.host=d.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var v=n.pathname||"",g=n.search||"";n.path=v+g}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var m=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),_=y||m||n.host&&t.pathname,b=_,E=n.pathname&&n.pathname.split("/")||[],d=t.pathname&&t.pathname.split("/")||[],O=n.protocol&&!x[n.protocol];if(O&&(n.hostname="",n.port=null,n.host&&(""===E[0]?E[0]=n.host:E.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===d[0]?d[0]=t.host:d.unshift(t.host)),t.host=null),_=_&&(""===d[0]||""===E[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,E=d;else if(d.length)E||(E=[]),E.pop(),E=E.concat(d),n.search=t.search,n.query=t.query;else if(!c.isNullOrUndefined(t.search)){if(O){n.hostname=n.host=E.shift();var C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");C&&(n.auth=C.shift(),n.host=n.hostname=C.shift())}return n.search=t.search,n.query=t.query,c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var S=E.slice(-1)[0],A=(n.host||t.host||E.length>1)&&("."===S||".."===S)||""===S,k=0,N=E.length;N>=0;N--)S=E[N],"."===S?E.splice(N,1):".."===S?(E.splice(N,1),k++):k&&(E.splice(N,1),k--);if(!_&&!b)for(;k--;k)E.unshift("..");!_||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),A&&"/"!==E.join("/").substr(-1)&&E.push("");var T=""===E[0]||E[0]&&"/"===E[0].charAt(0);if(O){n.hostname=n.host=T?"":E.length?E.shift():"";var C=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@");C&&(n.auth=C.shift(),n.host=n.hostname=C.shift())}return _=_||n.host&&E.length,_&&!T&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),c.isNull(n.pathname)&&c.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},r.prototype.parseHost=function(){var t=this.host,e=l.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var i=n(26),o=r(i),a=n(27),s=r(a);new o.default({el:"#app",render:function(t){return t(s.default)}})},function(t,e,n){"use strict";(function(e,n){/*! * Vue.js v2.4.4 * (c) 2014-2017 Evan You * Released under the MIT License. */ -function r(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return!1===t}function s(t){return"string"==typeof t||"number"==typeof t||"boolean"==typeof t}function u(t){return null!==t&&"object"==typeof t}function c(t){return"[object Object]"===Qi.call(t)}function f(t){return"[object RegExp]"===Qi.call(t)}function l(t){var e=parseFloat(t);return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function d(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function v(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function g(t,e){return no.call(t,e)}function m(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function y(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function _(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function b(t,e){for(var n in e)t[n]=e[n];return t}function w(t){for(var e={},n=0;n<t.length;n++)t[n]&&b(e,t[n]);return e}function x(t,e,n){}function E(t,e){if(t===e)return!0;var n=u(t),r=u(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var i=Array.isArray(t),o=Array.isArray(e);if(i&&o)return t.length===e.length&&t.every(function(t,n){return E(t,e[n])});if(i||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every(function(n){return E(t[n],e[n])})}catch(t){return!1}}function O(t,e){for(var n=0;n<t.length;n++)if(E(t[n],e))return n;return-1}function C(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function S(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function A(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function k(t){if(!go.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}function N(t,n,r){if(ho.errorHandler)ho.errorHandler.call(null,t,n,r);else{if("production"!==e.env.NODE_ENV&&mo("Error in "+r+': "'+t.toString()+'"',n),!So||"undefined"==typeof console)throw t;console.error(t)}}function T(t){return"function"==typeof t&&/native code/.test(t.toString())}function j(t){zo.target&&Ho.push(zo.target),zo.target=t}function R(){zo.target=Ho.pop()}function P(t,e,n){t.__proto__=e}function $(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];A(t,o,e[o])}}function D(t,e){if(u(t)){var n;return g(t,"__ob__")&&t.__ob__ instanceof Go?n=t.__ob__:Ko.shouldConvert&&!Uo()&&(Array.isArray(t)||c(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new Go(t)),e&&n&&n.vmCount++,n}}function L(t,n,r,i,o){var a=new zo,s=Object.getOwnPropertyDescriptor(t,n);if(!s||!1!==s.configurable){var u=s&&s.get,c=s&&s.set,f=!o&&D(r);Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var e=u?u.call(t):r;return zo.target&&(a.depend(),f&&(f.dep.depend(),Array.isArray(e)&&U(e))),e},set:function(n){var s=u?u.call(t):r;n===s||n!==n&&s!==s||("production"!==e.env.NODE_ENV&&i&&i(),c?c.call(t,n):r=n,f=!o&&D(n),a.notify())}})}}function I(t,n,r){if(Array.isArray(t)&&l(n))return t.length=Math.max(t.length,n),t.splice(n,1,r),r;if(g(t,n))return t[n]=r,r;var i=t.__ob__;return t._isVue||i&&i.vmCount?("production"!==e.env.NODE_ENV&&mo("Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfront in the data option."),r):i?(L(i.value,n,r),i.dep.notify(),r):(t[n]=r,r)}function M(t,n){if(Array.isArray(t)&&l(n))return void t.splice(n,1);var r=t.__ob__;if(t._isVue||r&&r.vmCount)return void("production"!==e.env.NODE_ENV&&mo("Avoid deleting properties on a Vue instance or its root $data - just set it to null."));g(t,n)&&(delete t[n],r&&r.dep.notify())}function U(t){for(var e=void 0,n=0,r=t.length;n<r;n++)e=t[n],e&&e.__ob__&&e.__ob__.dep.depend(),Array.isArray(e)&&U(e)}function B(t,e){if(!e)return t;for(var n,r,i,o=Object.keys(e),a=0;a<o.length;a++)n=o[a],r=t[n],i=e[n],g(t,n)?c(r)&&c(i)&&B(r,i):I(t,n,i);return t}function V(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):t;return r?B(r,i):i}:void 0:e?t?function(){return B("function"==typeof e?e.call(this):e,"function"==typeof t?t.call(this):t)}:e:t}function F(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function q(t,e){var n=Object.create(t||null);return e?b(n,e):n}function z(t){for(var e in t.components){var n=e.toLowerCase();(to(n)||ho.isReservedTag(n))&&mo("Do not use built-in or reserved HTML elements as component id: "+e)}}function H(t){var n=t.props;if(n){var r,i,o,a={};if(Array.isArray(n))for(r=n.length;r--;)i=n[r],"string"==typeof i?(o=io(i),a[o]={type:null}):"production"!==e.env.NODE_ENV&&mo("props must be strings when using array syntax.");else if(c(n))for(var s in n)i=n[s],o=io(s),a[o]=c(i)?i:{type:i};t.props=a}}function J(t){var e=t.inject;if(Array.isArray(e))for(var n=t.inject={},r=0;r<e.length;r++)n[e[r]]=e[r]}function W(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function Y(t,n,r){function i(e){var i=Zo[e]||ta;c[e]=i(t[e],n[e],r,e)}"production"!==e.env.NODE_ENV&&z(n),"function"==typeof n&&(n=n.options),H(n),J(n),W(n);var o=n.extends;if(o&&(t=Y(t,o,r)),n.mixins)for(var a=0,s=n.mixins.length;a<s;a++)t=Y(t,n.mixins[a],r);var u,c={};for(u in t)i(u);for(u in n)g(t,u)||i(u);return c}function K(t,n,r,i){if("string"==typeof r){var o=t[n];if(g(o,r))return o[r];var a=io(r);if(g(o,a))return o[a];var s=oo(a);if(g(o,s))return o[s];var u=o[r]||o[a]||o[s];return"production"!==e.env.NODE_ENV&&i&&!u&&mo("Failed to resolve "+n.slice(0,-1)+": "+r,t),u}}function G(t,n,r,i){var o=n[t],a=!g(r,t),s=r[t];if(et(Boolean,o.type)&&(a&&!g(o,"default")?s=!1:et(String,o.type)||""!==s&&s!==so(t)||(s=!0)),void 0===s){s=Z(i,o,t);var u=Ko.shouldConvert;Ko.shouldConvert=!0,D(s),Ko.shouldConvert=u}return"production"!==e.env.NODE_ENV&&X(o,t,s,i,a),s}function Z(t,n,r){if(g(n,"default")){var i=n.default;return"production"!==e.env.NODE_ENV&&u(i)&&mo('Invalid default value for prop "'+r+'": Props with type Object/Array must use a factory function to return the default value.',t),t&&t.$options.propsData&&void 0===t.$options.propsData[r]&&void 0!==t._props[r]?t._props[r]:"function"==typeof i&&"Function"!==tt(n.type)?i.call(t):i}}function X(t,e,n,r,i){if(t.required&&i)return void mo('Missing required prop: "'+e+'"',r);if(null!=n||t.required){var o=t.type,a=!o||!0===o,s=[];if(o){Array.isArray(o)||(o=[o]);for(var u=0;u<o.length&&!a;u++){var c=Q(n,o[u]);s.push(c.expectedType||""),a=c.valid}}if(!a)return void mo('Invalid prop: type check failed for prop "'+e+'". Expected '+s.map(oo).join(", ")+", got "+Object.prototype.toString.call(n).slice(8,-1)+".",r);var f=t.validator;f&&(f(n)||mo('Invalid prop: custom validator check failed for prop "'+e+'".',r))}}function Q(t,e){var n,r=tt(e);if(ea.test(r)){var i=typeof t;n=i===r.toLowerCase(),n||"object"!==i||(n=t instanceof e)}else n="Object"===r?c(t):"Array"===r?Array.isArray(t):t instanceof e;return{valid:n,expectedType:r}}function tt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function et(t,e){if(!Array.isArray(e))return tt(e)===tt(t);for(var n=0,r=e.length;n<r;n++)if(tt(e[n])===tt(t))return!0;return!1}function nt(t){return new fa(void 0,void 0,void 0,String(t))}function rt(t,e){var n=new fa(t.tag,t.data,t.children,t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return n.ns=t.ns,n.isStatic=t.isStatic,n.key=t.key,n.isComment=t.isComment,n.isCloned=!0,e&&t.children&&(n.children=it(t.children)),n}function it(t,e){for(var n=t.length,r=new Array(n),i=0;i<n;i++)r[i]=rt(t[i],e);return r}function ot(t){function e(){var t=arguments,n=e.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=n.slice(),i=0;i<r.length;i++)r[i].apply(null,t)}return e.fns=t,e}function at(t,e){return t.plain?-1:e.plain?1:0}function st(t,n,i,o,a){var s,u,c,f,l=[],p=!1;for(s in t)u=t[s],c=n[s],f=da(s),f.plain||(p=!0),r(u)?"production"!==e.env.NODE_ENV&&mo('Invalid handler for event "'+f.name+'": got '+String(u),a):r(c)?(r(u.fns)&&(u=t[s]=ot(u)),f.handler=u,l.push(f)):u!==c&&(c.fns=u,t[s]=c);if(l.length){p&&l.sort(at);for(var h=0;h<l.length;h++){var d=l[h];i(d.name,d.handler,d.once,d.capture,d.passive)}}for(s in n)r(t[s])&&(f=da(s),o(f.name,n[s],f.capture))}function ut(t,e,n){function a(){n.apply(this,arguments),v(s.fns,a)}var s,u=t[e];r(u)?s=ot([a]):i(u.fns)&&o(u.merged)?(s=u,s.fns.push(a)):s=ot([u,a]),s.merged=!0,t[e]=s}function ct(t,n,o){var a=n.options.props;if(!r(a)){var s={},u=t.attrs,c=t.props;if(i(u)||i(c))for(var f in a){var l=so(f);if("production"!==e.env.NODE_ENV){var p=f.toLowerCase();f!==p&&u&&g(u,p)&&yo('Prop "'+p+'" is passed to component '+_o(o||n)+', but the declared prop name is "'+f+'". Note that HTML attributes are case-insensitive and camelCased props need to use their kebab-case equivalents when using in-DOM templates. You should probably use "'+l+'" instead of "'+f+'".')}ft(s,c,f,l,!0)||ft(s,u,f,l,!1)}return s}}function ft(t,e,n,r,o){if(i(e)){if(g(e,n))return t[n]=e[n],o||delete e[n],!0;if(g(e,r))return t[n]=e[r],o||delete e[r],!0}return!1}function lt(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}function pt(t){return s(t)?[nt(t)]:Array.isArray(t)?dt(t):void 0}function ht(t){return i(t)&&i(t.text)&&a(t.isComment)}function dt(t,e){var n,a,u,c=[];for(n=0;n<t.length;n++)a=t[n],r(a)||"boolean"==typeof a||(u=c[c.length-1],Array.isArray(a)?c.push.apply(c,dt(a,(e||"")+"_"+n)):s(a)?ht(u)?u.text+=String(a):""!==a&&c.push(nt(a)):ht(a)&&ht(u)?c[c.length-1]=nt(u.text+a.text):(o(t._isVList)&&i(a.tag)&&r(a.key)&&i(e)&&(a.key="__vlist"+e+"_"+n+"__"),c.push(a)));return c}function vt(t,e){return t.__esModule&&t.default&&(t=t.default),u(t)?e.extend(t):t}function gt(t,e,n,r,i){var o=ha();return o.asyncFactory=t,o.asyncMeta={data:e,context:n,children:r,tag:i},o}function mt(t,n,a){if(o(t.error)&&i(t.errorComp))return t.errorComp;if(i(t.resolved))return t.resolved;if(o(t.loading)&&i(t.loadingComp))return t.loadingComp;if(!i(t.contexts)){var s=t.contexts=[a],c=!0,f=function(){for(var t=0,e=s.length;t<e;t++)s[t].$forceUpdate()},l=C(function(e){t.resolved=vt(e,n),c||f()}),p=C(function(n){"production"!==e.env.NODE_ENV&&mo("Failed to resolve async component: "+String(t)+(n?"\nReason: "+n:"")),i(t.errorComp)&&(t.error=!0,f())}),h=t(l,p);return u(h)&&("function"==typeof h.then?r(t.resolved)&&h.then(l,p):i(h.component)&&"function"==typeof h.component.then&&(h.component.then(l,p),i(h.error)&&(t.errorComp=vt(h.error,n)),i(h.loading)&&(t.loadingComp=vt(h.loading,n),0===h.delay?t.loading=!0:setTimeout(function(){r(t.resolved)&&r(t.error)&&(t.loading=!0,f())},h.delay||200)),i(h.timeout)&&setTimeout(function(){r(t.resolved)&&p("production"!==e.env.NODE_ENV?"timeout ("+h.timeout+"ms)":null)},h.timeout))),c=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(a)}function yt(t){return t.isComment&&t.asyncFactory}function _t(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(i(n)&&(i(n.componentOptions)||yt(n)))return n}}function bt(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Et(t,e)}function wt(t,e,n){n?pa.$once(t,e):pa.$on(t,e)}function xt(t,e){pa.$off(t,e)}function Et(t,e,n){pa=t,st(e,n||{},wt,xt,t)}function Ot(t,e){var n={};if(!t)return n;for(var r=[],i=0,o=t.length;i<o;i++){var a=t[i],s=a.data;if(s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,a.context!==e&&a.functionalContext!==e||!s||null==s.slot)r.push(a);else{var u=a.data.slot,c=n[u]||(n[u]=[]);"template"===a.tag?c.push.apply(c,a.children):c.push(a)}}return r.every(Ct)||(n.default=r),n}function Ct(t){return t.isComment||" "===t.text}function St(t,e){e=e||{};for(var n=0;n<t.length;n++)Array.isArray(t[n])?St(t[n],e):e[t[n].key]=t[n].fn;return e}function At(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function kt(t,n,r){t.$el=n,t.$options.render||(t.$options.render=ha,"production"!==e.env.NODE_ENV&&(t.$options.template&&"#"!==t.$options.template.charAt(0)||t.$options.el||n?mo("You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.",t):mo("Failed to mount component: template or render function not defined.",t))),Pt(t,"beforeMount");var i;return i="production"!==e.env.NODE_ENV&&ho.performance&&Xo?function(){var e=t._name,n=t._uid,i="vue-perf-start:"+n,o="vue-perf-end:"+n;Xo(i);var a=t._render();Xo(o),Qo(e+" render",i,o),Xo(i),t._update(a,r),Xo(o),Qo(e+" patch",i,o)}:function(){t._update(t._render(),r)},t._watcher=new Sa(t,i,x),r=!1,null==t.$vnode&&(t._isMounted=!0,Pt(t,"mounted")),t}function Nt(t,n,r,i,o){"production"!==e.env.NODE_ENV&&(ga=!0);var a=!!(o||t.$options._renderChildren||i.data.scopedSlots||t.$scopedSlots!==vo);if(t.$options._parentVnode=i,t.$vnode=i,t._vnode&&(t._vnode.parent=i),t.$options._renderChildren=o,t.$attrs=i.data&&i.data.attrs||vo,t.$listeners=r||vo,n&&t.$options.props){Ko.shouldConvert=!1;for(var s=t._props,u=t.$options._propKeys||[],c=0;c<u.length;c++){var f=u[c];s[f]=G(f,t.$options.props,n,t)}Ko.shouldConvert=!0,t.$options.propsData=n}if(r){var l=t.$options._parentListeners;t.$options._parentListeners=r,Et(t,r,l)}a&&(t.$slots=Ot(o,i.context),t.$forceUpdate()),"production"!==e.env.NODE_ENV&&(ga=!1)}function Tt(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function jt(t,e){if(e){if(t._directInactive=!1,Tt(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)jt(t.$children[n]);Pt(t,"activated")}}function Rt(t,e){if(!(e&&(t._directInactive=!0,Tt(t))||t._inactive)){t._inactive=!0;for(var n=0;n<t.$children.length;n++)Rt(t.$children[n]);Pt(t,"deactivated")}}function Pt(t,e){var n=t.$options[e];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(t)}catch(n){N(n,t,e+" hook")}t._hasHookEvent&&t.$emit("hook:"+e)}function $t(){Oa=ya.length=_a.length=0,ba={},"production"!==e.env.NODE_ENV&&(wa={}),xa=Ea=!1}function Dt(){Ea=!0;var t,n;for(ya.sort(function(t,e){return t.id-e.id}),Oa=0;Oa<ya.length;Oa++)if(t=ya[Oa],n=t.id,ba[n]=null,t.run(),"production"!==e.env.NODE_ENV&&null!=ba[n]&&(wa[n]=(wa[n]||0)+1,wa[n]>ma)){mo("You may have an infinite update loop "+(t.user?'in watcher with expression "'+t.expression+'"':"in a component render function."),t.vm);break}var r=_a.slice(),i=ya.slice();$t(),Mt(r),Lt(i),Bo&&ho.devtools&&Bo.emit("flush")}function Lt(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&Pt(r,"updated")}}function It(t){t._inactive=!1,_a.push(t)}function Mt(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,jt(t[e],!0)}function Ut(t){var e=t.id;if(null==ba[e]){if(ba[e]=!0,Ea){for(var n=ya.length-1;n>Oa&&ya[n].id>t.id;)n--;ya.splice(n+1,0,t)}else ya.push(t);xa||(xa=!0,Fo(Dt))}}function Bt(t){Aa.clear(),Vt(t,Aa)}function Vt(t,e){var n,r,i=Array.isArray(t);if((i||u(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(i)for(n=t.length;n--;)Vt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)Vt(t[r[n]],e)}}function Ft(t,e,n){ka.get=function(){return this[e][n]},ka.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ka)}function qt(t){t._watchers=[];var e=t.$options;e.props&&Ht(t,e.props),e.methods&&Zt(t,e.methods),e.data?Jt(t):D(t._data={},!0),e.computed&&Yt(t,e.computed),e.watch&&e.watch!==$o&&Xt(t,e.watch)}function zt(t,e){c(t.$options[e])||mo('component option "'+e+'" should be an object.',t)}function Ht(t,n){var r=t.$options.propsData||{},i=t._props={},o=t.$options._propKeys=[],a=!t.$parent;Ko.shouldConvert=a;for(var s in n)!function(a){o.push(a);var s=G(a,n,r,t);"production"!==e.env.NODE_ENV?((eo(a)||ho.isReservedAttr(a))&&mo('"'+a+'" is a reserved attribute and cannot be used as component prop.',t),L(i,a,s,function(){t.$parent&&!ga&&mo("Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: \""+a+'"',t)})):L(i,a,s),a in t||Ft(t,"_props",a)}(s);Ko.shouldConvert=!0}function Jt(t){var n=t.$options.data;n=t._data="function"==typeof n?Wt(n,t):n||{},c(n)||(n={},"production"!==e.env.NODE_ENV&&mo("data functions should return an object:\nhttps://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function",t));for(var r=Object.keys(n),i=t.$options.props,o=t.$options.methods,a=r.length;a--;){var s=r[a];"production"!==e.env.NODE_ENV&&o&&g(o,s)&&mo('Method "'+s+'" has already been defined as a data property.',t),i&&g(i,s)?"production"!==e.env.NODE_ENV&&mo('The data property "'+s+'" is already declared as a prop. Use prop default value instead.',t):S(s)||Ft(t,"_data",s)}D(n,!0)}function Wt(t,e){try{return t.call(e)}catch(t){return N(t,e,"data()"),{}}}function Yt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"computed");var r=t._computedWatchers=Object.create(null),i=Uo();for(var o in n){var a=n[o],s="function"==typeof a?a:a.get;"production"!==e.env.NODE_ENV&&null==s&&mo('Getter is missing for computed property "'+o+'".',t),i||(r[o]=new Sa(t,s||x,x,Na)),o in t?"production"!==e.env.NODE_ENV&&(o in t.$data?mo('The computed property "'+o+'" is already defined in data.',t):t.$options.props&&o in t.$options.props&&mo('The computed property "'+o+'" is already defined as a prop.',t)):Kt(t,o,a)}}function Kt(t,n,r){var i=!Uo();"function"==typeof r?(ka.get=i?Gt(n):r,ka.set=x):(ka.get=r.get?i&&!1!==r.cache?Gt(n):r.get:x,ka.set=r.set?r.set:x),"production"!==e.env.NODE_ENV&&ka.set===x&&(ka.set=function(){mo('Computed property "'+n+'" was assigned to but it has no setter.',this)}),Object.defineProperty(t,n,ka)}function Gt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),zo.target&&e.depend(),e.value}}function Zt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"methods");var r=t.$options.props;for(var i in n)"production"!==e.env.NODE_ENV&&(null==n[i]&&mo('Method "'+i+'" has an undefined value in the component definition. Did you reference the function correctly?',t),r&&g(r,i)&&mo('Method "'+i+'" has already been defined as a prop.',t),i in t&&S(i)&&mo('Method "'+i+'" conflicts with an existing Vue instance method. Avoid defining component methods that start with _ or $.')),t[i]=null==n[i]?x:y(n[i],t)}function Xt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"watch");for(var r in n){var i=n[r];if(Array.isArray(i))for(var o=0;o<i.length;o++)Qt(t,r,i[o]);else Qt(t,r,i)}}function Qt(t,e,n,r){return c(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function te(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}function ee(t){var n=ne(t.$options.inject,t);n&&(Ko.shouldConvert=!1,Object.keys(n).forEach(function(r){"production"!==e.env.NODE_ENV?L(t,r,n[r],function(){mo('Avoid mutating an injected value directly since the changes will be overwritten whenever the provided component re-renders. injection being mutated: "'+r+'"',t)}):L(t,r,n[r])}),Ko.shouldConvert=!0)}function ne(t,n){if(t){for(var r=Object.create(null),i=Vo?Reflect.ownKeys(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}):Object.keys(t),o=0;o<i.length;o++){for(var a=i[o],s=t[a],u=n;u;){if(u._provided&&s in u._provided){r[a]=u._provided[s];break}u=u.$parent}"production"===e.env.NODE_ENV||u||mo('Injection "'+a+'" not found',n)}return r}}function re(t,e,n,r,o){var a={},s=t.options.props;if(i(s))for(var u in s)a[u]=G(u,s,e||vo);else i(n.attrs)&&ie(a,n.attrs),i(n.props)&&ie(a,n.props);var c=Object.create(r),f=function(t,e,n,r){return fe(c,t,e,n,r,!0)},l=t.options.render.call(null,f,{data:n,props:a,children:o,parent:r,listeners:n.on||vo,injections:ne(t.options.inject,r),slots:function(){return Ot(o,r)}});return l instanceof fa&&(l.functionalContext=r,l.functionalOptions=t.options,n.slot&&((l.data||(l.data={})).slot=n.slot)),l}function ie(t,e){for(var n in e)t[io(n)]=e[n]}function oe(t,n,a,s,c){if(!r(t)){var f=a.$options._base;if(u(t)&&(t=f.extend(t)),"function"!=typeof t)return void("production"!==e.env.NODE_ENV&&mo("Invalid Component definition: "+String(t),a));var l;if(r(t.cid)&&(l=t,void 0===(t=mt(l,f,a))))return gt(l,n,a,s,c);n=n||{},Ce(t),i(n.model)&&ce(t.options,n);var p=ct(n,t,c);if(o(t.options.functional))return re(t,p,n,a,s);var h=n.on;if(n.on=n.nativeOn,o(t.options.abstract)){var d=n.slot;n={},d&&(n.slot=d)}se(n);var v=t.options.name||c;return new fa("vue-component-"+t.cid+(v?"-"+v:""),n,void 0,void 0,void 0,a,{Ctor:t,propsData:p,listeners:h,tag:c,children:s},l)}}function ae(t,e,n,r){var o=t.componentOptions,a={_isComponent:!0,parent:e,propsData:o.propsData,_componentTag:o.tag,_parentVnode:t,_parentListeners:o.listeners,_renderChildren:o.children,_parentElm:n||null,_refElm:r||null},s=t.data.inlineTemplate;return i(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new o.Ctor(a)}function se(t){t.hook||(t.hook={});for(var e=0;e<ja.length;e++){var n=ja[e],r=t.hook[n],i=Ta[n];t.hook[n]=r?ue(i,r):i}}function ue(t,e){return function(n,r,i,o){t(n,r,i,o),e(n,r,i,o)}}function ce(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.props||(e.props={}))[n]=e.model.value;var o=e.on||(e.on={});i(o[r])?o[r]=[e.model.callback].concat(o[r]):o[r]=e.model.callback}function fe(t,e,n,r,i,a){return(Array.isArray(n)||s(n))&&(i=r,r=n,n=void 0),o(a)&&(i=Pa),le(t,e,n,r,i)}function le(t,n,r,o,a){if(i(r)&&i(r.__ob__))return"production"!==e.env.NODE_ENV&&mo("Avoid using observed data object as vnode data: "+JSON.stringify(r)+"\nAlways create fresh vnode data objects in each render!",t),ha();if(i(r)&&i(r.is)&&(n=r.is),!n)return ha();"production"!==e.env.NODE_ENV&&i(r)&&i(r.key)&&!s(r.key)&&mo("Avoid using non-primitive value as key, use string/number value instead.",t),Array.isArray(o)&&"function"==typeof o[0]&&(r=r||{},r.scopedSlots={default:o[0]},o.length=0),a===Pa?o=pt(o):a===Ra&&(o=lt(o));var u,c;if("string"==typeof n){var f;c=t.$vnode&&t.$vnode.ns||ho.getTagNamespace(n),u=ho.isReservedTag(n)?new fa(ho.parsePlatformTagName(n),r,o,void 0,void 0,t):i(f=K(t.$options,"components",n))?oe(f,r,t,o,n):new fa(n,r,o,void 0,void 0,t)}else u=oe(n,r,t,o);return i(u)?(c&&pe(u,c),u):ha()}function pe(t,e){if(t.ns=e,"foreignObject"!==t.tag&&i(t.children))for(var n=0,o=t.children.length;n<o;n++){var a=t.children[n];i(a.tag)&&r(a.ns)&&pe(a,e)}}function he(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;r<o;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(u(t))for(a=Object.keys(t),n=new Array(a.length),r=0,o=a.length;r<o;r++)s=a[r],n[r]=e(t[s],s,r);return i(n)&&(n._isVList=!0),n}function de(t,n,r,i){var o=this.$scopedSlots[t];if(o)return r=r||{},i&&(r=b(b({},i),r)),o(r)||n;var a=this.$slots[t];return a&&"production"!==e.env.NODE_ENV&&(a._rendered&&mo('Duplicate presence of slot "'+t+'" found in the same render tree - this will likely cause render errors.',this),a._rendered=!0),a||n}function ve(t){return K(this.$options,"filters",t,!0)||co}function ge(t,e,n){var r=ho.keyCodes[e]||n;return Array.isArray(r)?-1===r.indexOf(t):r!==t}function me(t,n,r,i,o){if(r)if(u(r)){Array.isArray(r)&&(r=w(r));var a;for(var s in r)!function(e){if("class"===e||"style"===e||eo(e))a=t;else{var s=t.attrs&&t.attrs.type;a=i||ho.mustUseProp(n,s,e)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}if(!(e in a)&&(a[e]=r[e],o)){(t.on||(t.on={}))["update:"+e]=function(t){r[e]=t}}}(s)}else"production"!==e.env.NODE_ENV&&mo("v-bind without argument expects an Object or Array value",this);return t}function ye(t,e){var n=this._staticTrees[t];return n&&!e?Array.isArray(n)?it(n):rt(n):(n=this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy),be(n,"__static__"+t,!1),n)}function _e(t,e,n){return be(t,"__once__"+e+(n?"_"+n:""),!0),t}function be(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&we(t[r],e+"_"+r,n);else we(t,e,n)}function we(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function xe(t,n){if(n)if(c(n)){var r=t.on=t.on?b({},t.on):{};for(var i in n){var o=r[i],a=n[i];r[i]=o?[].concat(a,o):a}}else"production"!==e.env.NODE_ENV&&mo("v-on without argument expects an Object value",this);return t}function Ee(t){t._vnode=null,t._staticTrees=null;var n=t.$vnode=t.$options._parentVnode,r=n&&n.context;t.$slots=Ot(t.$options._renderChildren,r),t.$scopedSlots=vo,t._c=function(e,n,r,i){return fe(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return fe(t,e,n,r,i,!0)};var i=n&&n.data;"production"!==e.env.NODE_ENV?(L(t,"$attrs",i&&i.attrs||vo,function(){!ga&&mo("$attrs is readonly.",t)},!0),L(t,"$listeners",t.$options._parentListeners||vo,function(){!ga&&mo("$listeners is readonly.",t)},!0)):(L(t,"$attrs",i&&i.attrs||vo,null,!0),L(t,"$listeners",t.$options._parentListeners||vo,null,!0))}function Oe(t,e){var n=t.$options=Object.create(t.constructor.options);n.parent=e.parent,n.propsData=e.propsData,n._parentVnode=e._parentVnode,n._parentListeners=e._parentListeners,n._renderChildren=e._renderChildren,n._componentTag=e._componentTag,n._parentElm=e._parentElm,n._refElm=e._refElm,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}function Ce(t){var e=t.options;if(t.super){var n=Ce(t.super);if(n!==t.superOptions){t.superOptions=n;var r=Se(t);r&&b(t.extendOptions,r),e=t.options=Y(n,t.extendOptions),e.name&&(e.components[e.name]=t)}}return e}function Se(t){var e,n=t.options,r=t.extendOptions,i=t.sealedOptions;for(var o in n)n[o]!==i[o]&&(e||(e={}),e[o]=Ae(n[o],r[o],i[o]));return e}function Ae(t,e,n){if(Array.isArray(t)){var r=[];n=Array.isArray(n)?n:[n],e=Array.isArray(e)?e:[e];for(var i=0;i<t.length;i++)(e.indexOf(t[i])>=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function ke(t){"production"===e.env.NODE_ENV||this instanceof ke||mo("Vue is a constructor and should be called with the `new` keyword"),this._init(t)}function Ne(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=_(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function Te(t){t.mixin=function(t){return this.options=Y(this.options,t),this}}function je(t){t.cid=0;var n=1;t.extend=function(t){t=t||{};var r=this,i=r.cid,o=t._Ctor||(t._Ctor={});if(o[i])return o[i];var a=t.name||r.options.name;"production"!==e.env.NODE_ENV&&(/^[a-zA-Z][\w-]*$/.test(a)||mo('Invalid component name: "'+a+'". Component names can only contain alphanumeric characters and the hyphen, and must start with a letter.'));var s=function(t){this._init(t)};return s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.cid=n++,s.options=Y(r.options,t),s.super=r,s.options.props&&Re(s),s.options.computed&&Pe(s),s.extend=r.extend,s.mixin=r.mixin,s.use=r.use,lo.forEach(function(t){s[t]=r[t]}),a&&(s.options.components[a]=s),s.superOptions=r.options,s.extendOptions=t,s.sealedOptions=b({},s.options),o[i]=s,s}}function Re(t){var e=t.options.props;for(var n in e)Ft(t.prototype,"_props",n)}function Pe(t){var e=t.options.computed;for(var n in e)Kt(t.prototype,n,e[n])}function $e(t){lo.forEach(function(n){t[n]=function(t,r){return r?("production"!==e.env.NODE_ENV&&"component"===n&&ho.isReservedTag(t)&&mo("Do not use built-in or reserved HTML elements as component id: "+t),"component"===n&&c(r)&&(r.name=r.name||t,r=this.options._base.extend(r)),"directive"===n&&"function"==typeof r&&(r={bind:r,update:r}),this.options[n+"s"][t]=r,r):this.options[n+"s"][t]}})}function De(t){return t&&(t.Ctor.options.name||t.tag)}function Le(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Ie(t,e,n){for(var r in t){var i=t[r];if(i){var o=De(i.componentOptions);o&&!n(o)&&(i!==e&&Me(i),t[r]=null)}}}function Me(t){t&&t.componentInstance.$destroy()}function Ue(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)r=r.componentInstance._vnode,r.data&&(e=Be(r.data,e));for(;i(n=n.parent);)n.data&&(e=Be(e,n.data));return Ve(e.staticClass,e.class)}function Be(t,e){return{staticClass:Fe(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Ve(t,e){return i(t)||i(e)?Fe(t,qe(e)):""}function Fe(t,e){return t?e?t+" "+e:t:e||""}function qe(t){return Array.isArray(t)?ze(t):u(t)?He(t):"string"==typeof t?t:""}function ze(t){for(var e,n="",r=0,o=t.length;r<o;r++)i(e=qe(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}function He(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}function Je(t){return is(t)?"svg":"math"===t?"math":void 0}function We(t){if(!So)return!0;if(as(t))return!1;if(t=t.toLowerCase(),null!=ss[t])return ss[t];var e=document.createElement(t);return t.indexOf("-")>-1?ss[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ss[t]=/HTMLUnknownElement/.test(e.toString())}function Ye(t){if("string"==typeof t){var n=document.querySelector(t);return n||("production"!==e.env.NODE_ENV&&mo("Cannot find element: "+t),document.createElement("div"))}return t}function Ke(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Ge(t,e){return document.createElementNS(ns[t],e)}function Ze(t){return document.createTextNode(t)}function Xe(t){return document.createComment(t)}function Qe(t,e,n){t.insertBefore(e,n)}function tn(t,e){t.removeChild(e)}function en(t,e){t.appendChild(e)}function nn(t){return t.parentNode}function rn(t){return t.nextSibling}function on(t){return t.tagName}function an(t,e){t.textContent=e}function sn(t,e,n){t.setAttribute(e,n)}function un(t,e){var n=t.data.ref;if(n){var r=t.context,i=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?v(o[n],i):o[n]===i&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}function cn(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&fn(t,e)||o(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function fn(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,o=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===o||us(r)&&us(o)}function ln(t,e,n){var r,o,a={};for(r=e;r<=n;++r)o=t[r].key,i(o)&&(a[o]=r);return a}function pn(t,e){(t.data.directives||e.data.directives)&&hn(t,e)}function hn(t,e){var n,r,i,o=t===ls,a=e===ls,s=dn(t.data.directives,t.context),u=dn(e.data.directives,e.context),c=[],f=[];for(n in u)r=s[n],i=u[n],r?(i.oldValue=r.value,gn(i,"update",e,t),i.def&&i.def.componentUpdated&&f.push(i)):(gn(i,"bind",e,t),i.def&&i.def.inserted&&c.push(i));if(c.length){var l=function(){for(var n=0;n<c.length;n++)gn(c[n],"inserted",e,t)};o?ut(e.data.hook||(e.data.hook={}),"insert",l):l()}if(f.length&&ut(e.data.hook||(e.data.hook={}),"postpatch",function(){for(var n=0;n<f.length;n++)gn(f[n],"componentUpdated",e,t)}),!o)for(n in s)u[n]||gn(s[n],"unbind",t,t,a)}function dn(t,e){var n=Object.create(null);if(!t)return n;var r,i;for(r=0;r<t.length;r++)i=t[r],i.modifiers||(i.modifiers=ds),n[vn(i)]=i,i.def=K(e.$options,"directives",i.name,!0);return n}function vn(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function gn(t,e,n,r,i){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,r,i)}catch(r){N(r,n.context,"directive "+t.name+" "+e+" hook")}}function mn(t,e){var n=e.componentOptions;if(!(i(n)&&!1===n.Ctor.options.inheritAttrs||r(t.data.attrs)&&r(e.data.attrs))){var o,a,s=e.elm,u=t.data.attrs||{},c=e.data.attrs||{};i(c.__ob__)&&(c=e.data.attrs=b({},c));for(o in c)a=c[o],u[o]!==a&&yn(s,o,a);No&&c.value!==u.value&&yn(s,"value",c.value);for(o in u)r(c[o])&&(Qa(o)?s.removeAttributeNS(Xa,ts(o)):Ga(o)||s.removeAttribute(o))}}function yn(t,e,n){Za(e)?es(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Ga(e)?t.setAttribute(e,es(n)||"false"===n?"false":"true"):Qa(e)?es(n)?t.removeAttributeNS(Xa,ts(e)):t.setAttributeNS(Xa,e,n):es(n)?t.removeAttribute(e):t.setAttribute(e,n)}function _n(t,e){var n=e.elm,o=e.data,a=t.data;if(!(r(o.staticClass)&&r(o.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Ue(e),u=n._transitionClasses;i(u)&&(s=Fe(s,qe(u))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}function bn(t){function e(){(a||(a=[])).push(t.slice(d,i).trim()),d=i+1}var n,r,i,o,a,s=!1,u=!1,c=!1,f=!1,l=0,p=0,h=0,d=0;for(i=0;i<t.length;i++)if(r=n,n=t.charCodeAt(i),s)39===n&&92!==r&&(s=!1);else if(u)34===n&&92!==r&&(u=!1);else if(c)96===n&&92!==r&&(c=!1);else if(f)47===n&&92!==r&&(f=!1);else if(124!==n||124===t.charCodeAt(i+1)||124===t.charCodeAt(i-1)||l||p||h){switch(n){case 34:u=!0;break;case 39:s=!0;break;case 96:c=!0;break;case 40:h++;break;case 41:h--;break;case 91:p++;break;case 93:p--;break;case 123:l++;break;case 125:l--}if(47===n){for(var v=i-1,g=void 0;v>=0&&" "===(g=t.charAt(v));v--);g&&ys.test(g)||(f=!0)}}else void 0===o?(d=i+1,o=t.slice(0,i).trim()):e();if(void 0===o?o=t.slice(0,i).trim():0!==d&&e(),a)for(i=0;i<a.length;i++)o=wn(o,a[i]);return o}function wn(t,e){var n=e.indexOf("(");return n<0?'_f("'+e+'")('+t+")":'_f("'+e.slice(0,n)+'")('+t+","+e.slice(n+1)}function xn(t){console.error("[Vue compiler]: "+t)}function En(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function On(t,e,n){(t.props||(t.props=[])).push({name:e,value:n})}function Cn(t,e,n){(t.attrs||(t.attrs=[])).push({name:e,value:n})}function Sn(t,e,n,r,i,o){(t.directives||(t.directives=[])).push({name:e,rawName:n,value:r,arg:i,modifiers:o})}function An(t,n,r,i,o,a){"production"!==e.env.NODE_ENV&&a&&i&&i.prevent&&i.passive&&a("passive and prevent can't be used together. Passive handler can't prevent default event."),i&&i.capture&&(delete i.capture,n="!"+n),i&&i.once&&(delete i.once,n="~"+n),i&&i.passive&&(delete i.passive,n="&"+n);var s;i&&i.native?(delete i.native,s=t.nativeEvents||(t.nativeEvents={})):s=t.events||(t.events={});var u={value:r,modifiers:i},c=s[n];Array.isArray(c)?o?c.unshift(u):c.push(u):s[n]=c?o?[u,c]:[c,u]:u}function kn(t,e,n){var r=Nn(t,":"+e)||Nn(t,"v-bind:"+e);if(null!=r)return bn(r);if(!1!==n){var i=Nn(t,e);if(null!=i)return JSON.stringify(i)}}function Nn(t,e){var n;if(null!=(n=t.attrsMap[e]))for(var r=t.attrsList,i=0,o=r.length;i<o;i++)if(r[i].name===e){r.splice(i,1);break}return n}function Tn(t,e,n){var r=n||{},i=r.number,o=r.trim,a="$$v";o&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(a="_n("+a+")");var s=jn(e,a);t.model={value:"("+e+")",expression:'"'+e+'"',callback:"function ($$v) {"+s+"}"}}function jn(t,e){var n=Rn(t);return null===n.idx?t+"="+e:"$set("+n.exp+", "+n.idx+", "+e+")"}function Rn(t){if(Ua=t,Ma=Ua.length,Va=Fa=qa=0,t.indexOf("[")<0||t.lastIndexOf("]")<Ma-1)return{exp:t,idx:null};for(;!$n();)Ba=Pn(),Dn(Ba)?In(Ba):91===Ba&&Ln(Ba);return{exp:t.substring(0,Fa),idx:t.substring(Fa+1,qa)}}function Pn(){return Ua.charCodeAt(++Va)}function $n(){return Va>=Ma}function Dn(t){return 34===t||39===t}function Ln(t){var e=1;for(Fa=Va;!$n();)if(t=Pn(),Dn(t))In(t);else if(91===t&&e++,93===t&&e--,0===e){qa=Va;break}}function In(t){for(var e=t;!$n()&&(t=Pn())!==e;);}function Mn(t,n,r){za=r;var i=n.value,o=n.modifiers,a=t.tag,s=t.attrsMap.type;if("production"!==e.env.NODE_ENV){var u=t.attrsMap["v-bind:type"]||t.attrsMap[":type"];"input"===a&&u&&za('<input :type="'+u+'" v-model="'+i+'">:\nv-model does not support dynamic input types. Use v-if branches instead.'),"input"===a&&"file"===s&&za("<"+t.tag+' v-model="'+i+'" type="file">:\nFile inputs are read only. Use a v-on:change listener instead.')}if(t.component)return Tn(t,i,o),!1;if("select"===a)Vn(t,i,o);else if("input"===a&&"checkbox"===s)Un(t,i,o);else if("input"===a&&"radio"===s)Bn(t,i,o);else if("input"===a||"textarea"===a)Fn(t,i,o);else{if(!ho.isReservedTag(a))return Tn(t,i,o),!1;"production"!==e.env.NODE_ENV&&za("<"+t.tag+' v-model="'+i+"\">: v-model is not supported on this element type. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component.")}return!0}function Un(t,e,n){var r=n&&n.number,i=kn(t,"value")||"null",o=kn(t,"true-value")||"true",a=kn(t,"false-value")||"false";On(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),An(t,bs,"var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+e+"=$$a.concat([$$v]))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+jn(e,"$$c")+"}",null,!0)}function Bn(t,e,n){var r=n&&n.number,i=kn(t,"value")||"null";i=r?"_n("+i+")":i,On(t,"checked","_q("+e+","+i+")"),An(t,bs,jn(e,i),null,!0)}function Vn(t,e,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",o="var $$selectedVal = "+i+";";o=o+" "+jn(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),An(t,"change",o,null,!0)}function Fn(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,u=!o&&"range"!==r,c=o?"change":"range"===r?_s:"input",f="$event.target.value";s&&(f="$event.target.value.trim()"),a&&(f="_n("+f+")");var l=jn(e,f);u&&(l="if($event.target.composing)return;"+l),On(t,"value","("+e+")"),An(t,c,l,null,!0),(s||a)&&An(t,"blur","$forceUpdate()")}function qn(t){var e;i(t[_s])&&(e=ko?"change":"input",t[e]=[].concat(t[_s],t[e]||[]),delete t[_s]),i(t[bs])&&(e=Po?"click":"change",t[e]=[].concat(t[bs],t[e]||[]),delete t[bs])}function zn(t,e,n,r,i){if(n){var o=e,a=Ha;e=function(n){null!==(1===arguments.length?o(n):o.apply(null,arguments))&&Hn(t,e,r,a)}}Ha.addEventListener(t,e,Do?{capture:r,passive:i}:r)}function Hn(t,e,n,r){(r||Ha).removeEventListener(t,e,n)}function Jn(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};Ha=e.elm,qn(n),st(n,i,zn,Hn,e.context)}}function Wn(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,o,a=e.elm,s=t.data.domProps||{},u=e.data.domProps||{};i(u.__ob__)&&(u=e.data.domProps=b({},u));for(n in s)r(u[n])&&(a[n]="");for(n in u)if(o=u[n],"textContent"!==n&&"innerHTML"!==n||(e.children&&(e.children.length=0),o!==s[n]))if("value"===n){a._value=o;var c=r(o)?"":String(o);Yn(a,e,c)&&(a.value=c)}else a[n]=o}}function Yn(t,e,n){return!t.composing&&("option"===e.tag||Kn(t,n)||Gn(t,n))}function Kn(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}function Gn(t,e){var n=t.value,r=t._vModifiers;return i(r)&&r.number?h(n)!==h(e):i(r)&&r.trim?n.trim()!==e.trim():n!==e}function Zn(t){var e=Xn(t.style);return t.staticStyle?b(t.staticStyle,e):e}function Xn(t){return Array.isArray(t)?w(t):"string"==typeof t?Es(t):t}function Qn(t,e){var n,r={};if(e)for(var i=t;i.componentInstance;)i=i.componentInstance._vnode,i.data&&(n=Zn(i.data))&&b(r,n);(n=Zn(t.data))&&b(r,n);for(var o=t;o=o.parent;)o.data&&(n=Zn(o.data))&&b(r,n);return r}function tr(t,e){var n=e.data,o=t.data;if(!(r(n.staticStyle)&&r(n.style)&&r(o.staticStyle)&&r(o.style))){var a,s,u=e.elm,c=o.staticStyle,f=o.normalizedStyle||o.style||{},l=c||f,p=Xn(e.data.style)||{};e.data.normalizedStyle=i(p.__ob__)?b({},p):p;var h=Qn(e,!0);for(s in l)r(h[s])&&Ss(u,s,"");for(s in h)(a=h[s])!==l[s]&&Ss(u,s,null==a?"":a)}}function er(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function nr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function rr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&b(e,Ts(t.name||"v")),b(e,t),e}return"string"==typeof t?Ts(t):void 0}}function ir(t){Ms(function(){Ms(t)})}function or(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),er(t,e))}function ar(t,e){t._transitionClasses&&v(t._transitionClasses,e),nr(t,e)}function sr(t,e,n){var r=ur(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Rs?Ds:Is,u=0,c=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++u>=a&&c()};setTimeout(function(){u<a&&c()},o+1),t.addEventListener(s,f)}function ur(t,e){var n,r=window.getComputedStyle(t),i=r[$s+"Delay"].split(", "),o=r[$s+"Duration"].split(", "),a=cr(i,o),s=r[Ls+"Delay"].split(", "),u=r[Ls+"Duration"].split(", "),c=cr(s,u),f=0,l=0;return e===Rs?a>0&&(n=Rs,f=a,l=o.length):e===Ps?c>0&&(n=Ps,f=c,l=u.length):(f=Math.max(a,c),n=f>0?a>c?Rs:Ps:null,l=n?n===Rs?o.length:u.length:0),{type:n,timeout:f,propCount:l,hasTransform:n===Rs&&Us.test(r[$s+"Property"])}}function cr(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map(function(e,n){return fr(e)+fr(t[n])}))}function fr(t){return 1e3*Number(t.slice(0,-1))}function lr(t,n){var o=t.elm;i(o._leaveCb)&&(o._leaveCb.cancelled=!0,o._leaveCb());var a=rr(t.data.transition);if(!r(a)&&!i(o._enterCb)&&1===o.nodeType){for(var s=a.css,c=a.type,f=a.enterClass,l=a.enterToClass,p=a.enterActiveClass,d=a.appearClass,v=a.appearToClass,g=a.appearActiveClass,m=a.beforeEnter,y=a.enter,_=a.afterEnter,b=a.enterCancelled,w=a.beforeAppear,x=a.appear,E=a.afterAppear,O=a.appearCancelled,S=a.duration,A=va,k=va.$vnode;k&&k.parent;)k=k.parent,A=k.context;var N=!A._isMounted||!t.isRootInsert;if(!N||x||""===x){var T=N&&d?d:f,j=N&&g?g:p,R=N&&v?v:l,P=N?w||m:m,$=N&&"function"==typeof x?x:y,D=N?E||_:_,L=N?O||b:b,I=h(u(S)?S.enter:S);"production"!==e.env.NODE_ENV&&null!=I&&hr(I,"enter",t);var M=!1!==s&&!No,U=vr($),B=o._enterCb=C(function(){M&&(ar(o,R),ar(o,j)),B.cancelled?(M&&ar(o,T),L&&L(o)):D&&D(o),o._enterCb=null});t.data.show||ut(t.data.hook||(t.data.hook={}),"insert",function(){var e=o.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),$&&$(o,B)}),P&&P(o),M&&(or(o,T),or(o,j),ir(function(){or(o,R),ar(o,T),B.cancelled||U||(dr(I)?setTimeout(B,I):sr(o,c,B))})),t.data.show&&(n&&n(),$&&$(o,B)),M||U||B()}}}function pr(t,n){function o(){O.cancelled||(t.data.show||((a.parentNode._pending||(a.parentNode._pending={}))[t.key]=t),v&&v(a),w&&(or(a,l),or(a,d),ir(function(){or(a,p),ar(a,l),O.cancelled||x||(dr(E)?setTimeout(O,E):sr(a,f,O))})),g&&g(a,O),w||x||O())}var a=t.elm;i(a._enterCb)&&(a._enterCb.cancelled=!0,a._enterCb());var s=rr(t.data.transition);if(r(s))return n();if(!i(a._leaveCb)&&1===a.nodeType){var c=s.css,f=s.type,l=s.leaveClass,p=s.leaveToClass,d=s.leaveActiveClass,v=s.beforeLeave,g=s.leave,m=s.afterLeave,y=s.leaveCancelled,_=s.delayLeave,b=s.duration,w=!1!==c&&!No,x=vr(g),E=h(u(b)?b.leave:b);"production"!==e.env.NODE_ENV&&i(E)&&hr(E,"leave",t);var O=a._leaveCb=C(function(){a.parentNode&&a.parentNode._pending&&(a.parentNode._pending[t.key]=null),w&&(ar(a,p),ar(a,d)),O.cancelled?(w&&ar(a,l),y&&y(a)):(n(),m&&m(a)),a._leaveCb=null});_?_(o):o()}}function hr(t,e,n){"number"!=typeof t?mo("<transition> explicit "+e+" duration is not a valid number - got "+JSON.stringify(t)+".",n.context):isNaN(t)&&mo("<transition> explicit "+e+" duration is NaN - the duration expression might be incorrect.",n.context)}function dr(t){return"number"==typeof t&&!isNaN(t)}function vr(t){if(r(t))return!1;var e=t.fns;return i(e)?vr(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function gr(t,e){!0!==e.data.show&&lr(e)}function mr(t,e,n){yr(t,e,n),(ko||To)&&setTimeout(function(){yr(t,e,n)},0)}function yr(t,n,r){var i=n.value,o=t.multiple;if(o&&!Array.isArray(i))return void("production"!==e.env.NODE_ENV&&mo('<select multiple v-model="'+n.expression+'"> expects an Array value for its binding, but got '+Object.prototype.toString.call(i).slice(8,-1),r));for(var a,s,u=0,c=t.options.length;u<c;u++)if(s=t.options[u],o)a=O(i,br(s))>-1,s.selected!==a&&(s.selected=a);else if(E(br(s),i))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}function _r(t,e){return e.every(function(e){return!E(e,t)})}function br(t){return"_value"in t?t._value:t.value}function wr(t){t.target.composing=!0}function xr(t){t.target.composing&&(t.target.composing=!1,Er(t.target,"input"))}function Er(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Or(t){return!t.componentInstance||t.data&&t.data.transition?t:Or(t.componentInstance._vnode)}function Cr(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Cr(_t(e.children)):t}function Sr(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[io(o)]=i[o];return e}function Ar(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function kr(t){for(;t=t.parent;)if(t.data.transition)return!0}function Nr(t,e){return e.key===t.key&&e.tag===t.tag}function Tr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function jr(t){t.data.newPos=t.elm.getBoundingClientRect()}function Rr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}function Pr(t,e){var n=e?nu(e):tu;if(n.test(t)){for(var r,i,o=[],a=n.lastIndex=0;r=n.exec(t);){i=r.index,i>a&&o.push(JSON.stringify(t.slice(a,i)));var s=bn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a<t.length&&o.push(JSON.stringify(t.slice(a))),o.join("+")}}function $r(t,n){var r=n.warn||xn,i=Nn(t,"class");if("production"!==e.env.NODE_ENV&&i){Pr(i,n.delimiters)&&r('class="'+i+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div class="{{ val }}">, use <div :class="val">.')}i&&(t.staticClass=JSON.stringify(i));var o=kn(t,"class",!1);o&&(t.classBinding=o)}function Dr(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Lr(t,n){var r=n.warn||xn,i=Nn(t,"style");if(i){if("production"!==e.env.NODE_ENV){Pr(i,n.delimiters)&&r('style="'+i+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div style="{{ val }}">, use <div :style="val">.')}t.staticStyle=JSON.stringify(Es(i))}var o=kn(t,"style",!1);o&&(t.styleBinding=o)}function Ir(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}function Mr(t,e){e.value&&On(t,"textContent","_s("+e.value+")")}function Ur(t,e){e.value&&On(t,"innerHTML","_s("+e.value+")")}function Br(t,e){var n=e?Lu:Du;return t.replace(n,function(t){return $u[t]})}function Vr(t,n){function r(e){l+=e,t=t.substring(e)}function i(t,r,i){var o,u;if(null==r&&(r=l),null==i&&(i=l),t&&(u=t.toLowerCase()),t)for(o=s.length-1;o>=0&&s[o].lowerCasedTag!==u;o--);else o=0;if(o>=0){for(var c=s.length-1;c>=o;c--)"production"!==e.env.NODE_ENV&&(c>o||!t)&&n.warn&&n.warn("tag <"+s[c].tag+"> has no matching end tag."),n.end&&n.end(s[c].tag,r,i);s.length=o,a=o&&s[o-1].tag}else"br"===u?n.start&&n.start(t,[],!0,r,i):"p"===u&&(n.start&&n.start(t,[],!1,r,i),n.end&&n.end(t,r,i))}for(var o,a,s=[],u=n.expectHTML,c=n.isUnaryTag||uo,f=n.canBeLeftOpenTag||uo,l=0;t;){if(o=t,a&&Ru(a)){var p=0,h=a.toLowerCase(),d=Pu[h]||(Pu[h]=new RegExp("([\\s\\S]*?)(</"+h+"[^>]*>)","i")),v=t.replace(d,function(t,e,r){return p=r.length,Ru(h)||"noscript"===h||(e=e.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Mu(h,e)&&(e=e.slice(1)),n.chars&&n.chars(e),""});l+=t.length-v.length,t=v,i(h,l-p,l)}else{var g=t.indexOf("<");if(0===g){if(_u.test(t)){var m=t.indexOf("--\x3e");if(m>=0){n.shouldKeepComment&&n.comment(t.substring(4,m)),r(m+3);continue}}if(bu.test(t)){var y=t.indexOf("]>");if(y>=0){r(y+2);continue}}var _=t.match(yu);if(_){r(_[0].length);continue}var b=t.match(mu);if(b){var w=l;r(b[0].length),i(b[1],w,l);continue}var x=function(){var e=t.match(vu);if(e){var n={tagName:e[1],attrs:[],start:l};r(e[0].length);for(var i,o;!(i=t.match(gu))&&(o=t.match(pu));)r(o[0].length),n.attrs.push(o);if(i)return n.unarySlash=i[1],r(i[0].length),n.end=l,n}}();if(x){!function(t){var e=t.tagName,r=t.unarySlash;u&&("p"===a&&cu(e)&&i(a),f(e)&&a===e&&i(e));for(var o=c(e)||!!r,l=t.attrs.length,p=new Array(l),h=0;h<l;h++){var d=t.attrs[h];wu&&-1===d[0].indexOf('""')&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]);var v=d[3]||d[4]||d[5]||"";p[h]={name:d[1],value:Br(v,n.shouldDecodeNewlines)}}o||(s.push({tag:e,lowerCasedTag:e.toLowerCase(),attrs:p}),a=e),n.start&&n.start(e,p,o,t.start,t.end)}(x),Mu(a,t)&&r(1);continue}}var E=void 0,O=void 0,C=void 0;if(g>=0){for(O=t.slice(g);!(mu.test(O)||vu.test(O)||_u.test(O)||bu.test(O)||(C=O.indexOf("<",1))<0);)g+=C,O=t.slice(g);E=t.substring(0,g),r(g)}g<0&&(E=t,t=""),n.chars&&E&&n.chars(E)}if(t===o){n.chars&&n.chars(t),"production"!==e.env.NODE_ENV&&!s.length&&n.warn&&n.warn('Mal-formatted tag at end of template: "'+t+'"');break}}i()}function Fr(t,n){function r(t){l||(l=!0,xu(t))}function i(t){t.pre&&(c=!1),Au(t.tag)&&(f=!1)}xu=n.warn||xn,Au=n.isPreTag||uo,ku=n.mustUseProp||uo,Nu=n.getTagNamespace||uo,Ou=En(n.modules,"transformNode"),Cu=En(n.modules,"preTransformNode"),Su=En(n.modules,"postTransformNode"),Eu=n.delimiters;var o,a,s=[],u=!1!==n.preserveWhitespace,c=!1,f=!1,l=!1;return Vr(t,{warn:xu,expectHTML:n.expectHTML,isUnaryTag:n.isUnaryTag,canBeLeftOpenTag:n.canBeLeftOpenTag,shouldDecodeNewlines:n.shouldDecodeNewlines,shouldKeepComment:n.comments,start:function(t,u,l){function p(t){"production"!==e.env.NODE_ENV&&("slot"!==t.tag&&"template"!==t.tag||r("Cannot use <"+t.tag+"> as component root element because it may contain multiple nodes."),t.attrsMap.hasOwnProperty("v-for")&&r("Cannot use v-for on stateful component root element because it renders multiple elements."))}var h=a&&a.ns||Nu(t);ko&&"svg"===h&&(u=si(u));var d={type:1,tag:t,attrsList:u,attrsMap:ii(u),parent:a,children:[]};h&&(d.ns=h),ai(d)&&!Uo()&&(d.forbidden=!0,"production"!==e.env.NODE_ENV&&xu("Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <"+t+">, as they will not be parsed."));for(var v=0;v<Cu.length;v++)Cu[v](d,n);if(c||(qr(d),d.pre&&(c=!0)),Au(d.tag)&&(f=!0),c)zr(d);else{Wr(d),Yr(d),Xr(d),Hr(d),d.plain=!d.key&&!u.length,Jr(d),Qr(d),ti(d);for(var g=0;g<Ou.length;g++)Ou[g](d,n);ei(d)}if(o?s.length||(o.if&&(d.elseif||d.else)?(p(d),Zr(o,{exp:d.elseif,block:d})):"production"!==e.env.NODE_ENV&&r("Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.")):(o=d,p(o)),a&&!d.forbidden)if(d.elseif||d.else)Kr(d,a);else if(d.slotScope){a.plain=!1;var m=d.slotTarget||'"default"';(a.scopedSlots||(a.scopedSlots={}))[m]=d}else a.children.push(d),d.parent=a;l?i(d):(a=d,s.push(d));for(var y=0;y<Su.length;y++)Su[y](d,n)},end:function(){var t=s[s.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&!f&&t.children.pop(),s.length-=1,a=s[s.length-1],i(t)},chars:function(n){if(!a)return void("production"!==e.env.NODE_ENV&&(n===t?r("Component template requires a root element, rather than just text."):(n=n.trim())&&r('text "'+n+'" outside root element will be ignored.')));if(!ko||"textarea"!==a.tag||a.attrsMap.placeholder!==n){var i=a.children;if(n=f||n.trim()?oi(a)?n:Ju(n):u&&i.length?" ":""){var o;!c&&" "!==n&&(o=Pr(n,Eu))?i.push({type:2,expression:o,text:n}):" "===n&&i.length&&" "===i[i.length-1].text||i.push({type:3,text:n})}}},comment:function(t){a.children.push({type:3,text:t,isComment:!0})}}),o}function qr(t){null!=Nn(t,"v-pre")&&(t.pre=!0)}function zr(t){var e=t.attrsList.length;if(e)for(var n=t.attrs=new Array(e),r=0;r<e;r++)n[r]={name:t.attrsList[r].name,value:JSON.stringify(t.attrsList[r].value)};else t.pre||(t.plain=!0)}function Hr(t){var n=kn(t,"key");n&&("production"!==e.env.NODE_ENV&&"template"===t.tag&&xu("<template> cannot be keyed. Place the key on real elements instead."),t.key=n)}function Jr(t){var e=kn(t,"ref");e&&(t.ref=e,t.refInFor=ni(t))}function Wr(t){var n;if(n=Nn(t,"v-for")){var r=n.match(Vu);if(!r)return void("production"!==e.env.NODE_ENV&&xu("Invalid v-for expression: "+n));t.for=r[2].trim();var i=r[1].trim(),o=i.match(Fu);o?(t.alias=o[1].trim(),t.iterator1=o[2].trim(),o[3]&&(t.iterator2=o[3].trim())):t.alias=i}}function Yr(t){var e=Nn(t,"v-if");if(e)t.if=e,Zr(t,{exp:e,block:t});else{null!=Nn(t,"v-else")&&(t.else=!0);var n=Nn(t,"v-else-if");n&&(t.elseif=n)}}function Kr(t,n){var r=Gr(n.children);r&&r.if?Zr(r,{exp:t.elseif,block:t}):"production"!==e.env.NODE_ENV&&xu("v-"+(t.elseif?'else-if="'+t.elseif+'"':"else")+" used on element <"+t.tag+"> without corresponding v-if.")}function Gr(t){for(var n=t.length;n--;){if(1===t[n].type)return t[n];"production"!==e.env.NODE_ENV&&" "!==t[n].text&&xu('text "'+t[n].text.trim()+'" between v-if and v-else(-if) will be ignored.'),t.pop()}}function Zr(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function Xr(t){null!=Nn(t,"v-once")&&(t.once=!0)}function Qr(t){if("slot"===t.tag)t.slotName=kn(t,"name"),"production"!==e.env.NODE_ENV&&t.key&&xu("`key` does not work on <slot> because slots are abstract outlets and can possibly expand into multiple elements. Use the key on a wrapping element instead.");else{var n=kn(t,"slot");n&&(t.slotTarget='""'===n?'"default"':n,Cn(t,"slot",n)),"template"===t.tag&&(t.slotScope=Nn(t,"scope"))}}function ti(t){var e;(e=kn(t,"is"))&&(t.component=e),null!=Nn(t,"inline-template")&&(t.inlineTemplate=!0)}function ei(t){var n,r,i,o,a,s,u,c=t.attrsList;for(n=0,r=c.length;n<r;n++)if(i=o=c[n].name,a=c[n].value,Bu.test(i))if(t.hasBindings=!0,s=ri(i),s&&(i=i.replace(Hu,"")),zu.test(i))i=i.replace(zu,""),a=bn(a),u=!1,s&&(s.prop&&(u=!0,"innerHtml"===(i=io(i))&&(i="innerHTML")),s.camel&&(i=io(i)),s.sync&&An(t,"update:"+io(i),jn(a,"$event"))),u||!t.component&&ku(t.tag,t.attrsMap.type,i)?On(t,i,a):Cn(t,i,a);else if(Uu.test(i))i=i.replace(Uu,""),An(t,i,a,s,!1,xu);else{i=i.replace(Bu,"");var f=i.match(qu),l=f&&f[1];l&&(i=i.slice(0,-(l.length+1))),Sn(t,i,o,a,l,s),"production"!==e.env.NODE_ENV&&"model"===i&&ui(t,a)}else{if("production"!==e.env.NODE_ENV){var p=Pr(a,Eu);p&&xu(i+'="'+a+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div id="{{ val }}">, use <div :id="val">.')}Cn(t,i,JSON.stringify(a))}}function ni(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}function ri(t){var e=t.match(Hu);if(e){var n={};return e.forEach(function(t){n[t.slice(1)]=!0}),n}}function ii(t){for(var n={},r=0,i=t.length;r<i;r++)"production"===e.env.NODE_ENV||!n[t[r].name]||ko||To||xu("duplicate attribute: "+t[r].name),n[t[r].name]=t[r].value;return n}function oi(t){return"script"===t.tag||"style"===t.tag}function ai(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function si(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];Wu.test(r.name)||(r.name=r.name.replace(Yu,""),e.push(r))}return e}function ui(t,e){for(var n=t;n;)n.for&&n.alias===e&&xu("<"+t.tag+' v-model="'+e+'">: You are binding v-model directly to a v-for iteration alias. This will not be able to modify the v-for source array because writing to the alias is like modifying a function local variable. Consider using an array of objects and use v-model on an object property instead.'),n=n.parent}function ci(t,e){t&&(Tu=Ku(e.staticKeys||""),ju=e.isReservedTag||uo,li(t),pi(t,!1))}function fi(t){return d("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))}function li(t){if(t.static=hi(t),1===t.type){if(!ju(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,n=t.children.length;e<n;e++){var r=t.children[e];li(r),r.static||(t.static=!1)}if(t.ifConditions)for(var i=1,o=t.ifConditions.length;i<o;i++){var a=t.ifConditions[i].block;li(a),a.static||(t.static=!1)}}}function pi(t,e){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=e),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var n=0,r=t.children.length;n<r;n++)pi(t.children[n],e||!!t.for);if(t.ifConditions)for(var i=1,o=t.ifConditions.length;i<o;i++)pi(t.ifConditions[i].block,e)}}function hi(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||to(t.tag)||!ju(t.tag)||di(t)||!Object.keys(t).every(Tu))))}function di(t){for(;t.parent;){if(t=t.parent,"template"!==t.tag)return!1;if(t.for)return!0}return!1}function vi(t,n,r){var i=n?"nativeOn:{":"on:{";for(var o in t){var a=t[o];"production"!==e.env.NODE_ENV&&"click"===o&&a&&a.modifiers&&a.modifiers.right&&r('Use "contextmenu" instead of "click.right" since right clicks do not actually fire "click" events.'),i+='"'+o+'":'+gi(o,a)+","}return i.slice(0,-1)+"}"}function gi(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return gi(t,e)}).join(",")+"]";var n=Zu.test(e.value),r=Gu.test(e.value);if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)tc[s]?(o+=tc[s],Xu[s]&&a.push(s)):a.push(s);a.length&&(i+=mi(a)),o&&(i+=o);return"function($event){"+i+(n?e.value+"($event)":r?"("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function mi(t){return"if(!('button' in $event)&&"+t.map(yi).join("&&")+")return null;"}function yi(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Xu[t];return"_k($event.keyCode,"+JSON.stringify(t)+(n?","+JSON.stringify(n):"")+")"}function _i(t,n){"production"!==e.env.NODE_ENV&&n.modifiers&&mo("v-on without argument does not support modifiers."),t.wrapListeners=function(t){return"_g("+t+","+n.value+")"}}function bi(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}function wi(t,e){var n=new nc(e);return{render:"with(this){return "+(t?xi(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function xi(t,e){if(t.staticRoot&&!t.staticProcessed)return Ei(t,e);if(t.once&&!t.onceProcessed)return Oi(t,e);if(t.for&&!t.forProcessed)return Ai(t,e);if(t.if&&!t.ifProcessed)return Ci(t,e);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return Bi(t,e);var n;if(t.component)n=Vi(t.component,t,e);else{var r=t.plain?void 0:ki(t,e),i=t.inlineTemplate?null:$i(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<e.transforms.length;o++)n=e.transforms[o](t,n);return n}return $i(t,e)||"void 0"}function Ei(t,e){return t.staticProcessed=!0,e.staticRenderFns.push("with(this){return "+xi(t,e)+"}"),"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Oi(t,n){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return Ci(t,n);if(t.staticInFor){for(var r="",i=t.parent;i;){if(i.for){r=i.key;break}i=i.parent}return r?"_o("+xi(t,n)+","+n.onceId+++","+r+")":("production"!==e.env.NODE_ENV&&n.warn("v-once can only be used inside v-for that is keyed. "),xi(t,n))}return Ei(t,n)}function Ci(t,e,n,r){return t.ifProcessed=!0,Si(t.ifConditions.slice(),e,n,r)}function Si(t,e,n,r){function i(t){return n?n(t,e):t.once?Oi(t,e):xi(t,e)}if(!t.length)return r||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+i(o.block)+":"+Si(t,e,n,r):""+i(o.block)}function Ai(t,n,r,i){var o=t.for,a=t.alias,s=t.iterator1?","+t.iterator1:"",u=t.iterator2?","+t.iterator2:"";return"production"!==e.env.NODE_ENV&&n.maybeComponent(t)&&"slot"!==t.tag&&"template"!==t.tag&&!t.key&&n.warn("<"+t.tag+' v-for="'+a+" in "+o+'">: component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info.',!0),t.forProcessed=!0,(i||"_l")+"(("+o+"),function("+a+s+u+"){return "+(r||xi)(t,n)+"})"}function ki(t,e){var n="{",r=Ni(t,e);r&&(n+=r+","),t.key&&(n+="key:"+t.key+","),t.ref&&(n+="ref:"+t.ref+","),t.refInFor&&(n+="refInFor:true,"),t.pre&&(n+="pre:true,"),t.component&&(n+='tag:"'+t.tag+'",');for(var i=0;i<e.dataGenFns.length;i++)n+=e.dataGenFns[i](t);if(t.attrs&&(n+="attrs:{"+Fi(t.attrs)+"},"),t.props&&(n+="domProps:{"+Fi(t.props)+"},"),t.events&&(n+=vi(t.events,!1,e.warn)+","),t.nativeEvents&&(n+=vi(t.nativeEvents,!0,e.warn)+","),t.slotTarget&&(n+="slot:"+t.slotTarget+","),t.scopedSlots&&(n+=ji(t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=Ti(t,e);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Ni(t,e){var n=t.directives;if(n){var r,i,o,a,s="directives:[",u=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var c=e.directives[o.name];c&&(a=!!c(t,o,e.warn)),a&&(u=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}return u?s.slice(0,-1)+"]":void 0}}function Ti(t,n){var r=t.children[0];if("production"!==e.env.NODE_ENV&&(t.children.length>1||1!==r.type)&&n.warn("Inline-template components must have exactly one child element."),1===r.type){var i=wi(r,n.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}function ji(t,e){return"scopedSlots:_u(["+Object.keys(t).map(function(n){return Ri(n,t[n],e)}).join(",")+"])"}function Ri(t,e,n){return e.for&&!e.forProcessed?Pi(t,e,n):"{key:"+t+",fn:function("+String(e.attrsMap.scope)+"){return "+("template"===e.tag?$i(e,n)||"void 0":xi(e,n))+"}}"}function Pi(t,e,n){var r=e.for,i=e.alias,o=e.iterator1?","+e.iterator1:"",a=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,"_l(("+r+"),function("+i+o+a+"){return "+Ri(t,e,n)+"})"}function $i(t,e,n,r,i){var o=t.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(r||xi)(a,e);var s=n?Di(o,e.maybeComponent):0,u=i||Ii;return"["+o.map(function(t){return u(t,e)}).join(",")+"]"+(s?","+s:"")}}function Di(t,e){for(var n=0,r=0;r<t.length;r++){var i=t[r];if(1===i.type){if(Li(i)||i.ifConditions&&i.ifConditions.some(function(t){return Li(t.block)})){n=2;break}(e(i)||i.ifConditions&&i.ifConditions.some(function(t){return e(t.block)}))&&(n=1)}}return n}function Li(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function Ii(t,e){return 1===t.type?xi(t,e):3===t.type&&t.isComment?Ui(t):Mi(t)}function Mi(t){return"_v("+(2===t.type?t.expression:qi(JSON.stringify(t.text)))+")"}function Ui(t){return"_e("+JSON.stringify(t.text)+")"}function Bi(t,e){var n=t.slotName||'"default"',r=$i(t,e),i="_t("+n+(r?","+r:""),o=t.attrs&&"{"+t.attrs.map(function(t){return io(t.name)+":"+t.value}).join(",")+"}",a=t.attrsMap["v-bind"];return!o&&!a||r||(i+=",null"),o&&(i+=","+o),a&&(i+=(o?"":",null")+","+a),i+")"}function Vi(t,e,n){var r=e.inlineTemplate?null:$i(e,n,!0);return"_c("+t+","+ki(e,n)+(r?","+r:"")+")"}function Fi(t){for(var e="",n=0;n<t.length;n++){var r=t[n];e+='"'+r.name+'":'+qi(r.value)+","}return e.slice(0,-1)}function qi(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function zi(t){var e=[];return t&&Hi(t,e),e}function Hi(t,e){if(1===t.type){for(var n in t.attrsMap)if(Bu.test(n)){var r=t.attrsMap[n];r&&("v-for"===n?Wi(t,'v-for="'+r+'"',e):Uu.test(n)?Ji(r,n+'="'+r+'"',e):Ki(r,n+'="'+r+'"',e))}if(t.children)for(var i=0;i<t.children.length;i++)Hi(t.children[i],e)}else 2===t.type&&Ki(t.expression,t.text,e)}function Ji(t,e,n){var r=t.replace(ac,""),i=r.match(ic);i&&"$"!==r.charAt(i.index-1)&&n.push('avoid using JavaScript unary operator as property name: "'+i[0]+'" in expression '+e.trim()),Ki(t,e,n)}function Wi(t,e,n){Ki(t.for||"",e,n),Yi(t.alias,"v-for alias",e,n),Yi(t.iterator1,"v-for iterator",e,n),Yi(t.iterator2,"v-for iterator",e,n)}function Yi(t,e,n,r){"string"!=typeof t||oc.test(t)||r.push("invalid "+e+' "'+t+'" in expression: '+n.trim())}function Ki(t,e,n){try{new Function("return "+t)}catch(i){var r=t.replace(ac,"").match(rc);r?n.push('avoid using JavaScript keyword as property name: "'+r[0]+'" in expression '+e.trim()):n.push("invalid expression: "+e.trim())}}function Gi(t,e){try{return new Function(t)}catch(n){return e.push({err:n,code:t}),x}}function Zi(t){var n=Object.create(null);return function(r,i,o){if(i=i||{},"production"!==e.env.NODE_ENV)try{new Function("return 1")}catch(t){t.toString().match(/unsafe-eval|CSP/)&&mo("It seems you are using the standalone build of Vue.js in an environment with Content Security Policy that prohibits unsafe-eval. The template compiler cannot work in this environment. Consider relaxing the policy to allow unsafe-eval or pre-compiling your templates into render functions.")}var a=i.delimiters?String(i.delimiters)+r:r;if(n[a])return n[a];var s=t(r,i);"production"!==e.env.NODE_ENV&&(s.errors&&s.errors.length&&mo("Error compiling template:\n\n"+r+"\n\n"+s.errors.map(function(t){return"- "+t}).join("\n")+"\n",o),s.tips&&s.tips.length&&s.tips.forEach(function(t){return yo(t,o)}));var u={},c=[];return u.render=Gi(s.render,c),u.staticRenderFns=s.staticRenderFns.map(function(t){return Gi(t,c)}),"production"!==e.env.NODE_ENV&&(s.errors&&s.errors.length||!c.length||mo("Failed to generate render function:\n\n"+c.map(function(t){var e=t.err,n=t.code;return e.toString()+" in\n\n"+n+"\n"}).join("\n"),o)),n[a]=u}}function Xi(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var Qi=Object.prototype.toString,to=d("slot,component",!0),eo=d("key,ref,slot,is"),no=Object.prototype.hasOwnProperty,ro=/-(\w)/g,io=m(function(t){return t.replace(ro,function(t,e){return e?e.toUpperCase():""})}),oo=m(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),ao=/\B([A-Z])/g,so=m(function(t){return t.replace(ao,"-$1").toLowerCase()}),uo=function(t,e,n){return!1},co=function(t){return t},fo="data-server-rendered",lo=["component","directive","filter"],po=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],ho={optionMergeStrategies:Object.create(null),silent:!1,productionTip:"production"!==e.env.NODE_ENV,devtools:"production"!==e.env.NODE_ENV,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:uo,isReservedAttr:uo,isUnknownElement:uo,getTagNamespace:x,parsePlatformTagName:co,mustUseProp:uo,_lifecycleHooks:po},vo=Object.freeze({}),go=/[^\w.$]/,mo=x,yo=x,_o=null;if("production"!==e.env.NODE_ENV){var bo="undefined"!=typeof console,wo=/(?:^|[-_])(\w)/g,xo=function(t){return t.replace(wo,function(t){return t.toUpperCase()}).replace(/[-_]/g,"")};mo=function(t,e){var n=e?Oo(e):"";ho.warnHandler?ho.warnHandler.call(null,t,e,n):bo&&!ho.silent&&console.error("[Vue warn]: "+t+n)},yo=function(t,e){bo&&!ho.silent&&console.warn("[Vue tip]: "+t+(e?Oo(e):""))},_o=function(t,e){if(t.$root===t)return"<Root>";var n="string"==typeof t?t:"function"==typeof t&&t.options?t.options.name:t._isVue?t.$options.name||t.$options._componentTag:t.name,r=t._isVue&&t.$options.__file;if(!n&&r){var i=r.match(/([^\/\\]+)\.vue$/);n=i&&i[1]}return(n?"<"+xo(n)+">":"<Anonymous>")+(r&&!1!==e?" at "+r:"")};var Eo=function(t,e){for(var n="";e;)e%2==1&&(n+=t),e>1&&(t+=t),e>>=1;return n},Oo=function(t){if(t._isVue&&t.$parent){for(var e=[],n=0;t;){if(e.length>0){var r=e[e.length-1];if(r.constructor===t.constructor){n++,t=t.$parent;continue}n>0&&(e[e.length-1]=[r,n],n=0)}e.push(t),t=t.$parent}return"\n\nfound in\n\n"+e.map(function(t,e){return""+(0===e?"---\x3e ":Eo(" ",5+2*e))+(Array.isArray(t)?_o(t[0])+"... ("+t[1]+" recursive calls)":_o(t))}).join("\n")}return"\n\n(found in "+_o(t)+")"}}var Co="__proto__"in{},So="undefined"!=typeof window,Ao=So&&window.navigator.userAgent.toLowerCase(),ko=Ao&&/msie|trident/.test(Ao),No=Ao&&Ao.indexOf("msie 9.0")>0,To=Ao&&Ao.indexOf("edge/")>0,jo=Ao&&Ao.indexOf("android")>0,Ro=Ao&&/iphone|ipad|ipod|ios/.test(Ao),Po=Ao&&/chrome\/\d+/.test(Ao)&&!To,$o={}.watch,Do=!1;if(So)try{var Lo={};Object.defineProperty(Lo,"passive",{get:function(){Do=!0}}),window.addEventListener("test-passive",null,Lo)}catch(t){}var Io,Mo,Uo=function(){return void 0===Io&&(Io=!So&&void 0!==n&&"server"===n.process.env.VUE_ENV),Io},Bo=So&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Vo="undefined"!=typeof Symbol&&T(Symbol)&&"undefined"!=typeof Reflect&&T(Reflect.ownKeys),Fo=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e<t.length;e++)t[e]()}var e,n=[],r=!1;if("undefined"!=typeof Promise&&T(Promise)){var i=Promise.resolve(),o=function(t){console.error(t)};e=function(){i.then(t).catch(o),Ro&&setTimeout(x)}}else if(ko||"undefined"==typeof MutationObserver||!T(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())e=function(){setTimeout(t,0)};else{var a=1,s=new MutationObserver(t),u=document.createTextNode(String(a));s.observe(u,{characterData:!0}),e=function(){a=(a+1)%2,u.data=String(a)}}return function(t,i){var o;if(n.push(function(){if(t)try{t.call(i)}catch(t){N(t,i,"nextTick")}else o&&o(i)}),r||(r=!0,e()),!t&&"undefined"!=typeof Promise)return new Promise(function(t,e){o=t})}}();Mo="undefined"!=typeof Set&&T(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var qo=0,zo=function(){this.id=qo++,this.subs=[]};zo.prototype.addSub=function(t){this.subs.push(t)},zo.prototype.removeSub=function(t){v(this.subs,t)},zo.prototype.depend=function(){zo.target&&zo.target.addDep(this)},zo.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},zo.target=null;var Ho=[],Jo=Array.prototype,Wo=Object.create(Jo);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Jo[t];A(Wo,t,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var Yo=Object.getOwnPropertyNames(Wo),Ko={shouldConvert:!0},Go=function(t){if(this.value=t,this.dep=new zo,this.vmCount=0,A(t,"__ob__",this),Array.isArray(t)){(Co?P:$)(t,Wo,Yo),this.observeArray(t)}else this.walk(t)};Go.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)L(t,e[n],t[e[n]])},Go.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)D(t[e])};var Zo=ho.optionMergeStrategies;"production"!==e.env.NODE_ENV&&(Zo.el=Zo.propsData=function(t,e,n,r){return n||mo('option "'+r+'" can only be used during instance creation with the `new` keyword.'),ta(t,e)}),Zo.data=function(t,n,r){return r?V(t,n,r):n&&"function"!=typeof n?("production"!==e.env.NODE_ENV&&mo('The "data" option should be a function that returns a per-instance value in component definitions.',r),t):V.call(this,t,n)},po.forEach(function(t){Zo[t]=F}),lo.forEach(function(t){Zo[t+"s"]=q}),Zo.watch=function(t,e){if(t===$o&&(t=void 0),e===$o&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var n={};b(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Array.isArray(i)&&(i=[i]),n[r]=i?i.concat(o):Array.isArray(o)?o:[o]}return n},Zo.props=Zo.methods=Zo.inject=Zo.computed=function(t,e){if(!t)return e;var n=Object.create(null);return b(n,t),e&&b(n,e),n},Zo.provide=V;var Xo,Qo,ta=function(t,e){return void 0===e?t:e},ea=/^(String|Number|Boolean|Function|Symbol)$/;if("production"!==e.env.NODE_ENV){var na=So&&window.performance;na&&na.mark&&na.measure&&na.clearMarks&&na.clearMeasures&&(Xo=function(t){return na.mark(t)},Qo=function(t,e,n){na.measure(t,e,n),na.clearMarks(e),na.clearMarks(n),na.clearMeasures(t)})}var ra;if("production"!==e.env.NODE_ENV){var ia=d("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,require"),oa=function(t,e){mo('Property or method "'+e+'" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.',t)},aa="undefined"!=typeof Proxy&&Proxy.toString().match(/native code/);if(aa){var sa=d("stop,prevent,self,ctrl,shift,alt,meta");ho.keyCodes=new Proxy(ho.keyCodes,{set:function(t,e,n){return sa(e)?(mo("Avoid overwriting built-in modifier in config.keyCodes: ."+e),!1):(t[e]=n,!0)}})}var ua={has:function(t,e){var n=e in t,r=ia(e)||"_"===e.charAt(0);return n||r||oa(t,e),n||!r}},ca={get:function(t,e){return"string"!=typeof e||e in t||oa(t,e),t[e]}};ra=function(t){if(aa){var e=t.$options,n=e.render&&e.render._withStripped?ca:ua;t._renderProxy=new Proxy(t,n)}else t._renderProxy=t}}var fa=function(t,e,n,r,i,o,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.functionalContext=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},la={child:{}};la.child.get=function(){return this.componentInstance},Object.defineProperties(fa.prototype,la);var pa,ha=function(t){void 0===t&&(t="");var e=new fa;return e.text=t,e.isComment=!0,e},da=m(function(t){var e="&"===t.charAt(0);t=e?t.slice(1):t;var n="~"===t.charAt(0);t=n?t.slice(1):t;var r="!"===t.charAt(0);return t=r?t.slice(1):t,{name:t,plain:!(e||n||r),once:n,capture:r,passive:e}}),va=null,ga=!1,ma=100,ya=[],_a=[],ba={},wa={},xa=!1,Ea=!1,Oa=0,Ca=0,Sa=function(t,n,r,i){this.vm=t,t._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=r,this.id=++Ca,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Mo,this.newDepIds=new Mo,this.expression="production"!==e.env.NODE_ENV?n.toString():"","function"==typeof n?this.getter=n:(this.getter=k(n),this.getter||(this.getter=function(){},"production"!==e.env.NODE_ENV&&mo('Failed watching path: "'+n+'" Watcher only accepts simple dot-delimited paths. For full control, use a function instead.',t))),this.value=this.lazy?void 0:this.get()};Sa.prototype.get=function(){j(this);var t,e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;N(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&Bt(t),R(),this.cleanupDeps()}return t},Sa.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Sa.prototype.cleanupDeps=function(){for(var t=this,e=this.deps.length;e--;){var n=t.deps[e];t.newDepIds.has(n.id)||n.removeSub(t)}var r=this.depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},Sa.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Ut(this)},Sa.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||u(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){N(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Sa.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Sa.prototype.depend=function(){for(var t=this,e=this.deps.length;e--;)t.deps[e].depend()},Sa.prototype.teardown=function(){var t=this;if(this.active){this.vm._isBeingDestroyed||v(this.vm._watchers,this);for(var e=this.deps.length;e--;)t.deps[e].removeSub(t);this.active=!1}};var Aa=new Mo,ka={enumerable:!0,configurable:!0,get:x,set:x},Na={lazy:!0},Ta={init:function(t,e,n,r){if(!t.componentInstance||t.componentInstance._isDestroyed){(t.componentInstance=ae(t,va,n,r)).$mount(e?t.elm:void 0,e)}else if(t.data.keepAlive){var i=t;Ta.prepatch(i,i)}},prepatch:function(t,e){var n=e.componentOptions;Nt(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e=t.context,n=t.componentInstance;n._isMounted||(n._isMounted=!0,Pt(n,"mounted")),t.data.keepAlive&&(e._isMounted?It(n):jt(n,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?Rt(e,!0):e.$destroy())}},ja=Object.keys(Ta),Ra=1,Pa=2,$a=0;!function(t){t.prototype._init=function(t){var n=this;n._uid=$a++;var r,i;"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(r="vue-perf-init:"+n._uid,i="vue-perf-end:"+n._uid,Xo(r)),n._isVue=!0,t&&t._isComponent?Oe(n,t):n.$options=Y(Ce(n.constructor),t||{},n),"production"!==e.env.NODE_ENV?ra(n):n._renderProxy=n,n._self=n,At(n),bt(n),Ee(n),Pt(n,"beforeCreate"),ee(n),qt(n),te(n),Pt(n,"created"),"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(n._name=_o(n,!1),Xo(i),Qo(n._name+" init",r,i)),n.$options.el&&n.$mount(n.$options.el)}}(ke),function(t){var n={};n.get=function(){return this._data};var r={};r.get=function(){return this._props},"production"!==e.env.NODE_ENV&&(n.set=function(t){mo("Avoid replacing instance root $data. Use nested data properties instead.",this)},r.set=function(){mo("$props is readonly.",this)}),Object.defineProperty(t.prototype,"$data",n),Object.defineProperty(t.prototype,"$props",r),t.prototype.$set=I,t.prototype.$delete=M,t.prototype.$watch=function(t,e,n){var r=this;if(c(e))return Qt(r,t,e,n);n=n||{},n.user=!0;var i=new Sa(r,t,e,n);return n.immediate&&e.call(r,i.value),function(){i.teardown()}}}(ke),function(t){var n=/^hook:/;t.prototype.$on=function(t,e){var r=this,i=this;if(Array.isArray(t))for(var o=0,a=t.length;o<a;o++)r.$on(t[o],e);else(i._events[t]||(i._events[t]=[])).push(e),n.test(t)&&(i._hasHookEvent=!0);return i},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this,r=this;if(!arguments.length)return r._events=Object.create(null),r;if(Array.isArray(t)){for(var i=0,o=t.length;i<o;i++)n.$off(t[i],e);return r}var a=r._events[t];if(!a)return r;if(1===arguments.length)return r._events[t]=null,r;if(e)for(var s,u=a.length;u--;)if((s=a[u])===e||s.fn===e){a.splice(u,1);break}return r},t.prototype.$emit=function(t){var n=this;if("production"!==e.env.NODE_ENV){var r=t.toLowerCase();r!==t&&n._events[r]&&yo('Event "'+r+'" is emitted in component '+_o(n)+' but the handler is registered for "'+t+'". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "'+so(t)+'" instead of "'+t+'".')}var i=n._events[t];if(i){i=i.length>1?_(i):i;for(var o=_(arguments,1),a=0,s=i.length;a<s;a++)try{i[a].apply(n,o)}catch(e){N(e,n,'event handler for "'+t+'"')}}return n}}(ke),function(t){t.prototype._update=function(t,e){var n=this;n._isMounted&&Pt(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=va;va=n,n._vnode=t,i?n.$el=n.__patch__(i,t):(n.$el=n.__patch__(n.$el,t,e,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),va=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){var t=this;t._watcher&&t._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Pt(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||v(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Pt(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null)}}}(ke),function(t){t.prototype.$nextTick=function(t){return Fo(t,this)},t.prototype._render=function(){var t=this,n=t.$options,r=n.render,i=n.staticRenderFns,o=n._parentVnode;if(t._isMounted)for(var a in t.$slots){var s=t.$slots[a];s._rendered&&(t.$slots[a]=it(s,!0))}t.$scopedSlots=o&&o.data.scopedSlots||vo,i&&!t._staticTrees&&(t._staticTrees=[]),t.$vnode=o;var u;try{u=r.call(t._renderProxy,t.$createElement)}catch(n){N(n,t,"render function"),u="production"!==e.env.NODE_ENV&&t.$options.renderError?t.$options.renderError.call(t._renderProxy,t.$createElement,n):t._vnode}return u instanceof fa||("production"!==e.env.NODE_ENV&&Array.isArray(u)&&mo("Multiple root nodes returned from render function. Render function should return a single root node.",t),u=ha()),u.parent=o,u},t.prototype._o=_e,t.prototype._n=h,t.prototype._s=p,t.prototype._l=he,t.prototype._t=de,t.prototype._q=E,t.prototype._i=O,t.prototype._m=ye,t.prototype._f=ve,t.prototype._k=ge,t.prototype._b=me,t.prototype._v=nt,t.prototype._e=ha,t.prototype._u=St,t.prototype._g=xe}(ke);var Da=[String,RegExp,Array],La={name:"keep-alive",abstract:!0,props:{include:Da,exclude:Da},created:function(){this.cache=Object.create(null)},destroyed:function(){var t=this;for(var e in t.cache)Me(t.cache[e])},watch:{include:function(t){Ie(this.cache,this._vnode,function(e){return Le(t,e)})},exclude:function(t){Ie(this.cache,this._vnode,function(e){return!Le(t,e)})}},render:function(){var t=_t(this.$slots.default),e=t&&t.componentOptions;if(e){var n=De(e);if(n&&(this.include&&!Le(this.include,n)||this.exclude&&Le(this.exclude,n)))return t;var r=null==t.key?e.Ctor.cid+(e.tag?"::"+e.tag:""):t.key;this.cache[r]?t.componentInstance=this.cache[r].componentInstance:this.cache[r]=t,t.data.keepAlive=!0}return t}},Ia={KeepAlive:La};!function(t){var n={};n.get=function(){return ho},"production"!==e.env.NODE_ENV&&(n.set=function(){mo("Do not replace the Vue.config object, set individual fields instead.")}),Object.defineProperty(t,"config",n),t.util={warn:mo,extend:b,mergeOptions:Y,defineReactive:L},t.set=I,t.delete=M,t.nextTick=Fo,t.options=Object.create(null),lo.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,b(t.options.components,Ia),Ne(t),Te(t),je(t),$e(t)}(ke),Object.defineProperty(ke.prototype,"$isServer",{get:Uo}),Object.defineProperty(ke.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),ke.version="2.4.4";var Ma,Ua,Ba,Va,Fa,qa,za,Ha,Ja,Wa=d("style,class"),Ya=d("input,textarea,option,select,progress"),Ka=function(t,e,n){return"value"===n&&Ya(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Ga=d("contenteditable,draggable,spellcheck"),Za=d("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Xa="http://www.w3.org/1999/xlink",Qa=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ts=function(t){return Qa(t)?t.slice(6,t.length):""},es=function(t){return null==t||!1===t},ns={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},rs=d("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),is=d("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),os=function(t){return"pre"===t},as=function(t){return rs(t)||is(t)},ss=Object.create(null),us=d("text,number,password,search,email,tel,url"),cs=Object.freeze({createElement:Ke,createElementNS:Ge,createTextNode:Ze,createComment:Xe,insertBefore:Qe,removeChild:tn,appendChild:en,parentNode:nn,nextSibling:rn,tagName:on,setTextContent:an,setAttribute:sn}),fs={create:function(t,e){un(e)},update:function(t,e){t.data.ref!==e.data.ref&&(un(t,!0),un(e))},destroy:function(t){un(t,!0)}},ls=new fa("",{},[]),ps=["create","activate","update","remove","destroy"],hs={create:pn,update:pn,destroy:function(t){pn(t,ls)}},ds=Object.create(null),vs=[fs,hs],gs={create:mn,update:mn},ms={create:_n,update:_n},ys=/[\w).+\-_$\]]/,_s="__r",bs="__c",ws={create:Jn,update:Jn},xs={create:Wn,update:Wn},Es=m(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),Os=/^--/,Cs=/\s*!important$/,Ss=function(t,e,n){if(Os.test(e))t.style.setProperty(e,n);else if(Cs.test(n))t.style.setProperty(e,n.replace(Cs,""),"important");else{var r=ks(e);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)t.style[r]=n[i];else t.style[r]=n}},As=["Webkit","Moz","ms"],ks=m(function(t){if(Ja=Ja||document.createElement("div").style,"filter"!==(t=io(t))&&t in Ja)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<As.length;n++){var r=As[n]+e;if(r in Ja)return r}}),Ns={create:tr,update:tr},Ts=m(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),js=So&&!No,Rs="transition",Ps="animation",$s="transition",Ds="transitionend",Ls="animation",Is="animationend";js&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&($s="WebkitTransition",Ds="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ls="WebkitAnimation",Is="webkitAnimationEnd"));var Ms=So&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,Us=/\b(transform|all)(,|$)/,Bs=So?{create:gr,activate:gr,remove:function(t,e){!0!==t.data.show?pr(t,e):e()}}:{},Vs=[gs,ms,ws,xs,Ns,Bs],Fs=Vs.concat(vs),qs=function(t){function n(t){return new fa(P.tagName(t).toLowerCase(),{},[],void 0,t)}function a(t,e){function n(){0==--n.listeners&&u(t)}return n.listeners=e,n}function u(t){var e=P.parentNode(t);i(e)&&P.removeChild(e,t)}function c(t,n,r,a,s){if(t.isRootInsert=!s,!f(t,n,r,a)){var u=t.data,c=t.children,l=t.tag;i(l)?("production"!==e.env.NODE_ENV&&(u&&u.pre&&$++,$||t.ns||ho.ignoredElements.length&&ho.ignoredElements.indexOf(l)>-1||!ho.isUnknownElement(l)||mo("Unknown custom element: <"+l+'> - did you register the component correctly? For recursive components, make sure to provide the "name" option.',t.context)),t.elm=t.ns?P.createElementNS(t.ns,l):P.createElement(l,t),y(t),v(t,c,n),i(u)&&m(t,n),h(r,t.elm,a),"production"!==e.env.NODE_ENV&&u&&u.pre&&$--):o(t.isComment)?(t.elm=P.createComment(t.text),h(r,t.elm,a)):(t.elm=P.createTextNode(t.text),h(r,t.elm,a))}}function f(t,e,n,r){var a=t.data;if(i(a)){var s=i(t.componentInstance)&&a.keepAlive;if(i(a=a.hook)&&i(a=a.init)&&a(t,!1,n,r),i(t.componentInstance))return l(t,e),o(s)&&p(t,e,n,r),!0}}function l(t,e){i(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,g(t)?(m(t,e),y(t)):(un(t),e.push(t))}function p(t,e,n,r){for(var o,a=t;a.componentInstance;)if(a=a.componentInstance._vnode,i(o=a.data)&&i(o=o.transition)){for(o=0;o<j.activate.length;++o)j.activate[o](ls,a);e.push(a);break}h(n,t.elm,r)}function h(t,e,n){i(t)&&(i(n)?n.parentNode===t&&P.insertBefore(t,e,n):P.appendChild(t,e))}function v(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)c(e[r],n,t.elm,null,!0);else s(t.text)&&P.appendChild(t.elm,P.createTextNode(t.text))}function g(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return i(t.tag)}function m(t,e){for(var n=0;n<j.create.length;++n)j.create[n](ls,t);N=t.data.hook,i(N)&&(i(N.create)&&N.create(ls,t),i(N.insert)&&e.push(t))}function y(t){for(var e,n=t;n;)i(e=n.context)&&i(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,""),n=n.parent;i(e=va)&&e!==t.context&&i(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,"")}function _(t,e,n,r,i,o){for(;r<=i;++r)c(n[r],o,t,e)}function b(t){var e,n,r=t.data;if(i(r))for(i(e=r.hook)&&i(e=e.destroy)&&e(t),e=0;e<j.destroy.length;++e)j.destroy[e](t);if(i(e=t.children))for(n=0;n<t.children.length;++n)b(t.children[n])}function w(t,e,n,r){for(;n<=r;++n){var o=e[n];i(o)&&(i(o.tag)?(x(o),b(o)):u(o.elm))}}function x(t,e){if(i(e)||i(t.data)){var n,r=j.remove.length+1;for(i(e)?e.listeners+=r:e=a(t.elm,r),i(n=t.componentInstance)&&i(n=n._vnode)&&i(n.data)&&x(n,e),n=0;n<j.remove.length;++n)j.remove[n](t,e);i(n=t.data.hook)&&i(n=n.remove)?n(t,e):e()}else u(t.elm)}function E(t,n,o,a,s){for(var u,f,l,p,h=0,d=0,v=n.length-1,g=n[0],m=n[v],y=o.length-1,b=o[0],x=o[y],E=!s;h<=v&&d<=y;)r(g)?g=n[++h]:r(m)?m=n[--v]:cn(g,b)?(C(g,b,a),g=n[++h],b=o[++d]):cn(m,x)?(C(m,x,a),m=n[--v],x=o[--y]):cn(g,x)?(C(g,x,a),E&&P.insertBefore(t,g.elm,P.nextSibling(m.elm)),g=n[++h],x=o[--y]):cn(m,b)?(C(m,b,a),E&&P.insertBefore(t,m.elm,g.elm),m=n[--v],b=o[++d]):(r(u)&&(u=ln(n,h,v)),f=i(b.key)?u[b.key]:O(b,n,h,v),r(f)?c(b,a,t,g.elm):(l=n[f],"production"===e.env.NODE_ENV||l||mo("It seems there are duplicate keys that is causing an update error. Make sure each v-for item has a unique key."),cn(l,b)?(C(l,b,a),n[f]=void 0,E&&P.insertBefore(t,l.elm,g.elm)):c(b,a,t,g.elm)),b=o[++d]);h>v?(p=r(o[y+1])?null:o[y+1].elm,_(t,p,o,d,y,a)):d>y&&w(t,n,h,v)}function O(t,e,n,r){for(var o=n;o<r;o++){var a=e[o];if(i(a)&&cn(t,a))return o}}function C(t,e,n,a){if(t!==e){var s=e.elm=t.elm;if(o(t.isAsyncPlaceholder))return void(i(e.asyncFactory.resolved)?A(t.elm,e,n):e.isAsyncPlaceholder=!0);if(o(e.isStatic)&&o(t.isStatic)&&e.key===t.key&&(o(e.isCloned)||o(e.isOnce)))return void(e.componentInstance=t.componentInstance);var u,c=e.data;i(c)&&i(u=c.hook)&&i(u=u.prepatch)&&u(t,e);var f=t.children,l=e.children;if(i(c)&&g(e)){for(u=0;u<j.update.length;++u)j.update[u](t,e);i(u=c.hook)&&i(u=u.update)&&u(t,e)}r(e.text)?i(f)&&i(l)?f!==l&&E(s,f,l,n,a):i(l)?(i(t.text)&&P.setTextContent(s,""),_(s,null,l,0,l.length-1,n)):i(f)?w(s,f,0,f.length-1):i(t.text)&&P.setTextContent(s,""):t.text!==e.text&&P.setTextContent(s,e.text),i(c)&&i(u=c.hook)&&i(u=u.postpatch)&&u(t,e)}}function S(t,e,n){if(o(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}function A(t,n,r){if(o(n.isComment)&&i(n.asyncFactory))return n.elm=t,n.isAsyncPlaceholder=!0,!0;if("production"!==e.env.NODE_ENV&&!k(t,n))return!1;n.elm=t;var a=n.tag,s=n.data,u=n.children;if(i(s)&&(i(N=s.hook)&&i(N=N.init)&&N(n,!0),i(N=n.componentInstance)))return l(n,r),!0;if(i(a)){if(i(u))if(t.hasChildNodes())if(i(N=s)&&i(N=N.domProps)&&i(N=N.innerHTML)){if(N!==t.innerHTML)return"production"===e.env.NODE_ENV||"undefined"==typeof console||D||(D=!0,console.warn("Parent: ",t),console.warn("server innerHTML: ",N),console.warn("client innerHTML: ",t.innerHTML)),!1}else{for(var c=!0,f=t.firstChild,p=0;p<u.length;p++){if(!f||!A(f,u[p],r)){c=!1;break}f=f.nextSibling}if(!c||f)return"production"===e.env.NODE_ENV||"undefined"==typeof console||D||(D=!0,console.warn("Parent: ",t),console.warn("Mismatching childNodes vs. VNodes: ",t.childNodes,u)),!1}else v(n,u,r);if(i(s))for(var h in s)if(!L(h)){m(n,r);break}}else t.data!==n.text&&(t.data=n.text);return!0}function k(t,e){return i(e.tag)?0===e.tag.indexOf("vue-component")||e.tag.toLowerCase()===(t.tagName&&t.tagName.toLowerCase()):t.nodeType===(e.isComment?8:3)}var N,T,j={},R=t.modules,P=t.nodeOps;for(N=0;N<ps.length;++N)for(j[ps[N]]=[],T=0;T<R.length;++T)i(R[T][ps[N]])&&j[ps[N]].push(R[T][ps[N]]);var $=0,D=!1,L=d("attrs,style,class,staticClass,staticStyle,key");return function(t,a,s,u,f,l){if(r(a))return void(i(t)&&b(t));var p=!1,h=[];if(r(t))p=!0,c(a,h,f,l);else{var d=i(t.nodeType);if(!d&&cn(t,a))C(t,a,h,u);else{if(d){if(1===t.nodeType&&t.hasAttribute(fo)&&(t.removeAttribute(fo),s=!0),o(s)){if(A(t,a,h))return S(a,h,!0),t;"production"!==e.env.NODE_ENV&&mo("The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render.")}t=n(t)}var v=t.elm,m=P.parentNode(v);if(c(a,h,v._leaveCb?null:m,P.nextSibling(v)),i(a.parent))for(var y=a.parent,_=g(a);y;){for(var x=0;x<j.destroy.length;++x)j.destroy[x](y);if(y.elm=a.elm,_){for(var E=0;E<j.create.length;++E)j.create[E](ls,y);var O=y.data.hook.insert;if(O.merged)for(var k=1;k<O.fns.length;k++)O.fns[k]()}y=y.parent}i(m)?w(m,[t],0,0):i(t.tag)&&b(t)}}return S(a,h,p),a.elm}}({nodeOps:cs,modules:Fs});No&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Er(t,"input")});var zs={inserted:function(t,e,n){"select"===n.tag?(mr(t,e,n.context),t._vOptions=[].map.call(t.options,br)):("textarea"===n.tag||us(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("change",xr),jo||(t.addEventListener("compositionstart",wr),t.addEventListener("compositionend",xr)),No&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){mr(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,br);if(i.some(function(t,e){return!E(t,r[e])})){(t.multiple?e.value.some(function(t){return _r(t,i)}):e.value!==e.oldValue&&_r(e.value,i))&&Er(t,"change")}}}},Hs={bind:function(t,e,n){var r=e.value;n=Or(n);var i=n.data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,lr(n,function(){t.style.display=o})):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;r!==e.oldValue&&(n=Or(n),n.data&&n.data.transition?(n.data.show=!0,r?lr(n,function(){t.style.display=t.__vOriginalDisplay}):pr(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}},Js={model:zs,show:Hs},Ws={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Ys={name:"transition",props:Ws,abstract:!0,render:function(t){var n=this,r=this.$options._renderChildren;if(r&&(r=r.filter(function(t){return t.tag||yt(t)}),r.length)){"production"!==e.env.NODE_ENV&&r.length>1&&mo("<transition> can only be used on a single element. Use <transition-group> for lists.",this.$parent);var i=this.mode;"production"!==e.env.NODE_ENV&&i&&"in-out"!==i&&"out-in"!==i&&mo("invalid <transition> mode: "+i,this.$parent);var o=r[0];if(kr(this.$vnode))return o;var a=Cr(o);if(!a)return o;if(this._leaving)return Ar(t,o);var u="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?u+"comment":u+a.tag:s(a.key)?0===String(a.key).indexOf(u)?a.key:u+a.key:a.key;var c=(a.data||(a.data={})).transition=Sr(this),f=this._vnode,l=Cr(f);if(a.data.directives&&a.data.directives.some(function(t){return"show"===t.name})&&(a.data.show=!0),l&&l.data&&!Nr(a,l)&&!yt(l)){var p=l&&(l.data.transition=b({},c));if("out-in"===i)return this._leaving=!0,ut(p,"afterLeave",function(){n._leaving=!1,n.$forceUpdate()}),Ar(t,o);if("in-out"===i){if(yt(a))return f;var h,d=function(){h()};ut(c,"afterEnter",d),ut(c,"enterCancelled",d),ut(p,"delayLeave",function(t){h=t})}}return o}}},Ks=b({tag:String,moveClass:String},Ws);delete Ks.mode;var Gs={props:Ks,render:function(t){for(var n=this.tag||this.$vnode.data.tag||"span",r=Object.create(null),i=this.prevChildren=this.children,o=this.$slots.default||[],a=this.children=[],s=Sr(this),u=0;u<o.length;u++){var c=o[u];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))a.push(c),r[c.key]=c,(c.data||(c.data={})).transition=s;else if("production"!==e.env.NODE_ENV){var f=c.componentOptions,l=f?f.Ctor.options.name||f.tag||"":c.tag;mo("<transition-group> children must be keyed: <"+l+">")}}if(i){for(var p=[],h=[],d=0;d<i.length;d++){var v=i[d];v.data.transition=s,v.data.pos=v.elm.getBoundingClientRect(),r[v.key]?p.push(v):h.push(v)}this.kept=t(n,null,p),this.removed=h}return t(n,null,a)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";if(t.length&&this.hasMove(t[0].elm,e)){t.forEach(Tr),t.forEach(jr),t.forEach(Rr);var n=document.body;n.offsetHeight;t.forEach(function(t){if(t.data.moved){var n=t.elm,r=n.style;or(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Ds,n._moveCb=function t(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Ds,t),n._moveCb=null,ar(n,e))})}})}},methods:{hasMove:function(t,e){if(!js)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){nr(n,t)}),er(n,e),n.style.display="none",this.$el.appendChild(n);var r=ur(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}},Zs={Transition:Ys,TransitionGroup:Gs};ke.config.mustUseProp=Ka,ke.config.isReservedTag=as,ke.config.isReservedAttr=Wa,ke.config.getTagNamespace=Je,ke.config.isUnknownElement=We,b(ke.options.directives,Js),b(ke.options.components,Zs),ke.prototype.__patch__=So?qs:x,ke.prototype.$mount=function(t,e){return t=t&&So?Ye(t):void 0,kt(this,t,e)},setTimeout(function(){ho.devtools&&(Bo?Bo.emit("init",ke):"production"!==e.env.NODE_ENV&&Po&&console[console.info?"info":"log"]("Download the Vue Devtools extension for a better development experience:\nhttps://github.com/vuejs/vue-devtools")),"production"!==e.env.NODE_ENV&&!1!==ho.productionTip&&So&&"undefined"!=typeof console&&console[console.info?"info":"log"]("You are running Vue in development mode.\nMake sure to turn on production mode when deploying for production.\nSee more tips at https://vuejs.org/guide/deployment.html")},0);var Xs,Qs=!!So&&function(t,e){var n=document.createElement("div");return n.innerHTML='<div a="'+t+'"/>',n.innerHTML.indexOf(e)>0}("\n"," "),tu=/\{\{((?:.|\n)+?)\}\}/g,eu=/[-.*+?^${}()|[\]\/\\]/g,nu=m(function(t){var e=t[0].replace(eu,"\\$&"),n=t[1].replace(eu,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),ru={staticKeys:["staticClass"],transformNode:$r,genData:Dr},iu={staticKeys:["staticStyle"],transformNode:Lr,genData:Ir},ou=[ru,iu],au={model:Mn,text:Mr,html:Ur},su=d("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),uu=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),cu=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),fu={expectHTML:!0,modules:ou,directives:au,isPreTag:os,isUnaryTag:su,mustUseProp:Ka,canBeLeftOpenTag:uu,isReservedTag:as,getTagNamespace:Je,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(ou)},lu={decode:function(t){return Xs=Xs||document.createElement("div"),Xs.innerHTML=t,Xs.textContent}},pu=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,hu="[a-zA-Z_][\\w\\-\\.]*",du="((?:"+hu+"\\:)?"+hu+")",vu=new RegExp("^<"+du),gu=/^\s*(\/?)>/,mu=new RegExp("^<\\/"+du+"[^>]*>"),yu=/^<!DOCTYPE [^>]+>/i,_u=/^<!--/,bu=/^<!\[/,wu=!1;"x".replace(/x(.)?/g,function(t,e){wu=""===e});var xu,Eu,Ou,Cu,Su,Au,ku,Nu,Tu,ju,Ru=d("script,style,textarea",!0),Pu={},$u={"<":"<",">":">",""":'"',"&":"&"," ":"\n"},Du=/&(?:lt|gt|quot|amp);/g,Lu=/&(?:lt|gt|quot|amp|#10);/g,Iu=d("pre,textarea",!0),Mu=function(t,e){return t&&Iu(t)&&"\n"===e[0]},Uu=/^@|^v-on:/,Bu=/^v-|^@|^:/,Vu=/(.*?)\s+(?:in|of)\s+(.*)/,Fu=/\((\{[^}]*\}|[^,]*),([^,]*)(?:,([^,]*))?\)/,qu=/:(.*)$/,zu=/^:|^v-bind:/,Hu=/\.[^.]+/g,Ju=m(lu.decode),Wu=/^xmlns:NS\d+/,Yu=/^NS\d+:/,Ku=m(fi),Gu=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,Zu=/^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/,Xu={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Qu=function(t){return"if("+t+")return null;"},tc={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Qu("$event.target !== $event.currentTarget"),ctrl:Qu("!$event.ctrlKey"),shift:Qu("!$event.shiftKey"),alt:Qu("!$event.altKey"),meta:Qu("!$event.metaKey"),left:Qu("'button' in $event && $event.button !== 0"),middle:Qu("'button' in $event && $event.button !== 1"),right:Qu("'button' in $event && $event.button !== 2")},ec={on:_i,bind:bi,cloak:x},nc=function(t){this.options=t,this.warn=t.warn||xn,this.transforms=En(t.modules,"transformCode"),this.dataGenFns=En(t.modules,"genData"),this.directives=b(b({},ec),t.directives);var e=t.isReservedTag||uo;this.maybeComponent=function(t){return!e(t.tag)},this.onceId=0,this.staticRenderFns=[]},rc=new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),ic=new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)"),oc=/[A-Za-z_$][\w$]*/,ac=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g,sc=function(t){return function(n){function r(r,i){var o=Object.create(n),a=[],s=[];if(o.warn=function(t,e){(e?s:a).push(t)},i){i.modules&&(o.modules=(n.modules||[]).concat(i.modules)),i.directives&&(o.directives=b(Object.create(n.directives),i.directives));for(var u in i)"modules"!==u&&"directives"!==u&&(o[u]=i[u])}var c=t(r,o);return"production"!==e.env.NODE_ENV&&a.push.apply(a,zi(c.ast)),c.errors=a,c.tips=s,c}return{compile:r,compileToFunctions:Zi(r)}}}(function(t,e){var n=Fr(t.trim(),e);ci(n,e);var r=wi(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}}),uc=sc(fu),cc=uc.compileToFunctions,fc=m(function(t){var e=Ye(t);return e&&e.innerHTML}),lc=ke.prototype.$mount;ke.prototype.$mount=function(t,n){if((t=t&&Ye(t))===document.body||t===document.documentElement)return"production"!==e.env.NODE_ENV&&mo("Do not mount Vue to <html> or <body> - mount to normal elements instead."),this;var r=this.$options;if(!r.render){var i=r.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=fc(i),"production"===e.env.NODE_ENV||i||mo("Template element not found or is empty: "+r.template,this));else{if(!i.nodeType)return"production"!==e.env.NODE_ENV&&mo("invalid template option:"+i,this),this;i=i.innerHTML}else t&&(i=Xi(t));if(i){"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&Xo("compile");var o=cc(i,{shouldDecodeNewlines:Qs,delimiters:r.delimiters,comments:r.comments},this),a=o.render,s=o.staticRenderFns;r.render=a,r.staticRenderFns=s,"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(Xo("compile end"),Qo(this._name+" compile","compile","compile end"))}}return lc.call(this,t,n)},ke.compile=cc,t.exports=ke}).call(e,n(2),n(1))},function(t,e,n){"use strict";function r(t){n(28)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(33),o=n.n(i),a=n(91),s=n(10),u=r,c=s(o.a,a.a,u,null,null);e.default=c.exports},function(t,e,n){var r=n(29);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(31)("4055d79c",r,!0)},function(t,e,n){e=t.exports=n(30)(void 0),e.push([t.i,"body,html{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:100%}pre{font-family:Consolas,monaco,monospace;font-size:13px;margin:0}a,a:active,a:hover,a:visited{color:#357edd;text-decoration:none}a:hover{text-decoration:underline}.flex-fill{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;min-width:0;min-height:0}.darken-10:focus,.darken-10:hover{-webkit-box-shadow:inset 9999px 9999px rgba(0,0,0,.1);box-shadow:inset 9999px 9999px rgba(0,0,0,.1)}.darken-10:active{-webkit-box-shadow:inset 9999px 9999px rgba(0,0,0,.2);box-shadow:inset 9999px 9999px rgba(0,0,0,.2)}.hljs{background-color:#f4f4f4;padding:0 1rem}.box-shadow{-webkit-box-shadow:0 1px 4px -1px rgba(0,0,0,.4);box-shadow:0 1px 4px -1px rgba(0,0,0,.4)}",""])},function(t,e){function n(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var r=n(e,t);return e[2]?"@media "+e[2]+"{"+r+"}":r}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<t.length;i++){var a=t[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),e.push(a))}},e}},function(t,e,n){function r(t){for(var e=0;e<t.length;e++){var n=t[e],r=f[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(o(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i<n.parts.length;i++)a.push(o(n.parts[i]));f[n.id]={id:n.id,refs:1,parts:a}}}}function i(){var t=document.createElement("style");return t.type="text/css",l.appendChild(t),t}function o(t){var e,n,r=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(r){if(d)return v;r.parentNode.removeChild(r)}if(g){var o=h++;r=p||(p=i()),e=a.bind(null,r,o,!1),n=a.bind(null,r,o,!0)}else r=i(),e=s.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}function a(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=m(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function s(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var u="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!u)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var c=n(32),f={},l=u&&(document.head||document.getElementsByTagName("head")[0]),p=null,h=0,d=!1,v=function(){},g="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,n){d=n;var i=c(t,e);return r(i),function(e){for(var n=[],o=0;o<i.length;o++){var a=i[o],s=f[a.id];s.refs--,n.push(s)}e?(i=c(t,e),r(i)):i=[];for(var o=0;o<n.length;o++){var s=n[o];if(0===s.refs){for(var u=0;u<s.parts.length;u++)s.parts[u]();delete f[s.id]}}}};var m=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],s=o[1],u=o[2],c=o[3],f={id:t+":"+i,css:s,media:u,sourceMap:c};r[a]?r[a].parts.push(f):n.push(r[a]={id:a,parts:[f]})}return n}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),o=(r(i),n(13)),a=r(o),s=n(87),u=r(s),c=[],f=[],l=[],p=[],h=a.default.version,d="https://localhost:8080/api/v1";e.default={name:"app",components:{Example:u.default},watch:{api_key:function(t,e){a.default.setup(t,{baseUrl:this.base_url,debug:!0})},base_url:function(t,e){a.default.setup(this.api_key,{baseUrl:t,debug:!0})}},data:function(){return{version:h,api_key:"xtdkxpcjwzkpgkhkcmhx",base_url:d,list_examples:c,connection_examples:f,pipe_examples:l,task_examples:p}},mounted:function(){a.default.setup("xtdkxpcjwzkpgkhkcmhx",{baseUrl:d,debug:!0})}}},function(t,e,n){"use strict";var r=n(0),i=n(35),o=n(36),a=n(37),s=n(38),u=n(39),c=n(40),f=n(41),l=n(44),p=n(45),h=n(46),d=n(47),v=n(48),g=n(49),m=n(50),y=n(51),_=n(52),b=n(53),w=n(54),x=n(55),E=n(56),O=n(57),C=n(58),S=n(59),A=n(60),k=function(t,e){switch(r.get(t,"op","")){default:return C.toCode(t);case"create":return i.toCode(t,e);case"convert":return o.toCode(t,e);case"copy":return a.toCode(t,e);case"dump":return s.toCode(t,e);case"echo":return u.toCode(t,e);case"email":return c.toCode(t,e);case"execute":return f.toCode(t,e);case"filter":return l.toCode(t,e);case"foreach":return p.toCode(t,e);case"insert":return h.toCode(t,e);case"limit":return d.toCode(t,e);case"list":return m.toCode(t,e);case"merge":return v.toCode(t,e);case"mkdir":return g.toCode(t,e);case"read":return y.toCode(t,e);case"render":return _.toCode(t,e);case"request":return b.toCode(t,e);case"select":return w.toCode(t,e);case"sequence":return x.toCode(t,e);case"set":return E.toCode(t,e);case"sleep":return O.toCode(t,e);case"transform":return S.toCode(t,e);case"write":return A.toCode(t,e)}};t.exports={create:i,convert:o,copy:a,dump:s,echo:u,email:c,execute:f.execute,insert:h,filter:l,foreach:p,javascript:f.javascript,limit:d,list:m,merge:v,mkdir:g,python:f.python,read:y,render:_,request:b,select:w,sequence:x,set:E,sleep:O,task:C,transform:S,write:A,toCode:k}},function(t,e,n){"use strict";var r=n(0),i=function(t,e){if(Array.isArray(t))return{op:"create",params:{content_type:"application/vnd.flexio.table",columns:t}};var n={op:"create",params:{path:t}};return void 0!==e&&(Array.isArray(e)?n.params.columns=e:n.params.content_type=e),n};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.path)||void 0,o=JSON.stringify(n.content_type)||void 0,a=JSON.stringify(n.columns)||void 0;return void 0!==i?void 0!==a?"create("+i+", "+a+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==a?"create("+a+")":void 0!==o?"":void 0},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){return{op:"convert",params:{input:t,output:e}}};i.toCode=function(t,e){var n=r.get(t,"params.input",{}),i=r.get(t,"params.output",{});return"convert("+JSON.stringify(n)+", "+JSON.stringify(i)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e,n){var i={op:"copy",params:{from:t,to:e}};return r.isPlainObject(n)&&(i.params.options=n),i};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.from)||'""',o=JSON.stringify(n.to)||'""',a=n.hasOwnProperty("options")&&r.isPlainObject(n.options)?JSON.stringify(n.options):null,s="copy("+i+", "+o;return null!==a&&(s+=", "+a),s+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"dump",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"dump("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"echo",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"echo("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(!r.isPlainObject(t))throw"The first function parameter must be an object";if(!t.hasOwnProperty("to"))throw"The `to` parameter is required";if(!t.hasOwnProperty("body_text"))throw"The `body_text` parameter is required";return{op:"email",params:t}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"email("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";(function(e,r){var i=n(0),o=function(){return void 0!==e},a=function(t){try{return o()?r(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},s=function(t){try{return o()?r.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},u=function(t){var e;try{e=t.toString(),e=e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))}catch(t){e=""}return e},c=function(t){if(i.isString(t))return t;if(i.isFunction(t)){var e;if(0==t.length)return"exports.flexio_handler = function(context) "+(e=u(t));if(e=t.toString(),"function"==e.substring(0,8))e=e.slice(8);else{var n=e.indexOf("=>"),r=e.indexOf("{");n>=0&&n<r&&(e=e.replace("=>s*{","{"))}return"exports.flexio_handler = function"+e}},f=function(){var t,e,n,r=Array.from(arguments),o=i.get(r,"[0]",null),s=i.get(r,"[1]",null),u=i.get(r,"[2]",null),f={};"python"==o||"javascript"==o?(t=o,e=s,null!==e&&void 0!==e||(e=""),n=u):(t="javascript",e=o,n=s),"javascript"==t&&(e=c(e)),f.lang=t;var l=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return e.match(l)?f.path=e:f.code=a(e),null!==n&&(f.integrity=n),{op:"execute",params:f}},l=function(){var t=Array.from(arguments);return t.unshift("javascript"),f.apply(this,t)},p=function(){var t=Array.from(arguments);return t.unshift("python"),f.apply(this,t)},h=function(t){var e=i.get(t,"params",{}),n=e.lang||"",r=s(e.code||"");switch(n){case"javascript":return-1!=r.indexOf("exports.flexio_handler")?(r=r.replace("exports.flexio_handler =",""),"javascript("+r.trim()+")"):"javascript("+JSON.stringify(r.trim())+")";case"python":return"python(`\n"+r+"\n`)";default:return"execute("+JSON.stringify(n)+", `\n"+r+"\n`)"}};t.exports={execute:f,javascript:l,python:p,toCode:h}}).call(e,n(2),n(3).Buffer)},function(t,e,n){"use strict";function r(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function i(t){return 3*t.length/4-r(t)}function o(t){var e,n,i,o,a,s=t.length;o=r(t),a=new l(3*s/4-o),n=o>0?s-4:s;var u=0;for(e=0;e<n;e+=4)i=f[t.charCodeAt(e)]<<18|f[t.charCodeAt(e+1)]<<12|f[t.charCodeAt(e+2)]<<6|f[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=f[t.charCodeAt(e)]<<2|f[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=f[t.charCodeAt(e)]<<10|f[t.charCodeAt(e+1)]<<4|f[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(t){return c[t>>18&63]+c[t>>12&63]+c[t>>6&63]+c[63&t]}function s(t,e,n){for(var r,i=[],o=e;o<n;o+=3)r=(t[o]<<16)+(t[o+1]<<8)+t[o+2],i.push(a(r));return i.join("")}function u(t){for(var e,n=t.length,r=n%3,i="",o=[],a=0,u=n-r;a<u;a+=16383)o.push(s(t,a,a+16383>u?u:a+16383));return 1===r?(e=t[n-1],i+=c[e>>2],i+=c[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=c[e>>10],i+=c[e>>4&63],i+=c[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=i,e.toByteArray=o,e.fromByteArray=u;for(var c=[],f=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,d=p.length;h<d;++h)c[h]=p[h],f[p.charCodeAt(h)]=h;f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,c=u>>1,f=-7,l=n?i-1:0,p=n?-1:1,h=t[e+l];for(l+=p,o=h&(1<<-f)-1,h>>=-f,f+=s;f>0;o=256*o+t[e+l],l+=p,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=r;f>0;a=256*a+t[e+l],l+=p,f-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=c}return(h?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,u,c=8*o-i-1,f=(1<<c)-1,l=f>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,d=r?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+l>=1?p/u:p*Math.pow(2,1-l),e*u>=2&&(a++,u/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[n+h]=255&s,h+=d,s/=256,i-=8);for(a=a<<i|s,c+=i;c>0;t[n+h]=255&a,h+=d,a/=256,c-=8);t[n+h-d]|=128*v}},function(t,e,n){"use strict";var r=n(0),i=function(t){if(r.isNil(t))throw"The `filter` parameter is required";return{op:"filter",params:{where:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"filter("+(JSON.stringify(n.where)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(5),o=function(t,e){var n={op:"foreach",params:{}};return("string"==typeof t||t instanceof String)&&(n.params.spec=t),i.isPipeObject(t)?n.params.run=t.pipe.task:i.isPipeObject(e)&&(n.params.run=e.pipe.task),n};o.toCode=function(t,e){var n=r.get(t,"params",{}),i=[];return n.hasOwnProperty("spec")&&i.push(JSON.stringify(n.spec)),n.hasOwnProperty("run")&&i.push(e.task.toCode(n.run,e)),"foreach("+i.join(", ")+")"},t.exports=o},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n;return n=Array.isArray(e)?e:[e],{op:"insert",params:{path:t,values:n}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"path",void 0),o=r.get(n,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"limit",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"limit("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(Array.isArray(t))var e=t;else for(var e=[],n=0;n<arguments.length;++n)e.push(arguments[n]);return{op:"merge",params:{files:e}}};i.toCode=function(t,e){for(var n=r.get(t,"params",{}),i=r.get(n,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=e.merge.toCode(i[o],e);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"mkdir",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"mkdir("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"list",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"list("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"read",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"read("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n={};return r.isPlainObject(t)?n=t:r.isString(t)&&(n.url=t),r.isPlainObject(e)&&r.assign(n,e),{op:"render",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.url)||"";return delete n.url,0==Object.keys(n).length?"render("+i+")":"render("+i+", "+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments),e=r.get(t,"[0]",""),n=r.get(t,"[1]",{});return n=r.isPlainObject(r.get(t,"[0]",{}))?r.get(t,"[0]",{}):r.assign({},{url:e},n),{op:"request",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"url",""),o=Object.keys(n);return 1==o.length&&"url"==o[0]?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments);return 1==t.length&&Array.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[])),{op:"select",params:{columns:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return{op:"sequence",params:{steps:t}}});r.toCode=function(t,e){for(var n=[],r=0;r<t.params.items.length;++r){var i=t.params.items[r],o=e.task.toCode(i,e);i.hasOwnProperty("params")&&i.params.hasOwnProperty("lang")&&"python"!=i.params.lang&&(o=o.replace(/\n/g,"\n ")),n.push(o)}var n=["Flexio.pipe()"].concat(n);return n.join("\n .")},t.exports=r},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0),o=n(5),a=function(t,e){return o.isPipeObject(e)&&(e=e.pipe.task),{op:"set",params:{var:t,value:e}}};a.toCode=function(t,e){var n=i.get(t,"params",{}),o=i.get(n,"variable",""),a=i.get(n,"value","");return o=JSON.stringify(o),a="object"===(void 0===a?"undefined":r(a))&&null!==a&&a.hasOwnProperty("op")?e.task.toCode(a,e):JSON.stringify(a),"set("+o+", "+a+")"},t.exports=a},function(t,e,n){"use strict";var r=n(0),i=function(t){return t=r.defaultTo(t,10),{op:"sleep",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"sleep("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return t});r.toCode=function(t,e){return"task("+JSON.stringify(t,null,2)+")"},t.exports=r},function(t,e,n){"use strict";var r=n(0),i=function(t){var e=Array.from(arguments),n={operations:[]},i={},o=[],a=r.get(e,"[0]");return r.isPlainObject(a)?(1==e.length&&r.has(a,"operations")?(i=r.pick(a,["columns","operations"]),i=r.assign(n,i)):(o=[].concat(e),i={operations:o}),{op:"transform",params:i}):{op:"transform",params:{columns:void 0,operations:o}}};i.toCode=function(t,e){var n=t.hasOwnProperty("params")?t.params:{};return!n.hasOwnProperty("columns")&&n.hasOwnProperty("operations")&&Array.isArray(n.operations)&&1==n.operations.length?"transform("+JSON.stringify(n.operations[0])+")":"transform("+JSON.stringify(n)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"write",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"write("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0);n(5);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.connection))throw"Unknown connection object type";i=e.connection}return new Promise(function(e,r){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var a=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,a,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})}}}},function(t,e,n){"use strict";var r=n(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.pipe))throw"Unknown pipe object type";i=e.pipe}return new Promise(function(e,r){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var a=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,a,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})},this.run=function(){var e=Array.from(arguments);e.push(null,null,null);var n,i,o={},a=null;e[0]instanceof t.pipe?(i=r.get(e[0],"pipe.eid",""),a=r.get(e[0],"pipe.task","")):Array.isArray(e[0])?(i="",a=e[0]):i=e[0],r.isPlainObject(e[1])&&(o=e[1]),n=r.isFunction(e[1])?e[1]:r.isFunction(e[2])?e[2]:null;var s=function(e,n){return{contentType:n,buffer:e,get blob(){return new Blob([this.buffer],{type:n})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(e,u){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var c={name:"SDK Pipe",description:"SDK Pipe",task:a,process_mode:"R"};t.http().post("/processes",c).then(function(i){var a=r.get(i,"data",{}),c=r.get(a,"eid","");t.util.debug("Created Process.");var f={method:"post",url:"/processes/"+c+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),t.http().request(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),a=s(i.data,o);t.util.callbackAdapter(null,a,e,u,n)}).catch(function(r){t.util.debug("Process Run Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}).catch(function(r){t.util.debug("Process Create Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}else{var f={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),o.hasOwnProperty("contentType")?f.headers={"Content-Type":o.contentType}:f.hasOwnProperty("data")&&(r.isPlainObject(f.data)||(r.isString(f.data)?f.headers={"Content-Type":"text/plain"}:f.headers={"Content-Type":"application/octet-stream"}));t.http()(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),a=s(i.data,o);t.util.callbackAdapter(null,a,e,u,n)}).catch(function(r){t.util.debug("Pipe Run Call Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}})}}}},function(t,e){t.exports={name:"flexio-sdk-js",version:"1.20.2",description:"Javascript SDK for managing Flex.io resources and services",author:"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js",main:"src/main.js","--browser":"src/main.js",browser:"dist/flexio.min.js",scripts:{dev:"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js",build:"npm run build:debug && npm run build:release && npm run build:examples",test:"jest"},repository:{type:"git",url:"git+https://github.com/flexiodata/flexio-sdk-js.git"},keywords:[],license:"Apache-2.0",bugs:{url:"https://github.com/flexiodata/flexio-sdk-js/issues"},homepage:"https://github.com/flexiodata/flexio-sdk-js/",dependencies:{},devDependencies:{autoprefixer:"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0",jest:"^22.4.2",vue:"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4",webpack:"^3.5.5","webpack-bundle-analyzer":"^2.11.1","webpack-dev-server":"^2.8.2"}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(e){if(!(this instanceof t.pipe))return new t.pipe(e);var n=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),a=i.get(r,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof a&&a.call(e,null,r)}).catch(function(n){e.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof a&&a.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),a=i.get(r,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),a=i.get(r,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof a&&a.call(e,null,e.pipe)}).catch(function(n){e.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},run:function(){var e=Array.from(arguments);return e.unshift(this),t.pipes.run.apply(null,e)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},getParams:function(){return i.assign({},this._params)},toCode:function(e){return t.task.toCode(this.pipe.task,t)}});return function(e){for(var n in t.task)t.task.hasOwnProperty(n)&&"toCode"!=n&&e(n,t.task[n])}(function(t,e){n[t]=function(){return n.addTask(e.apply(n,arguments))}}),void 0!==e&&("string"==typeof e||e instanceof String?n.pipe.eid=e:"object"===(void 0===e?"undefined":r(e))&&(e.hasOwnProperty("pipe")?n.pipe=JSON.parse(JSON.stringify(e.pipe)):e.hasOwnProperty("task")?n.pipe=JSON.parse(JSON.stringify(e)):e.hasOwnProperty("op")&&(n.pipe.task=e))),n}}},function(t,e,n){"use strict";var r=n(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?r.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return r.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty method";if(-1==i.indexOf(e))throw"Invalid method";return this._setInfo("method",e)},url:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("url",e):this},auth:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty auth";if(-1==o.indexOf(e))throw"Invalid auth";return"none"==e&&(e=""),this._setInfo("auth",e)},username:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("username",e):this},password:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("password",e):this},token:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("token",e):this},accessToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("access_token",e):this},refreshToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("refresh_token",e):this},expires:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isNumber(e)&&(e=""+e),r.isString(e)?this._setInfo("expires",e):this},data:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("data",{});return e=r.assign({},n,e),this._setInfo("data",e)},headers:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("headers",{});return e=r.assign({},n,e),this._setInfo("headers",e)},load:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),a=r.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):r.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof a&&a.call(e,null,i)}).catch(function(n){e.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),a=r.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(r.isPlainObject(o)&&(r.assign(this.connection,r.pick(o,["name","description","ename"])),a=r.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+r.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.saving=!1,t.util.debug("Connection Saved."),"function"==typeof a&&a.call(e,null,e.connection)}).catch(function(n){e.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},_getInfo:function(t,e){return r.get(this.connection,"connection_info."+t,e)},_setInfo:function(t,e){return this.connection.hasOwnProperty("connection_info")||(this.connection.connection_info={}),this.connection.connection_info[t]=e,this}}):new t.connection}}},function(t,e,n){"use strict";function r(t){this.options=i.isPlainObject(t)?t:{},this.post=function(t,e,n){return this.request(i.assign(n||{},{method:"POST",url:t,data:e}))},this.get=function(t,e){return this.request(i.assign(e||{},{method:"GET",url:t}))},this.request=function(t){var e=i.get(this.options,"baseURL",""),r=i.get(t,"url","");return-1!=r.indexOf("://")?e=r:(r="/"==r.substr(0,1)?r.substr(1):r,"/"!=e.slice(-1)&&(e+="/"),e+=r),t=i.assign({},t,{url:e}),o.isNodeJs()?n(67).apply(this,[t]):n(86).apply(this,[t])}}var i=n(0),o=n(5);t.exports={create:function(t){return new r(t)}}},function(t,e,n){"use strict";(function(e,r){function i(t){!0===this.options.insecure&&(e.env.NODE_TLS_REJECT_UNAUTHORIZED="0");var i=this.hasOwnProperty("https")?this.https:null;null===i&&(i=this.https=n(68));var a=n(24).URL,s=new a(o.get(t,"url",""),o.get(this.options,"baseUrl",void 0)),u={method:t.hasOwnProperty("method")?t.method.toUpperCase():"GET",port:s.port?s.port:443,host:s.hostname,path:s.pathname,encoding:null},c=o.assign({},o.get(this.options,"headers",{}),o.get(t,"headers",{}));Object.keys(c).length>0&&(u.headers=c);var f=null,l=o.get(t,"data",null);return o.isPlainObject(l)&&(l=JSON.stringify(l),f="application/json"),l&&(u.hasOwnProperty("headers")||(u.headers={}),f&&(u.headers["Content-Type"]=f),u.headers["Content-Length"]=r.byteLength(l)),new Promise(function(e,n){var o=[],a=i.request(u,function(n){var i={status:n.statusCode,statusText:n.statusMessage,headers:n.headers,request:a};n.on("data",function(t){o.push(t)}),n.on("end",function(){if(o=r.concat(o),"arraybuffer"!==t.responseType&&(o=o.toString(t.responseEncoding)),"string"==typeof o)try{o=JSON.parse(o)}catch(t){}i.data=o,e(i)})});a.on("error",function(t){n(response)}),a.end(l)})}var o=n(0);t.exports=i}).call(e,n(2),n(3).Buffer)},function(t,e,n){var r=n(69),i=t.exports;for(var o in r)r.hasOwnProperty(o)&&(i[o]=r[o]);i.request=function(t,e){return t||(t={}),t.scheme="https",t.protocol="https:",r.request.call(this,t,e)}},function(t,e,n){(function(t){var r=n(70),i=n(79),o=n(80),a=n(24),s=e;s.request=function(e,n){e="string"==typeof e?a.parse(e):i(e);var o=-1===t.location.protocol.search(/^https?:$/)?"http:":"",s=e.protocol||o,u=e.hostname||e.host,c=e.port,f=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?s+"//"+u:"")+(c?":"+c:"")+f,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var l=new r(e);return n&&l.on("response",n),l},s.get=function(t,e){var n=s.request(t,e);return n.end(),n},s.Agent=function(){},s.Agent.defaultMaxSockets=4,s.STATUS_CODES=o,s.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(e,n(1))},function(t,e,n){(function(e,r,i){function o(t,e){return s.fetch&&e?"fetch":s.mozchunkedarraybuffer?"moz-chunked-arraybuffer":s.msstream?"ms-stream":s.arraybuffer&&t?"arraybuffer":s.vbArray&&t?"text:vbarray":"text"}function a(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}var s=n(15),u=n(4),c=n(71),f=n(16),l=n(78),p=c.IncomingMessage,h=c.readyStates,d=t.exports=function(t){var n=this;f.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader("Authorization","Basic "+new e(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){n.setHeader(e,t.headers[e])});var r,i=!0;if("disable-fetch"===t.mode||"timeout"in t)i=!1,r=!0;else if("prefer-streaming"===t.mode)r=!1;else if("allow-wrong-content-type"===t.mode)r=!s.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");r=!0}n._mode=o(r,i),n.on("finish",function(){n._onFinish()})};u(d,f.Writable),d.prototype.setHeader=function(t,e){var n=this,r=t.toLowerCase();-1===v.indexOf(r)&&(n._headers[r]={name:t,value:e})},d.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},d.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},d.prototype._onFinish=function(){var t=this;if(!t._destroyed){var n=t._opts,o=t._headers,a=null;"GET"!==n.method&&"HEAD"!==n.method&&(a=s.blobConstructor?new r.Blob(t._body.map(function(t){return l(t)}),{type:(o["content-type"]||{}).value||""}):e.concat(t._body).toString());var u=[];if(Object.keys(o).forEach(function(t){var e=o[t].name,n=o[t].value;Array.isArray(n)?n.forEach(function(t){u.push([e,t])}):u.push([e,n])}),"fetch"===t._mode)r.fetch(t._opts.url,{method:t._opts.method,headers:u,body:a||void 0,mode:"cors",credentials:n.withCredentials?"include":"same-origin"}).then(function(e){t._fetchResponse=e,t._connect()},function(e){t.emit("error",e)});else{var c=t._xhr=new r.XMLHttpRequest;try{c.open(t._opts.method,t._opts.url,!0)}catch(e){return void i.nextTick(function(){t.emit("error",e)})}"responseType"in c&&(c.responseType=t._mode.split(":")[0]),"withCredentials"in c&&(c.withCredentials=!!n.withCredentials),"text"===t._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"timeout"in n&&(c.timeout=n.timeout,c.ontimeout=function(){t.emit("timeout")}),u.forEach(function(t){c.setRequestHeader(t[0],t[1])}),t._response=null,c.onreadystatechange=function(){switch(c.readyState){case h.LOADING:case h.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(c.onprogress=function(){t._onXHRProgress()}),c.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{c.send(a)}catch(e){return void i.nextTick(function(){t.emit("error",e)})}}}},d.prototype._onXHRProgress=function(){var t=this;a(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress())},d.prototype._connect=function(){var t=this;t._destroyed||(t._response=new p(t._xhr,t._fetchResponse,t._mode),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},d.prototype._write=function(t,e,n){this._body.push(t),n()},d.prototype.abort=d.prototype.destroy=function(){var t=this;t._destroyed=!0,t._response&&(t._response._destroyed=!0),t._xhr&&t._xhr.abort()},d.prototype.end=function(t,e,n){var r=this;"function"==typeof t&&(n=t,t=void 0),f.Writable.prototype.end.call(r,t,e,n)},d.prototype.flushHeaders=function(){},d.prototype.setTimeout=function(){},d.prototype.setNoDelay=function(){},d.prototype.setSocketKeepAlive=function(){};var v=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"]}).call(e,n(3).Buffer,n(1),n(2))},function(t,e,n){(function(t,r,i){var o=n(15),a=n(4),s=n(16),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,n,i){function a(){c.read().then(function(t){if(!u._destroyed){if(t.done)return void u.push(null);u.push(new r(t.value)),a()}}).catch(function(t){u.emit("error",t)})}var u=this;if(s.Readable.call(u),u._mode=i,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){t.nextTick(function(){u.emit("close")})}),"fetch"===i){u._fetchResponse=n,u.url=n.url,u.statusCode=n.status,u.statusMessage=n.statusText,n.headers.forEach(function(t,e){u.headers[e.toLowerCase()]=t,u.rawHeaders.push(e,t)});var c=n.body.getReader();a()}else{u._xhr=e,u._pos=0,u.url=e.responseURL,u.statusCode=e.status,u.statusMessage=e.statusText;if(e.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var n=e[1].toLowerCase();"set-cookie"===n?(void 0===u.headers[n]&&(u.headers[n]=[]),u.headers[n].push(e[2])):void 0!==u.headers[n]?u.headers[n]+=", "+e[2]:u.headers[n]=e[2],u.rawHeaders.push(e[1],e[2])}}),u._charset="x-user-defined",!o.overrideMimeType){var f=u.rawHeaders["mime-type"];if(f){var l=f.match(/;\s*charset=([^;])(;|$)/);l&&(u._charset=l[1].toLowerCase())}u._charset||(u._charset="utf-8")}}};a(c,s.Readable),c.prototype._read=function(){},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==u.DONE)break;try{n=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==n){t.push(new r(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var o=n.substr(t._pos);if("x-user-defined"===t._charset){for(var a=new r(o.length),s=0;s<o.length;s++)a[s]=255&o.charCodeAt(s);t.push(a)}else t.push(o,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==u.DONE||!e.response)break;n=e.response,t.push(new r(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==u.LOADING||!n)break;t.push(new r(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==u.LOADING)break;var c=new i.MSStreamReader;c.onprogress=function(){c.result.byteLength>t._pos&&(t.push(new r(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(n)}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(e,n(2),n(3).Buffer,n(1))},function(t,e){},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e,n){t.copy(e,n)}var o=n(9).Buffer;t.exports=function(){function t(){r(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return o.alloc(0);if(1===this.length)return this.head.data;for(var e=o.allocUnsafe(t>>>0),n=this.head,r=0;n;)i(n.data,e,r),r+=n.data.length,n=n.next;return e},t}()},function(t,e,n){function r(t,e){this._id=t,this._clearFn=e}var i=Function.prototype.apply;e.setTimeout=function(){return new r(i.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new r(i.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(75),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var r={callback:t,args:e};return c[u]=r,s(u),u++}function i(t){delete c[t]}function o(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}function a(t){if(f)setTimeout(a,0,t);else{var e=c[t];if(e){f=!0;try{o(e)}finally{i(t),f=!1}}}}if(!t.setImmediate){var s,u=1,c={},f=!1,l=t.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(t);p=p&&p.setTimeout?p:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),s=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():l&&"onreadystatechange"in l.createElement("script")?function(){var t=l.documentElement;s=function(e){var n=l.createElement("script");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),p.setImmediate=r,p.clearImmediate=i}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(1),n(2))},function(t,e,n){(function(e){function n(t,e){function n(){if(!i){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(r("noDeprecation"))return t;var i=!1;return n}function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=n}).call(e,n(1))},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);i.call(this,t)}t.exports=r;var i=n(23),o=n(7);o.inherits=n(4),o.inherits(r,i),r.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){var r=n(3).Buffer;t.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if("function"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(r.isBuffer(t)){for(var e=new Uint8Array(t.length),n=t.length,i=0;i<n;i++)e[i]=t[i];return e.buffer}throw new Error("Argument must be a Buffer")}},function(t,e){function n(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var i in n)r.call(n,i)&&(t[i]=n[i])}return t}t.exports=n;var r=Object.prototype.hasOwnProperty},function(t,e){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},function(t,e,n){(function(t,r){var i;!function(o){function a(t){throw new RangeError(R[t])}function s(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function u(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),t=t.replace(j,"."),r+s(t.split("."),e).join(".")}function c(t){for(var e,n,r=[],i=0,o=t.length;i<o;)e=t.charCodeAt(i++),e>=55296&&e<=56319&&i<o?(n=t.charCodeAt(i++),56320==(64512&n)?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),i--)):r.push(e);return r}function f(t){return s(t,function(t){var e="";return t>65535&&(t-=65536,e+=D(t>>>10&1023|55296),t=56320|1023&t),e+=D(t)}).join("")}function l(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:w}function p(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function h(t,e,n){var r=0;for(t=n?$(t/C):t>>1,t+=$(t/e);t>P*E>>1;r+=w)t=$(t/P);return $(r+(P+1)*t/(t+O))}function d(t){var e,n,r,i,o,s,u,c,p,d,v=[],g=t.length,m=0,y=A,_=S;for(n=t.lastIndexOf(k),n<0&&(n=0),r=0;r<n;++r)t.charCodeAt(r)>=128&&a("not-basic"),v.push(t.charCodeAt(r));for(i=n>0?n+1:0;i<g;){for(o=m,s=1,u=w;i>=g&&a("invalid-input"),c=l(t.charCodeAt(i++)),(c>=w||c>$((b-m)/s))&&a("overflow"),m+=c*s,p=u<=_?x:u>=_+E?E:u-_,!(c<p);u+=w)d=w-p,s>$(b/d)&&a("overflow"),s*=d;e=v.length+1,_=h(m-o,e,0==o),$(m/e)>b-y&&a("overflow"),y+=$(m/e),m%=e,v.splice(m++,0,y)}return f(v)}function v(t){var e,n,r,i,o,s,u,f,l,d,v,g,m,y,_,O=[];for(t=c(t),g=t.length,e=A,n=0,o=S,s=0;s<g;++s)(v=t[s])<128&&O.push(D(v));for(r=i=O.length,i&&O.push(k);r<g;){for(u=b,s=0;s<g;++s)(v=t[s])>=e&&v<u&&(u=v);for(m=r+1,u-e>$((b-n)/m)&&a("overflow"),n+=(u-e)*m,e=u,s=0;s<g;++s)if(v=t[s],v<e&&++n>b&&a("overflow"),v==e){for(f=n,l=w;d=l<=o?x:l>=o+E?E:l-o,!(f<d);l+=w)_=f-d,y=w-d,O.push(D(p(d+_%y,0))),f=$(_/y);O.push(D(p(f,0))),o=h(n,m,r==i),n=0,++r}++n,++e}return O.join("")}function g(t){return u(t,function(t){return N.test(t)?d(t.slice(4).toLowerCase()):t})}function m(t){return u(t,function(t){return T.test(t)?"xn--"+v(t):t})}var y=("object"==typeof e&&e&&e.nodeType,"object"==typeof t&&t&&t.nodeType,"object"==typeof r&&r);var _,b=2147483647,w=36,x=1,E=26,O=38,C=700,S=72,A=128,k="-",N=/^xn--/,T=/[^\x20-\x7E]/,j=/[\x2E\u3002\uFF0E\uFF61]/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},P=w-x,$=Math.floor,D=String.fromCharCode;_={version:"1.4.1",ucs2:{decode:c,encode:f},decode:d,encode:v,toASCII:m,toUnicode:g},void 0!==(i=function(){return _}.call(e,n,e,t))&&(t.exports=i)}()}).call(e,n(12)(t),n(1))},function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,n){"use strict";e.decode=e.parse=n(84),e.encode=e.stringify=n(85)},function(t,e,n){"use strict";function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,o){e=e||"&",n=n||"=";var a={};if("string"!=typeof t||0===t.length)return a;var s=/\+/g;t=t.split(e);var u=1e3;o&&"number"==typeof o.maxKeys&&(u=o.maxKeys);var c=t.length;u>0&&c>u&&(c=u);for(var f=0;f<c;++f){var l,p,h,d,v=t[f].replace(s,"%20"),g=v.indexOf(n);g>=0?(l=v.substr(0,g),p=v.substr(g+1)):(l=v,p=""),h=decodeURIComponent(l),d=decodeURIComponent(p),r(a,h)?i(a[h])?a[h].push(d):a[h]=[a[h],d]:a[h]=d}return a};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";function r(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r));return n}var i=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,s){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?r(a(t),function(a){var s=encodeURIComponent(i(a))+n;return o(t[a])?r(t[a],function(t){return s+encodeURIComponent(i(t))}).join(e):s+encodeURIComponent(i(t[a]))}).join(e):s?encodeURIComponent(i(s))+n+encodeURIComponent(i(t)):""};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},a=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";function r(t){function e(t){for(var e={},n=t?t.split("\r\n"):[],r=0,i=n.length;r<i;r++){var o=n[r].indexOf(":");o>0&&(e[n[r].substr(0,o).trim()]=n[r].substr(o+1).trim())}return e}var n=i.assign({},i.get(this.options,"headers",{}),i.get(t,"headers",{})),r=i.get(t,"data",null);return"undefined"!=typeof FormData&&r instanceof FormData?delete n["Content-Type"]:i.isPlainObject(r)&&(r=JSON.stringify(r),n["Content-Type"]="application/json"),new Promise(function(i,o){function a(e){var n=t.responseType&&"text"!==t.responseType?e.response:e.responseText;if("string"==typeof n)try{n=JSON.parse(n)}catch(t){}return n}var s=new XMLHttpRequest;if(s.open(t.method.toUpperCase(),t.url,!0),t.responseType&&(s.responseType=t.responseType),Object.keys(n).length>0)for(var u in n)n.hasOwnProperty(u)&&s.setRequestHeader(u,n[u]);s.onload=function(){var n=a(s),r={data:n,status:1223===s.status?204:s.status,statusText:1223===s.status?"No Content":s.statusText,headers:e(s.getAllResponseHeaders()),config:t,request:s};i(r),s=null},s.onerror=function(){var n=a(s),r={data:n,status:s.status,statusText:s.statusText,headers:e(s.getAllResponseHeaders()),config:t,request:s};o(r),s=null},s.send(r)})}var i=n(0);t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(88),i=n.n(r),o=n(90),a=n(10),s=a(i.a,o.a,null,null,null);e.default=s.exports},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(exports,"__esModule",{value:!0});var _lodash=__webpack_require__(11),_lodash2=_interopRequireDefault(_lodash),_util=__webpack_require__(5),_util2=_interopRequireDefault(_util),_flexio=__webpack_require__(13),_flexio2=_interopRequireDefault(_flexio),_vueSimpleSpinner=__webpack_require__(89),_vueSimpleSpinner2=_interopRequireDefault(_vueSimpleSpinner);exports.default={props:{title:{type:String,default:""},description:{type:String,default:""},code:{type:String,default:""},fn:{type:Function,default:function(){return function(){alert("No function specified!")}}},"is-editable":{type:Boolean,default:!1},"show-run":{type:Boolean,default:!0}},components:{VueSimpleSpinner:_vueSimpleSpinner2.default},data:function(){return{result:"",img_src:"",editable_code:"Flexio.pipe()\n .echo('Hello, World!')\n .run(callback)",is_loading:!1}},computed:{has_image_result:function(){return this.img_src.length>0},has_text_result:function(){return this.result.length>0},code_trimmed:function(){return this.code.trim()}},methods:{run:function run(){var _this=this;if("function"==typeof this.fn){this.is_loading=!0;var fn=this.fn;this.isEditable&&(fn=function fn(Flexio,callback){eval(_this.editable_code)}),fn.call(this,_flexio2.default,function(t,e){_this.result="",_this.img_src="";var n=_lodash2.default.get(e,"contentType","");if("image/"==n.substr(0,6)){var r=window.URL||window.webkitURL;_this.img_src=r.createObjectURL(e.blob)}else"application/json"==n?_this.result=JSON.stringify(e.data,null,2):n.length>0&&_lodash2.default.has(e,"buffer")?_this.result=e.text:_this.result=JSON.stringify(e,null,2);_this.is_loading=!1},function(t){_this.is_loading=!1})}}}}},function(t,e,n){/*! +function r(t){return void 0===t||null===t}function i(t){return void 0!==t&&null!==t}function o(t){return!0===t}function a(t){return!1===t}function s(t){return"string"==typeof t||"number"==typeof t||"boolean"==typeof t}function u(t){return null!==t&&"object"==typeof t}function c(t){return"[object Object]"===Qi.call(t)}function f(t){return"[object RegExp]"===Qi.call(t)}function l(t){var e=parseFloat(t);return e>=0&&Math.floor(e)===e&&isFinite(t)}function p(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function d(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i<r.length;i++)n[r[i]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}function v(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}function g(t,e){return no.call(t,e)}function m(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function y(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function _(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function b(t,e){for(var n in e)t[n]=e[n];return t}function w(t){for(var e={},n=0;n<t.length;n++)t[n]&&b(e,t[n]);return e}function x(t,e,n){}function E(t,e){if(t===e)return!0;var n=u(t),r=u(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var i=Array.isArray(t),o=Array.isArray(e);if(i&&o)return t.length===e.length&&t.every(function(t,n){return E(t,e[n])});if(i||o)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every(function(n){return E(t[n],e[n])})}catch(t){return!1}}function O(t,e){for(var n=0;n<t.length;n++)if(E(t[n],e))return n;return-1}function C(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}function S(t){var e=(t+"").charCodeAt(0);return 36===e||95===e}function A(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}function k(t){if(!go.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}function N(t,n,r){if(ho.errorHandler)ho.errorHandler.call(null,t,n,r);else{if("production"!==e.env.NODE_ENV&&mo("Error in "+r+': "'+t.toString()+'"',n),!So||"undefined"==typeof console)throw t;console.error(t)}}function T(t){return"function"==typeof t&&/native code/.test(t.toString())}function j(t){zo.target&&Ho.push(zo.target),zo.target=t}function R(){zo.target=Ho.pop()}function P(t,e,n){t.__proto__=e}function $(t,e,n){for(var r=0,i=n.length;r<i;r++){var o=n[r];A(t,o,e[o])}}function D(t,e){if(u(t)){var n;return g(t,"__ob__")&&t.__ob__ instanceof Go?n=t.__ob__:Ko.shouldConvert&&!Uo()&&(Array.isArray(t)||c(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new Go(t)),e&&n&&n.vmCount++,n}}function L(t,n,r,i,o){var a=new zo,s=Object.getOwnPropertyDescriptor(t,n);if(!s||!1!==s.configurable){var u=s&&s.get,c=s&&s.set,f=!o&&D(r);Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:function(){var e=u?u.call(t):r;return zo.target&&(a.depend(),f&&(f.dep.depend(),Array.isArray(e)&&U(e))),e},set:function(n){var s=u?u.call(t):r;n===s||n!==n&&s!==s||("production"!==e.env.NODE_ENV&&i&&i(),c?c.call(t,n):r=n,f=!o&&D(n),a.notify())}})}}function I(t,n,r){if(Array.isArray(t)&&l(n))return t.length=Math.max(t.length,n),t.splice(n,1,r),r;if(g(t,n))return t[n]=r,r;var i=t.__ob__;return t._isVue||i&&i.vmCount?("production"!==e.env.NODE_ENV&&mo("Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfront in the data option."),r):i?(L(i.value,n,r),i.dep.notify(),r):(t[n]=r,r)}function M(t,n){if(Array.isArray(t)&&l(n))return void t.splice(n,1);var r=t.__ob__;if(t._isVue||r&&r.vmCount)return void("production"!==e.env.NODE_ENV&&mo("Avoid deleting properties on a Vue instance or its root $data - just set it to null."));g(t,n)&&(delete t[n],r&&r.dep.notify())}function U(t){for(var e=void 0,n=0,r=t.length;n<r;n++)e=t[n],e&&e.__ob__&&e.__ob__.dep.depend(),Array.isArray(e)&&U(e)}function B(t,e){if(!e)return t;for(var n,r,i,o=Object.keys(e),a=0;a<o.length;a++)n=o[a],r=t[n],i=e[n],g(t,n)?c(r)&&c(i)&&B(r,i):I(t,n,i);return t}function V(t,e,n){return n?t||e?function(){var r="function"==typeof e?e.call(n):e,i="function"==typeof t?t.call(n):t;return r?B(r,i):i}:void 0:e?t?function(){return B("function"==typeof e?e.call(this):e,"function"==typeof t?t.call(this):t)}:e:t}function F(t,e){return e?t?t.concat(e):Array.isArray(e)?e:[e]:t}function q(t,e){var n=Object.create(t||null);return e?b(n,e):n}function z(t){for(var e in t.components){var n=e.toLowerCase();(to(n)||ho.isReservedTag(n))&&mo("Do not use built-in or reserved HTML elements as component id: "+e)}}function H(t){var n=t.props;if(n){var r,i,o,a={};if(Array.isArray(n))for(r=n.length;r--;)i=n[r],"string"==typeof i?(o=io(i),a[o]={type:null}):"production"!==e.env.NODE_ENV&&mo("props must be strings when using array syntax.");else if(c(n))for(var s in n)i=n[s],o=io(s),a[o]=c(i)?i:{type:i};t.props=a}}function J(t){var e=t.inject;if(Array.isArray(e))for(var n=t.inject={},r=0;r<e.length;r++)n[e[r]]=e[r]}function W(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}function Y(t,n,r){function i(e){var i=Zo[e]||ta;c[e]=i(t[e],n[e],r,e)}"production"!==e.env.NODE_ENV&&z(n),"function"==typeof n&&(n=n.options),H(n),J(n),W(n);var o=n.extends;if(o&&(t=Y(t,o,r)),n.mixins)for(var a=0,s=n.mixins.length;a<s;a++)t=Y(t,n.mixins[a],r);var u,c={};for(u in t)i(u);for(u in n)g(t,u)||i(u);return c}function K(t,n,r,i){if("string"==typeof r){var o=t[n];if(g(o,r))return o[r];var a=io(r);if(g(o,a))return o[a];var s=oo(a);if(g(o,s))return o[s];var u=o[r]||o[a]||o[s];return"production"!==e.env.NODE_ENV&&i&&!u&&mo("Failed to resolve "+n.slice(0,-1)+": "+r,t),u}}function G(t,n,r,i){var o=n[t],a=!g(r,t),s=r[t];if(et(Boolean,o.type)&&(a&&!g(o,"default")?s=!1:et(String,o.type)||""!==s&&s!==so(t)||(s=!0)),void 0===s){s=Z(i,o,t);var u=Ko.shouldConvert;Ko.shouldConvert=!0,D(s),Ko.shouldConvert=u}return"production"!==e.env.NODE_ENV&&X(o,t,s,i,a),s}function Z(t,n,r){if(g(n,"default")){var i=n.default;return"production"!==e.env.NODE_ENV&&u(i)&&mo('Invalid default value for prop "'+r+'": Props with type Object/Array must use a factory function to return the default value.',t),t&&t.$options.propsData&&void 0===t.$options.propsData[r]&&void 0!==t._props[r]?t._props[r]:"function"==typeof i&&"Function"!==tt(n.type)?i.call(t):i}}function X(t,e,n,r,i){if(t.required&&i)return void mo('Missing required prop: "'+e+'"',r);if(null!=n||t.required){var o=t.type,a=!o||!0===o,s=[];if(o){Array.isArray(o)||(o=[o]);for(var u=0;u<o.length&&!a;u++){var c=Q(n,o[u]);s.push(c.expectedType||""),a=c.valid}}if(!a)return void mo('Invalid prop: type check failed for prop "'+e+'". Expected '+s.map(oo).join(", ")+", got "+Object.prototype.toString.call(n).slice(8,-1)+".",r);var f=t.validator;f&&(f(n)||mo('Invalid prop: custom validator check failed for prop "'+e+'".',r))}}function Q(t,e){var n,r=tt(e);if(ea.test(r)){var i=typeof t;n=i===r.toLowerCase(),n||"object"!==i||(n=t instanceof e)}else n="Object"===r?c(t):"Array"===r?Array.isArray(t):t instanceof e;return{valid:n,expectedType:r}}function tt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function et(t,e){if(!Array.isArray(e))return tt(e)===tt(t);for(var n=0,r=e.length;n<r;n++)if(tt(e[n])===tt(t))return!0;return!1}function nt(t){return new fa(void 0,void 0,void 0,String(t))}function rt(t,e){var n=new fa(t.tag,t.data,t.children,t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return n.ns=t.ns,n.isStatic=t.isStatic,n.key=t.key,n.isComment=t.isComment,n.isCloned=!0,e&&t.children&&(n.children=it(t.children)),n}function it(t,e){for(var n=t.length,r=new Array(n),i=0;i<n;i++)r[i]=rt(t[i],e);return r}function ot(t){function e(){var t=arguments,n=e.fns;if(!Array.isArray(n))return n.apply(null,arguments);for(var r=n.slice(),i=0;i<r.length;i++)r[i].apply(null,t)}return e.fns=t,e}function at(t,e){return t.plain?-1:e.plain?1:0}function st(t,n,i,o,a){var s,u,c,f,l=[],p=!1;for(s in t)u=t[s],c=n[s],f=da(s),f.plain||(p=!0),r(u)?"production"!==e.env.NODE_ENV&&mo('Invalid handler for event "'+f.name+'": got '+String(u),a):r(c)?(r(u.fns)&&(u=t[s]=ot(u)),f.handler=u,l.push(f)):u!==c&&(c.fns=u,t[s]=c);if(l.length){p&&l.sort(at);for(var h=0;h<l.length;h++){var d=l[h];i(d.name,d.handler,d.once,d.capture,d.passive)}}for(s in n)r(t[s])&&(f=da(s),o(f.name,n[s],f.capture))}function ut(t,e,n){function a(){n.apply(this,arguments),v(s.fns,a)}var s,u=t[e];r(u)?s=ot([a]):i(u.fns)&&o(u.merged)?(s=u,s.fns.push(a)):s=ot([u,a]),s.merged=!0,t[e]=s}function ct(t,n,o){var a=n.options.props;if(!r(a)){var s={},u=t.attrs,c=t.props;if(i(u)||i(c))for(var f in a){var l=so(f);if("production"!==e.env.NODE_ENV){var p=f.toLowerCase();f!==p&&u&&g(u,p)&&yo('Prop "'+p+'" is passed to component '+_o(o||n)+', but the declared prop name is "'+f+'". Note that HTML attributes are case-insensitive and camelCased props need to use their kebab-case equivalents when using in-DOM templates. You should probably use "'+l+'" instead of "'+f+'".')}ft(s,c,f,l,!0)||ft(s,u,f,l,!1)}return s}}function ft(t,e,n,r,o){if(i(e)){if(g(e,n))return t[n]=e[n],o||delete e[n],!0;if(g(e,r))return t[n]=e[r],o||delete e[r],!0}return!1}function lt(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}function pt(t){return s(t)?[nt(t)]:Array.isArray(t)?dt(t):void 0}function ht(t){return i(t)&&i(t.text)&&a(t.isComment)}function dt(t,e){var n,a,u,c=[];for(n=0;n<t.length;n++)a=t[n],r(a)||"boolean"==typeof a||(u=c[c.length-1],Array.isArray(a)?c.push.apply(c,dt(a,(e||"")+"_"+n)):s(a)?ht(u)?u.text+=String(a):""!==a&&c.push(nt(a)):ht(a)&&ht(u)?c[c.length-1]=nt(u.text+a.text):(o(t._isVList)&&i(a.tag)&&r(a.key)&&i(e)&&(a.key="__vlist"+e+"_"+n+"__"),c.push(a)));return c}function vt(t,e){return t.__esModule&&t.default&&(t=t.default),u(t)?e.extend(t):t}function gt(t,e,n,r,i){var o=ha();return o.asyncFactory=t,o.asyncMeta={data:e,context:n,children:r,tag:i},o}function mt(t,n,a){if(o(t.error)&&i(t.errorComp))return t.errorComp;if(i(t.resolved))return t.resolved;if(o(t.loading)&&i(t.loadingComp))return t.loadingComp;if(!i(t.contexts)){var s=t.contexts=[a],c=!0,f=function(){for(var t=0,e=s.length;t<e;t++)s[t].$forceUpdate()},l=C(function(e){t.resolved=vt(e,n),c||f()}),p=C(function(n){"production"!==e.env.NODE_ENV&&mo("Failed to resolve async component: "+String(t)+(n?"\nReason: "+n:"")),i(t.errorComp)&&(t.error=!0,f())}),h=t(l,p);return u(h)&&("function"==typeof h.then?r(t.resolved)&&h.then(l,p):i(h.component)&&"function"==typeof h.component.then&&(h.component.then(l,p),i(h.error)&&(t.errorComp=vt(h.error,n)),i(h.loading)&&(t.loadingComp=vt(h.loading,n),0===h.delay?t.loading=!0:setTimeout(function(){r(t.resolved)&&r(t.error)&&(t.loading=!0,f())},h.delay||200)),i(h.timeout)&&setTimeout(function(){r(t.resolved)&&p("production"!==e.env.NODE_ENV?"timeout ("+h.timeout+"ms)":null)},h.timeout))),c=!1,t.loading?t.loadingComp:t.resolved}t.contexts.push(a)}function yt(t){return t.isComment&&t.asyncFactory}function _t(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(i(n)&&(i(n.componentOptions)||yt(n)))return n}}function bt(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Et(t,e)}function wt(t,e,n){n?pa.$once(t,e):pa.$on(t,e)}function xt(t,e){pa.$off(t,e)}function Et(t,e,n){pa=t,st(e,n||{},wt,xt,t)}function Ot(t,e){var n={};if(!t)return n;for(var r=[],i=0,o=t.length;i<o;i++){var a=t[i],s=a.data;if(s&&s.attrs&&s.attrs.slot&&delete s.attrs.slot,a.context!==e&&a.functionalContext!==e||!s||null==s.slot)r.push(a);else{var u=a.data.slot,c=n[u]||(n[u]=[]);"template"===a.tag?c.push.apply(c,a.children):c.push(a)}}return r.every(Ct)||(n.default=r),n}function Ct(t){return t.isComment||" "===t.text}function St(t,e){e=e||{};for(var n=0;n<t.length;n++)Array.isArray(t[n])?St(t[n],e):e[t[n].key]=t[n].fn;return e}function At(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}function kt(t,n,r){t.$el=n,t.$options.render||(t.$options.render=ha,"production"!==e.env.NODE_ENV&&(t.$options.template&&"#"!==t.$options.template.charAt(0)||t.$options.el||n?mo("You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.",t):mo("Failed to mount component: template or render function not defined.",t))),Pt(t,"beforeMount");var i;return i="production"!==e.env.NODE_ENV&&ho.performance&&Xo?function(){var e=t._name,n=t._uid,i="vue-perf-start:"+n,o="vue-perf-end:"+n;Xo(i);var a=t._render();Xo(o),Qo(e+" render",i,o),Xo(i),t._update(a,r),Xo(o),Qo(e+" patch",i,o)}:function(){t._update(t._render(),r)},t._watcher=new Sa(t,i,x),r=!1,null==t.$vnode&&(t._isMounted=!0,Pt(t,"mounted")),t}function Nt(t,n,r,i,o){"production"!==e.env.NODE_ENV&&(ga=!0);var a=!!(o||t.$options._renderChildren||i.data.scopedSlots||t.$scopedSlots!==vo);if(t.$options._parentVnode=i,t.$vnode=i,t._vnode&&(t._vnode.parent=i),t.$options._renderChildren=o,t.$attrs=i.data&&i.data.attrs||vo,t.$listeners=r||vo,n&&t.$options.props){Ko.shouldConvert=!1;for(var s=t._props,u=t.$options._propKeys||[],c=0;c<u.length;c++){var f=u[c];s[f]=G(f,t.$options.props,n,t)}Ko.shouldConvert=!0,t.$options.propsData=n}if(r){var l=t.$options._parentListeners;t.$options._parentListeners=r,Et(t,r,l)}a&&(t.$slots=Ot(o,i.context),t.$forceUpdate()),"production"!==e.env.NODE_ENV&&(ga=!1)}function Tt(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function jt(t,e){if(e){if(t._directInactive=!1,Tt(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)jt(t.$children[n]);Pt(t,"activated")}}function Rt(t,e){if(!(e&&(t._directInactive=!0,Tt(t))||t._inactive)){t._inactive=!0;for(var n=0;n<t.$children.length;n++)Rt(t.$children[n]);Pt(t,"deactivated")}}function Pt(t,e){var n=t.$options[e];if(n)for(var r=0,i=n.length;r<i;r++)try{n[r].call(t)}catch(n){N(n,t,e+" hook")}t._hasHookEvent&&t.$emit("hook:"+e)}function $t(){Oa=ya.length=_a.length=0,ba={},"production"!==e.env.NODE_ENV&&(wa={}),xa=Ea=!1}function Dt(){Ea=!0;var t,n;for(ya.sort(function(t,e){return t.id-e.id}),Oa=0;Oa<ya.length;Oa++)if(t=ya[Oa],n=t.id,ba[n]=null,t.run(),"production"!==e.env.NODE_ENV&&null!=ba[n]&&(wa[n]=(wa[n]||0)+1,wa[n]>ma)){mo("You may have an infinite update loop "+(t.user?'in watcher with expression "'+t.expression+'"':"in a component render function."),t.vm);break}var r=_a.slice(),i=ya.slice();$t(),Mt(r),Lt(i),Bo&&ho.devtools&&Bo.emit("flush")}function Lt(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&Pt(r,"updated")}}function It(t){t._inactive=!1,_a.push(t)}function Mt(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,jt(t[e],!0)}function Ut(t){var e=t.id;if(null==ba[e]){if(ba[e]=!0,Ea){for(var n=ya.length-1;n>Oa&&ya[n].id>t.id;)n--;ya.splice(n+1,0,t)}else ya.push(t);xa||(xa=!0,Fo(Dt))}}function Bt(t){Aa.clear(),Vt(t,Aa)}function Vt(t,e){var n,r,i=Array.isArray(t);if((i||u(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(i)for(n=t.length;n--;)Vt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)Vt(t[r[n]],e)}}function Ft(t,e,n){ka.get=function(){return this[e][n]},ka.set=function(t){this[e][n]=t},Object.defineProperty(t,n,ka)}function qt(t){t._watchers=[];var e=t.$options;e.props&&Ht(t,e.props),e.methods&&Zt(t,e.methods),e.data?Jt(t):D(t._data={},!0),e.computed&&Yt(t,e.computed),e.watch&&e.watch!==$o&&Xt(t,e.watch)}function zt(t,e){c(t.$options[e])||mo('component option "'+e+'" should be an object.',t)}function Ht(t,n){var r=t.$options.propsData||{},i=t._props={},o=t.$options._propKeys=[],a=!t.$parent;Ko.shouldConvert=a;for(var s in n)!function(a){o.push(a);var s=G(a,n,r,t);"production"!==e.env.NODE_ENV?((eo(a)||ho.isReservedAttr(a))&&mo('"'+a+'" is a reserved attribute and cannot be used as component prop.',t),L(i,a,s,function(){t.$parent&&!ga&&mo("Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: \""+a+'"',t)})):L(i,a,s),a in t||Ft(t,"_props",a)}(s);Ko.shouldConvert=!0}function Jt(t){var n=t.$options.data;n=t._data="function"==typeof n?Wt(n,t):n||{},c(n)||(n={},"production"!==e.env.NODE_ENV&&mo("data functions should return an object:\nhttps://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function",t));for(var r=Object.keys(n),i=t.$options.props,o=t.$options.methods,a=r.length;a--;){var s=r[a];"production"!==e.env.NODE_ENV&&o&&g(o,s)&&mo('Method "'+s+'" has already been defined as a data property.',t),i&&g(i,s)?"production"!==e.env.NODE_ENV&&mo('The data property "'+s+'" is already declared as a prop. Use prop default value instead.',t):S(s)||Ft(t,"_data",s)}D(n,!0)}function Wt(t,e){try{return t.call(e)}catch(t){return N(t,e,"data()"),{}}}function Yt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"computed");var r=t._computedWatchers=Object.create(null),i=Uo();for(var o in n){var a=n[o],s="function"==typeof a?a:a.get;"production"!==e.env.NODE_ENV&&null==s&&mo('Getter is missing for computed property "'+o+'".',t),i||(r[o]=new Sa(t,s||x,x,Na)),o in t?"production"!==e.env.NODE_ENV&&(o in t.$data?mo('The computed property "'+o+'" is already defined in data.',t):t.$options.props&&o in t.$options.props&&mo('The computed property "'+o+'" is already defined as a prop.',t)):Kt(t,o,a)}}function Kt(t,n,r){var i=!Uo();"function"==typeof r?(ka.get=i?Gt(n):r,ka.set=x):(ka.get=r.get?i&&!1!==r.cache?Gt(n):r.get:x,ka.set=r.set?r.set:x),"production"!==e.env.NODE_ENV&&ka.set===x&&(ka.set=function(){mo('Computed property "'+n+'" was assigned to but it has no setter.',this)}),Object.defineProperty(t,n,ka)}function Gt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),zo.target&&e.depend(),e.value}}function Zt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"methods");var r=t.$options.props;for(var i in n)"production"!==e.env.NODE_ENV&&(null==n[i]&&mo('Method "'+i+'" has an undefined value in the component definition. Did you reference the function correctly?',t),r&&g(r,i)&&mo('Method "'+i+'" has already been defined as a prop.',t),i in t&&S(i)&&mo('Method "'+i+'" conflicts with an existing Vue instance method. Avoid defining component methods that start with _ or $.')),t[i]=null==n[i]?x:y(n[i],t)}function Xt(t,n){"production"!==e.env.NODE_ENV&&zt(t,"watch");for(var r in n){var i=n[r];if(Array.isArray(i))for(var o=0;o<i.length;o++)Qt(t,r,i[o]);else Qt(t,r,i)}}function Qt(t,e,n,r){return c(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}function te(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}function ee(t){var n=ne(t.$options.inject,t);n&&(Ko.shouldConvert=!1,Object.keys(n).forEach(function(r){"production"!==e.env.NODE_ENV?L(t,r,n[r],function(){mo('Avoid mutating an injected value directly since the changes will be overwritten whenever the provided component re-renders. injection being mutated: "'+r+'"',t)}):L(t,r,n[r])}),Ko.shouldConvert=!0)}function ne(t,n){if(t){for(var r=Object.create(null),i=Vo?Reflect.ownKeys(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}):Object.keys(t),o=0;o<i.length;o++){for(var a=i[o],s=t[a],u=n;u;){if(u._provided&&s in u._provided){r[a]=u._provided[s];break}u=u.$parent}"production"===e.env.NODE_ENV||u||mo('Injection "'+a+'" not found',n)}return r}}function re(t,e,n,r,o){var a={},s=t.options.props;if(i(s))for(var u in s)a[u]=G(u,s,e||vo);else i(n.attrs)&&ie(a,n.attrs),i(n.props)&&ie(a,n.props);var c=Object.create(r),f=function(t,e,n,r){return fe(c,t,e,n,r,!0)},l=t.options.render.call(null,f,{data:n,props:a,children:o,parent:r,listeners:n.on||vo,injections:ne(t.options.inject,r),slots:function(){return Ot(o,r)}});return l instanceof fa&&(l.functionalContext=r,l.functionalOptions=t.options,n.slot&&((l.data||(l.data={})).slot=n.slot)),l}function ie(t,e){for(var n in e)t[io(n)]=e[n]}function oe(t,n,a,s,c){if(!r(t)){var f=a.$options._base;if(u(t)&&(t=f.extend(t)),"function"!=typeof t)return void("production"!==e.env.NODE_ENV&&mo("Invalid Component definition: "+String(t),a));var l;if(r(t.cid)&&(l=t,void 0===(t=mt(l,f,a))))return gt(l,n,a,s,c);n=n||{},Ce(t),i(n.model)&&ce(t.options,n);var p=ct(n,t,c);if(o(t.options.functional))return re(t,p,n,a,s);var h=n.on;if(n.on=n.nativeOn,o(t.options.abstract)){var d=n.slot;n={},d&&(n.slot=d)}se(n);var v=t.options.name||c;return new fa("vue-component-"+t.cid+(v?"-"+v:""),n,void 0,void 0,void 0,a,{Ctor:t,propsData:p,listeners:h,tag:c,children:s},l)}}function ae(t,e,n,r){var o=t.componentOptions,a={_isComponent:!0,parent:e,propsData:o.propsData,_componentTag:o.tag,_parentVnode:t,_parentListeners:o.listeners,_renderChildren:o.children,_parentElm:n||null,_refElm:r||null},s=t.data.inlineTemplate;return i(s)&&(a.render=s.render,a.staticRenderFns=s.staticRenderFns),new o.Ctor(a)}function se(t){t.hook||(t.hook={});for(var e=0;e<ja.length;e++){var n=ja[e],r=t.hook[n],i=Ta[n];t.hook[n]=r?ue(i,r):i}}function ue(t,e){return function(n,r,i,o){t(n,r,i,o),e(n,r,i,o)}}function ce(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.props||(e.props={}))[n]=e.model.value;var o=e.on||(e.on={});i(o[r])?o[r]=[e.model.callback].concat(o[r]):o[r]=e.model.callback}function fe(t,e,n,r,i,a){return(Array.isArray(n)||s(n))&&(i=r,r=n,n=void 0),o(a)&&(i=Pa),le(t,e,n,r,i)}function le(t,n,r,o,a){if(i(r)&&i(r.__ob__))return"production"!==e.env.NODE_ENV&&mo("Avoid using observed data object as vnode data: "+JSON.stringify(r)+"\nAlways create fresh vnode data objects in each render!",t),ha();if(i(r)&&i(r.is)&&(n=r.is),!n)return ha();"production"!==e.env.NODE_ENV&&i(r)&&i(r.key)&&!s(r.key)&&mo("Avoid using non-primitive value as key, use string/number value instead.",t),Array.isArray(o)&&"function"==typeof o[0]&&(r=r||{},r.scopedSlots={default:o[0]},o.length=0),a===Pa?o=pt(o):a===Ra&&(o=lt(o));var u,c;if("string"==typeof n){var f;c=t.$vnode&&t.$vnode.ns||ho.getTagNamespace(n),u=ho.isReservedTag(n)?new fa(ho.parsePlatformTagName(n),r,o,void 0,void 0,t):i(f=K(t.$options,"components",n))?oe(f,r,t,o,n):new fa(n,r,o,void 0,void 0,t)}else u=oe(n,r,t,o);return i(u)?(c&&pe(u,c),u):ha()}function pe(t,e){if(t.ns=e,"foreignObject"!==t.tag&&i(t.children))for(var n=0,o=t.children.length;n<o;n++){var a=t.children[n];i(a.tag)&&r(a.ns)&&pe(a,e)}}function he(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;r<o;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(u(t))for(a=Object.keys(t),n=new Array(a.length),r=0,o=a.length;r<o;r++)s=a[r],n[r]=e(t[s],s,r);return i(n)&&(n._isVList=!0),n}function de(t,n,r,i){var o=this.$scopedSlots[t];if(o)return r=r||{},i&&(r=b(b({},i),r)),o(r)||n;var a=this.$slots[t];return a&&"production"!==e.env.NODE_ENV&&(a._rendered&&mo('Duplicate presence of slot "'+t+'" found in the same render tree - this will likely cause render errors.',this),a._rendered=!0),a||n}function ve(t){return K(this.$options,"filters",t,!0)||co}function ge(t,e,n){var r=ho.keyCodes[e]||n;return Array.isArray(r)?-1===r.indexOf(t):r!==t}function me(t,n,r,i,o){if(r)if(u(r)){Array.isArray(r)&&(r=w(r));var a;for(var s in r)!function(e){if("class"===e||"style"===e||eo(e))a=t;else{var s=t.attrs&&t.attrs.type;a=i||ho.mustUseProp(n,s,e)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}if(!(e in a)&&(a[e]=r[e],o)){(t.on||(t.on={}))["update:"+e]=function(t){r[e]=t}}}(s)}else"production"!==e.env.NODE_ENV&&mo("v-bind without argument expects an Object or Array value",this);return t}function ye(t,e){var n=this._staticTrees[t];return n&&!e?Array.isArray(n)?it(n):rt(n):(n=this._staticTrees[t]=this.$options.staticRenderFns[t].call(this._renderProxy),be(n,"__static__"+t,!1),n)}function _e(t,e,n){return be(t,"__once__"+e+(n?"_"+n:""),!0),t}function be(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&we(t[r],e+"_"+r,n);else we(t,e,n)}function we(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function xe(t,n){if(n)if(c(n)){var r=t.on=t.on?b({},t.on):{};for(var i in n){var o=r[i],a=n[i];r[i]=o?[].concat(a,o):a}}else"production"!==e.env.NODE_ENV&&mo("v-on without argument expects an Object value",this);return t}function Ee(t){t._vnode=null,t._staticTrees=null;var n=t.$vnode=t.$options._parentVnode,r=n&&n.context;t.$slots=Ot(t.$options._renderChildren,r),t.$scopedSlots=vo,t._c=function(e,n,r,i){return fe(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return fe(t,e,n,r,i,!0)};var i=n&&n.data;"production"!==e.env.NODE_ENV?(L(t,"$attrs",i&&i.attrs||vo,function(){!ga&&mo("$attrs is readonly.",t)},!0),L(t,"$listeners",t.$options._parentListeners||vo,function(){!ga&&mo("$listeners is readonly.",t)},!0)):(L(t,"$attrs",i&&i.attrs||vo,null,!0),L(t,"$listeners",t.$options._parentListeners||vo,null,!0))}function Oe(t,e){var n=t.$options=Object.create(t.constructor.options);n.parent=e.parent,n.propsData=e.propsData,n._parentVnode=e._parentVnode,n._parentListeners=e._parentListeners,n._renderChildren=e._renderChildren,n._componentTag=e._componentTag,n._parentElm=e._parentElm,n._refElm=e._refElm,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}function Ce(t){var e=t.options;if(t.super){var n=Ce(t.super);if(n!==t.superOptions){t.superOptions=n;var r=Se(t);r&&b(t.extendOptions,r),e=t.options=Y(n,t.extendOptions),e.name&&(e.components[e.name]=t)}}return e}function Se(t){var e,n=t.options,r=t.extendOptions,i=t.sealedOptions;for(var o in n)n[o]!==i[o]&&(e||(e={}),e[o]=Ae(n[o],r[o],i[o]));return e}function Ae(t,e,n){if(Array.isArray(t)){var r=[];n=Array.isArray(n)?n:[n],e=Array.isArray(e)?e:[e];for(var i=0;i<t.length;i++)(e.indexOf(t[i])>=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function ke(t){"production"===e.env.NODE_ENV||this instanceof ke||mo("Vue is a constructor and should be called with the `new` keyword"),this._init(t)}function Ne(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=_(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function Te(t){t.mixin=function(t){return this.options=Y(this.options,t),this}}function je(t){t.cid=0;var n=1;t.extend=function(t){t=t||{};var r=this,i=r.cid,o=t._Ctor||(t._Ctor={});if(o[i])return o[i];var a=t.name||r.options.name;"production"!==e.env.NODE_ENV&&(/^[a-zA-Z][\w-]*$/.test(a)||mo('Invalid component name: "'+a+'". Component names can only contain alphanumeric characters and the hyphen, and must start with a letter.'));var s=function(t){this._init(t)};return s.prototype=Object.create(r.prototype),s.prototype.constructor=s,s.cid=n++,s.options=Y(r.options,t),s.super=r,s.options.props&&Re(s),s.options.computed&&Pe(s),s.extend=r.extend,s.mixin=r.mixin,s.use=r.use,lo.forEach(function(t){s[t]=r[t]}),a&&(s.options.components[a]=s),s.superOptions=r.options,s.extendOptions=t,s.sealedOptions=b({},s.options),o[i]=s,s}}function Re(t){var e=t.options.props;for(var n in e)Ft(t.prototype,"_props",n)}function Pe(t){var e=t.options.computed;for(var n in e)Kt(t.prototype,n,e[n])}function $e(t){lo.forEach(function(n){t[n]=function(t,r){return r?("production"!==e.env.NODE_ENV&&"component"===n&&ho.isReservedTag(t)&&mo("Do not use built-in or reserved HTML elements as component id: "+t),"component"===n&&c(r)&&(r.name=r.name||t,r=this.options._base.extend(r)),"directive"===n&&"function"==typeof r&&(r={bind:r,update:r}),this.options[n+"s"][t]=r,r):this.options[n+"s"][t]}})}function De(t){return t&&(t.Ctor.options.name||t.tag)}function Le(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!f(t)&&t.test(e)}function Ie(t,e,n){for(var r in t){var i=t[r];if(i){var o=De(i.componentOptions);o&&!n(o)&&(i!==e&&Me(i),t[r]=null)}}}function Me(t){t&&t.componentInstance.$destroy()}function Ue(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)r=r.componentInstance._vnode,r.data&&(e=Be(r.data,e));for(;i(n=n.parent);)n.data&&(e=Be(e,n.data));return Ve(e.staticClass,e.class)}function Be(t,e){return{staticClass:Fe(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function Ve(t,e){return i(t)||i(e)?Fe(t,qe(e)):""}function Fe(t,e){return t?e?t+" "+e:t:e||""}function qe(t){return Array.isArray(t)?ze(t):u(t)?He(t):"string"==typeof t?t:""}function ze(t){for(var e,n="",r=0,o=t.length;r<o;r++)i(e=qe(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}function He(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}function Je(t){return is(t)?"svg":"math"===t?"math":void 0}function We(t){if(!So)return!0;if(as(t))return!1;if(t=t.toLowerCase(),null!=ss[t])return ss[t];var e=document.createElement(t);return t.indexOf("-")>-1?ss[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ss[t]=/HTMLUnknownElement/.test(e.toString())}function Ye(t){if("string"==typeof t){var n=document.querySelector(t);return n||("production"!==e.env.NODE_ENV&&mo("Cannot find element: "+t),document.createElement("div"))}return t}function Ke(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Ge(t,e){return document.createElementNS(ns[t],e)}function Ze(t){return document.createTextNode(t)}function Xe(t){return document.createComment(t)}function Qe(t,e,n){t.insertBefore(e,n)}function tn(t,e){t.removeChild(e)}function en(t,e){t.appendChild(e)}function nn(t){return t.parentNode}function rn(t){return t.nextSibling}function on(t){return t.tagName}function an(t,e){t.textContent=e}function sn(t,e,n){t.setAttribute(e,n)}function un(t,e){var n=t.data.ref;if(n){var r=t.context,i=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?v(o[n],i):o[n]===i&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}function cn(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&fn(t,e)||o(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&r(e.asyncFactory.error))}function fn(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,o=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===o||us(r)&&us(o)}function ln(t,e,n){var r,o,a={};for(r=e;r<=n;++r)o=t[r].key,i(o)&&(a[o]=r);return a}function pn(t,e){(t.data.directives||e.data.directives)&&hn(t,e)}function hn(t,e){var n,r,i,o=t===ls,a=e===ls,s=dn(t.data.directives,t.context),u=dn(e.data.directives,e.context),c=[],f=[];for(n in u)r=s[n],i=u[n],r?(i.oldValue=r.value,gn(i,"update",e,t),i.def&&i.def.componentUpdated&&f.push(i)):(gn(i,"bind",e,t),i.def&&i.def.inserted&&c.push(i));if(c.length){var l=function(){for(var n=0;n<c.length;n++)gn(c[n],"inserted",e,t)};o?ut(e.data.hook||(e.data.hook={}),"insert",l):l()}if(f.length&&ut(e.data.hook||(e.data.hook={}),"postpatch",function(){for(var n=0;n<f.length;n++)gn(f[n],"componentUpdated",e,t)}),!o)for(n in s)u[n]||gn(s[n],"unbind",t,t,a)}function dn(t,e){var n=Object.create(null);if(!t)return n;var r,i;for(r=0;r<t.length;r++)i=t[r],i.modifiers||(i.modifiers=ds),n[vn(i)]=i,i.def=K(e.$options,"directives",i.name,!0);return n}function vn(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function gn(t,e,n,r,i){var o=t.def&&t.def[e];if(o)try{o(n.elm,t,n,r,i)}catch(r){N(r,n.context,"directive "+t.name+" "+e+" hook")}}function mn(t,e){var n=e.componentOptions;if(!(i(n)&&!1===n.Ctor.options.inheritAttrs||r(t.data.attrs)&&r(e.data.attrs))){var o,a,s=e.elm,u=t.data.attrs||{},c=e.data.attrs||{};i(c.__ob__)&&(c=e.data.attrs=b({},c));for(o in c)a=c[o],u[o]!==a&&yn(s,o,a);No&&c.value!==u.value&&yn(s,"value",c.value);for(o in u)r(c[o])&&(Qa(o)?s.removeAttributeNS(Xa,ts(o)):Ga(o)||s.removeAttribute(o))}}function yn(t,e,n){Za(e)?es(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Ga(e)?t.setAttribute(e,es(n)||"false"===n?"false":"true"):Qa(e)?es(n)?t.removeAttributeNS(Xa,ts(e)):t.setAttributeNS(Xa,e,n):es(n)?t.removeAttribute(e):t.setAttribute(e,n)}function _n(t,e){var n=e.elm,o=e.data,a=t.data;if(!(r(o.staticClass)&&r(o.class)&&(r(a)||r(a.staticClass)&&r(a.class)))){var s=Ue(e),u=n._transitionClasses;i(u)&&(s=Fe(s,qe(u))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}function bn(t){function e(){(a||(a=[])).push(t.slice(d,i).trim()),d=i+1}var n,r,i,o,a,s=!1,u=!1,c=!1,f=!1,l=0,p=0,h=0,d=0;for(i=0;i<t.length;i++)if(r=n,n=t.charCodeAt(i),s)39===n&&92!==r&&(s=!1);else if(u)34===n&&92!==r&&(u=!1);else if(c)96===n&&92!==r&&(c=!1);else if(f)47===n&&92!==r&&(f=!1);else if(124!==n||124===t.charCodeAt(i+1)||124===t.charCodeAt(i-1)||l||p||h){switch(n){case 34:u=!0;break;case 39:s=!0;break;case 96:c=!0;break;case 40:h++;break;case 41:h--;break;case 91:p++;break;case 93:p--;break;case 123:l++;break;case 125:l--}if(47===n){for(var v=i-1,g=void 0;v>=0&&" "===(g=t.charAt(v));v--);g&&ys.test(g)||(f=!0)}}else void 0===o?(d=i+1,o=t.slice(0,i).trim()):e();if(void 0===o?o=t.slice(0,i).trim():0!==d&&e(),a)for(i=0;i<a.length;i++)o=wn(o,a[i]);return o}function wn(t,e){var n=e.indexOf("(");return n<0?'_f("'+e+'")('+t+")":'_f("'+e.slice(0,n)+'")('+t+","+e.slice(n+1)}function xn(t){console.error("[Vue compiler]: "+t)}function En(t,e){return t?t.map(function(t){return t[e]}).filter(function(t){return t}):[]}function On(t,e,n){(t.props||(t.props=[])).push({name:e,value:n})}function Cn(t,e,n){(t.attrs||(t.attrs=[])).push({name:e,value:n})}function Sn(t,e,n,r,i,o){(t.directives||(t.directives=[])).push({name:e,rawName:n,value:r,arg:i,modifiers:o})}function An(t,n,r,i,o,a){"production"!==e.env.NODE_ENV&&a&&i&&i.prevent&&i.passive&&a("passive and prevent can't be used together. Passive handler can't prevent default event."),i&&i.capture&&(delete i.capture,n="!"+n),i&&i.once&&(delete i.once,n="~"+n),i&&i.passive&&(delete i.passive,n="&"+n);var s;i&&i.native?(delete i.native,s=t.nativeEvents||(t.nativeEvents={})):s=t.events||(t.events={});var u={value:r,modifiers:i},c=s[n];Array.isArray(c)?o?c.unshift(u):c.push(u):s[n]=c?o?[u,c]:[c,u]:u}function kn(t,e,n){var r=Nn(t,":"+e)||Nn(t,"v-bind:"+e);if(null!=r)return bn(r);if(!1!==n){var i=Nn(t,e);if(null!=i)return JSON.stringify(i)}}function Nn(t,e){var n;if(null!=(n=t.attrsMap[e]))for(var r=t.attrsList,i=0,o=r.length;i<o;i++)if(r[i].name===e){r.splice(i,1);break}return n}function Tn(t,e,n){var r=n||{},i=r.number,o=r.trim,a="$$v";o&&(a="(typeof $$v === 'string'? $$v.trim(): $$v)"),i&&(a="_n("+a+")");var s=jn(e,a);t.model={value:"("+e+")",expression:'"'+e+'"',callback:"function ($$v) {"+s+"}"}}function jn(t,e){var n=Rn(t);return null===n.idx?t+"="+e:"$set("+n.exp+", "+n.idx+", "+e+")"}function Rn(t){if(Ua=t,Ma=Ua.length,Va=Fa=qa=0,t.indexOf("[")<0||t.lastIndexOf("]")<Ma-1)return{exp:t,idx:null};for(;!$n();)Ba=Pn(),Dn(Ba)?In(Ba):91===Ba&&Ln(Ba);return{exp:t.substring(0,Fa),idx:t.substring(Fa+1,qa)}}function Pn(){return Ua.charCodeAt(++Va)}function $n(){return Va>=Ma}function Dn(t){return 34===t||39===t}function Ln(t){var e=1;for(Fa=Va;!$n();)if(t=Pn(),Dn(t))In(t);else if(91===t&&e++,93===t&&e--,0===e){qa=Va;break}}function In(t){for(var e=t;!$n()&&(t=Pn())!==e;);}function Mn(t,n,r){za=r;var i=n.value,o=n.modifiers,a=t.tag,s=t.attrsMap.type;if("production"!==e.env.NODE_ENV){var u=t.attrsMap["v-bind:type"]||t.attrsMap[":type"];"input"===a&&u&&za('<input :type="'+u+'" v-model="'+i+'">:\nv-model does not support dynamic input types. Use v-if branches instead.'),"input"===a&&"file"===s&&za("<"+t.tag+' v-model="'+i+'" type="file">:\nFile inputs are read only. Use a v-on:change listener instead.')}if(t.component)return Tn(t,i,o),!1;if("select"===a)Vn(t,i,o);else if("input"===a&&"checkbox"===s)Un(t,i,o);else if("input"===a&&"radio"===s)Bn(t,i,o);else if("input"===a||"textarea"===a)Fn(t,i,o);else{if(!ho.isReservedTag(a))return Tn(t,i,o),!1;"production"!==e.env.NODE_ENV&&za("<"+t.tag+' v-model="'+i+"\">: v-model is not supported on this element type. If you are working with contenteditable, it's recommended to wrap a library dedicated for that purpose inside a custom component.")}return!0}function Un(t,e,n){var r=n&&n.number,i=kn(t,"value")||"null",o=kn(t,"true-value")||"true",a=kn(t,"false-value")||"false";On(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),An(t,bs,"var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+e+"=$$a.concat([$$v]))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+jn(e,"$$c")+"}",null,!0)}function Bn(t,e,n){var r=n&&n.number,i=kn(t,"value")||"null";i=r?"_n("+i+")":i,On(t,"checked","_q("+e+","+i+")"),An(t,bs,jn(e,i),null,!0)}function Vn(t,e,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})",o="var $$selectedVal = "+i+";";o=o+" "+jn(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),An(t,"change",o,null,!0)}function Fn(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,u=!o&&"range"!==r,c=o?"change":"range"===r?_s:"input",f="$event.target.value";s&&(f="$event.target.value.trim()"),a&&(f="_n("+f+")");var l=jn(e,f);u&&(l="if($event.target.composing)return;"+l),On(t,"value","("+e+")"),An(t,c,l,null,!0),(s||a)&&An(t,"blur","$forceUpdate()")}function qn(t){var e;i(t[_s])&&(e=ko?"change":"input",t[e]=[].concat(t[_s],t[e]||[]),delete t[_s]),i(t[bs])&&(e=Po?"click":"change",t[e]=[].concat(t[bs],t[e]||[]),delete t[bs])}function zn(t,e,n,r,i){if(n){var o=e,a=Ha;e=function(n){null!==(1===arguments.length?o(n):o.apply(null,arguments))&&Hn(t,e,r,a)}}Ha.addEventListener(t,e,Do?{capture:r,passive:i}:r)}function Hn(t,e,n,r){(r||Ha).removeEventListener(t,e,n)}function Jn(t,e){if(!r(t.data.on)||!r(e.data.on)){var n=e.data.on||{},i=t.data.on||{};Ha=e.elm,qn(n),st(n,i,zn,Hn,e.context)}}function Wn(t,e){if(!r(t.data.domProps)||!r(e.data.domProps)){var n,o,a=e.elm,s=t.data.domProps||{},u=e.data.domProps||{};i(u.__ob__)&&(u=e.data.domProps=b({},u));for(n in s)r(u[n])&&(a[n]="");for(n in u)if(o=u[n],"textContent"!==n&&"innerHTML"!==n||(e.children&&(e.children.length=0),o!==s[n]))if("value"===n){a._value=o;var c=r(o)?"":String(o);Yn(a,e,c)&&(a.value=c)}else a[n]=o}}function Yn(t,e,n){return!t.composing&&("option"===e.tag||Kn(t,n)||Gn(t,n))}function Kn(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}function Gn(t,e){var n=t.value,r=t._vModifiers;return i(r)&&r.number?h(n)!==h(e):i(r)&&r.trim?n.trim()!==e.trim():n!==e}function Zn(t){var e=Xn(t.style);return t.staticStyle?b(t.staticStyle,e):e}function Xn(t){return Array.isArray(t)?w(t):"string"==typeof t?Es(t):t}function Qn(t,e){var n,r={};if(e)for(var i=t;i.componentInstance;)i=i.componentInstance._vnode,i.data&&(n=Zn(i.data))&&b(r,n);(n=Zn(t.data))&&b(r,n);for(var o=t;o=o.parent;)o.data&&(n=Zn(o.data))&&b(r,n);return r}function tr(t,e){var n=e.data,o=t.data;if(!(r(n.staticStyle)&&r(n.style)&&r(o.staticStyle)&&r(o.style))){var a,s,u=e.elm,c=o.staticStyle,f=o.normalizedStyle||o.style||{},l=c||f,p=Xn(e.data.style)||{};e.data.normalizedStyle=i(p.__ob__)?b({},p):p;var h=Qn(e,!0);for(s in l)r(h[s])&&Ss(u,s,"");for(s in h)(a=h[s])!==l[s]&&Ss(u,s,null==a?"":a)}}function er(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function nr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function rr(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&b(e,Ts(t.name||"v")),b(e,t),e}return"string"==typeof t?Ts(t):void 0}}function ir(t){Ms(function(){Ms(t)})}function or(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),er(t,e))}function ar(t,e){t._transitionClasses&&v(t._transitionClasses,e),nr(t,e)}function sr(t,e,n){var r=ur(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Rs?Ds:Is,u=0,c=function(){t.removeEventListener(s,f),n()},f=function(e){e.target===t&&++u>=a&&c()};setTimeout(function(){u<a&&c()},o+1),t.addEventListener(s,f)}function ur(t,e){var n,r=window.getComputedStyle(t),i=r[$s+"Delay"].split(", "),o=r[$s+"Duration"].split(", "),a=cr(i,o),s=r[Ls+"Delay"].split(", "),u=r[Ls+"Duration"].split(", "),c=cr(s,u),f=0,l=0;return e===Rs?a>0&&(n=Rs,f=a,l=o.length):e===Ps?c>0&&(n=Ps,f=c,l=u.length):(f=Math.max(a,c),n=f>0?a>c?Rs:Ps:null,l=n?n===Rs?o.length:u.length:0),{type:n,timeout:f,propCount:l,hasTransform:n===Rs&&Us.test(r[$s+"Property"])}}function cr(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map(function(e,n){return fr(e)+fr(t[n])}))}function fr(t){return 1e3*Number(t.slice(0,-1))}function lr(t,n){var o=t.elm;i(o._leaveCb)&&(o._leaveCb.cancelled=!0,o._leaveCb());var a=rr(t.data.transition);if(!r(a)&&!i(o._enterCb)&&1===o.nodeType){for(var s=a.css,c=a.type,f=a.enterClass,l=a.enterToClass,p=a.enterActiveClass,d=a.appearClass,v=a.appearToClass,g=a.appearActiveClass,m=a.beforeEnter,y=a.enter,_=a.afterEnter,b=a.enterCancelled,w=a.beforeAppear,x=a.appear,E=a.afterAppear,O=a.appearCancelled,S=a.duration,A=va,k=va.$vnode;k&&k.parent;)k=k.parent,A=k.context;var N=!A._isMounted||!t.isRootInsert;if(!N||x||""===x){var T=N&&d?d:f,j=N&&g?g:p,R=N&&v?v:l,P=N?w||m:m,$=N&&"function"==typeof x?x:y,D=N?E||_:_,L=N?O||b:b,I=h(u(S)?S.enter:S);"production"!==e.env.NODE_ENV&&null!=I&&hr(I,"enter",t);var M=!1!==s&&!No,U=vr($),B=o._enterCb=C(function(){M&&(ar(o,R),ar(o,j)),B.cancelled?(M&&ar(o,T),L&&L(o)):D&&D(o),o._enterCb=null});t.data.show||ut(t.data.hook||(t.data.hook={}),"insert",function(){var e=o.parentNode,n=e&&e._pending&&e._pending[t.key];n&&n.tag===t.tag&&n.elm._leaveCb&&n.elm._leaveCb(),$&&$(o,B)}),P&&P(o),M&&(or(o,T),or(o,j),ir(function(){or(o,R),ar(o,T),B.cancelled||U||(dr(I)?setTimeout(B,I):sr(o,c,B))})),t.data.show&&(n&&n(),$&&$(o,B)),M||U||B()}}}function pr(t,n){function o(){O.cancelled||(t.data.show||((a.parentNode._pending||(a.parentNode._pending={}))[t.key]=t),v&&v(a),w&&(or(a,l),or(a,d),ir(function(){or(a,p),ar(a,l),O.cancelled||x||(dr(E)?setTimeout(O,E):sr(a,f,O))})),g&&g(a,O),w||x||O())}var a=t.elm;i(a._enterCb)&&(a._enterCb.cancelled=!0,a._enterCb());var s=rr(t.data.transition);if(r(s))return n();if(!i(a._leaveCb)&&1===a.nodeType){var c=s.css,f=s.type,l=s.leaveClass,p=s.leaveToClass,d=s.leaveActiveClass,v=s.beforeLeave,g=s.leave,m=s.afterLeave,y=s.leaveCancelled,_=s.delayLeave,b=s.duration,w=!1!==c&&!No,x=vr(g),E=h(u(b)?b.leave:b);"production"!==e.env.NODE_ENV&&i(E)&&hr(E,"leave",t);var O=a._leaveCb=C(function(){a.parentNode&&a.parentNode._pending&&(a.parentNode._pending[t.key]=null),w&&(ar(a,p),ar(a,d)),O.cancelled?(w&&ar(a,l),y&&y(a)):(n(),m&&m(a)),a._leaveCb=null});_?_(o):o()}}function hr(t,e,n){"number"!=typeof t?mo("<transition> explicit "+e+" duration is not a valid number - got "+JSON.stringify(t)+".",n.context):isNaN(t)&&mo("<transition> explicit "+e+" duration is NaN - the duration expression might be incorrect.",n.context)}function dr(t){return"number"==typeof t&&!isNaN(t)}function vr(t){if(r(t))return!1;var e=t.fns;return i(e)?vr(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function gr(t,e){!0!==e.data.show&&lr(e)}function mr(t,e,n){yr(t,e,n),(ko||To)&&setTimeout(function(){yr(t,e,n)},0)}function yr(t,n,r){var i=n.value,o=t.multiple;if(o&&!Array.isArray(i))return void("production"!==e.env.NODE_ENV&&mo('<select multiple v-model="'+n.expression+'"> expects an Array value for its binding, but got '+Object.prototype.toString.call(i).slice(8,-1),r));for(var a,s,u=0,c=t.options.length;u<c;u++)if(s=t.options[u],o)a=O(i,br(s))>-1,s.selected!==a&&(s.selected=a);else if(E(br(s),i))return void(t.selectedIndex!==u&&(t.selectedIndex=u));o||(t.selectedIndex=-1)}function _r(t,e){return e.every(function(e){return!E(e,t)})}function br(t){return"_value"in t?t._value:t.value}function wr(t){t.target.composing=!0}function xr(t){t.target.composing&&(t.target.composing=!1,Er(t.target,"input"))}function Er(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Or(t){return!t.componentInstance||t.data&&t.data.transition?t:Or(t.componentInstance._vnode)}function Cr(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Cr(_t(e.children)):t}function Sr(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[io(o)]=i[o];return e}function Ar(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function kr(t){for(;t=t.parent;)if(t.data.transition)return!0}function Nr(t,e){return e.key===t.key&&e.tag===t.tag}function Tr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function jr(t){t.data.newPos=t.elm.getBoundingClientRect()}function Rr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}function Pr(t,e){var n=e?nu(e):tu;if(n.test(t)){for(var r,i,o=[],a=n.lastIndex=0;r=n.exec(t);){i=r.index,i>a&&o.push(JSON.stringify(t.slice(a,i)));var s=bn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a<t.length&&o.push(JSON.stringify(t.slice(a))),o.join("+")}}function $r(t,n){var r=n.warn||xn,i=Nn(t,"class");if("production"!==e.env.NODE_ENV&&i){Pr(i,n.delimiters)&&r('class="'+i+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div class="{{ val }}">, use <div :class="val">.')}i&&(t.staticClass=JSON.stringify(i));var o=kn(t,"class",!1);o&&(t.classBinding=o)}function Dr(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}function Lr(t,n){var r=n.warn||xn,i=Nn(t,"style");if(i){if("production"!==e.env.NODE_ENV){Pr(i,n.delimiters)&&r('style="'+i+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div style="{{ val }}">, use <div :style="val">.')}t.staticStyle=JSON.stringify(Es(i))}var o=kn(t,"style",!1);o&&(t.styleBinding=o)}function Ir(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}function Mr(t,e){e.value&&On(t,"textContent","_s("+e.value+")")}function Ur(t,e){e.value&&On(t,"innerHTML","_s("+e.value+")")}function Br(t,e){var n=e?Lu:Du;return t.replace(n,function(t){return $u[t]})}function Vr(t,n){function r(e){l+=e,t=t.substring(e)}function i(t,r,i){var o,u;if(null==r&&(r=l),null==i&&(i=l),t&&(u=t.toLowerCase()),t)for(o=s.length-1;o>=0&&s[o].lowerCasedTag!==u;o--);else o=0;if(o>=0){for(var c=s.length-1;c>=o;c--)"production"!==e.env.NODE_ENV&&(c>o||!t)&&n.warn&&n.warn("tag <"+s[c].tag+"> has no matching end tag."),n.end&&n.end(s[c].tag,r,i);s.length=o,a=o&&s[o-1].tag}else"br"===u?n.start&&n.start(t,[],!0,r,i):"p"===u&&(n.start&&n.start(t,[],!1,r,i),n.end&&n.end(t,r,i))}for(var o,a,s=[],u=n.expectHTML,c=n.isUnaryTag||uo,f=n.canBeLeftOpenTag||uo,l=0;t;){if(o=t,a&&Ru(a)){var p=0,h=a.toLowerCase(),d=Pu[h]||(Pu[h]=new RegExp("([\\s\\S]*?)(</"+h+"[^>]*>)","i")),v=t.replace(d,function(t,e,r){return p=r.length,Ru(h)||"noscript"===h||(e=e.replace(/<!--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Mu(h,e)&&(e=e.slice(1)),n.chars&&n.chars(e),""});l+=t.length-v.length,t=v,i(h,l-p,l)}else{var g=t.indexOf("<");if(0===g){if(_u.test(t)){var m=t.indexOf("--\x3e");if(m>=0){n.shouldKeepComment&&n.comment(t.substring(4,m)),r(m+3);continue}}if(bu.test(t)){var y=t.indexOf("]>");if(y>=0){r(y+2);continue}}var _=t.match(yu);if(_){r(_[0].length);continue}var b=t.match(mu);if(b){var w=l;r(b[0].length),i(b[1],w,l);continue}var x=function(){var e=t.match(vu);if(e){var n={tagName:e[1],attrs:[],start:l};r(e[0].length);for(var i,o;!(i=t.match(gu))&&(o=t.match(pu));)r(o[0].length),n.attrs.push(o);if(i)return n.unarySlash=i[1],r(i[0].length),n.end=l,n}}();if(x){!function(t){var e=t.tagName,r=t.unarySlash;u&&("p"===a&&cu(e)&&i(a),f(e)&&a===e&&i(e));for(var o=c(e)||!!r,l=t.attrs.length,p=new Array(l),h=0;h<l;h++){var d=t.attrs[h];wu&&-1===d[0].indexOf('""')&&(""===d[3]&&delete d[3],""===d[4]&&delete d[4],""===d[5]&&delete d[5]);var v=d[3]||d[4]||d[5]||"";p[h]={name:d[1],value:Br(v,n.shouldDecodeNewlines)}}o||(s.push({tag:e,lowerCasedTag:e.toLowerCase(),attrs:p}),a=e),n.start&&n.start(e,p,o,t.start,t.end)}(x),Mu(a,t)&&r(1);continue}}var E=void 0,O=void 0,C=void 0;if(g>=0){for(O=t.slice(g);!(mu.test(O)||vu.test(O)||_u.test(O)||bu.test(O)||(C=O.indexOf("<",1))<0);)g+=C,O=t.slice(g);E=t.substring(0,g),r(g)}g<0&&(E=t,t=""),n.chars&&E&&n.chars(E)}if(t===o){n.chars&&n.chars(t),"production"!==e.env.NODE_ENV&&!s.length&&n.warn&&n.warn('Mal-formatted tag at end of template: "'+t+'"');break}}i()}function Fr(t,n){function r(t){l||(l=!0,xu(t))}function i(t){t.pre&&(c=!1),Au(t.tag)&&(f=!1)}xu=n.warn||xn,Au=n.isPreTag||uo,ku=n.mustUseProp||uo,Nu=n.getTagNamespace||uo,Ou=En(n.modules,"transformNode"),Cu=En(n.modules,"preTransformNode"),Su=En(n.modules,"postTransformNode"),Eu=n.delimiters;var o,a,s=[],u=!1!==n.preserveWhitespace,c=!1,f=!1,l=!1;return Vr(t,{warn:xu,expectHTML:n.expectHTML,isUnaryTag:n.isUnaryTag,canBeLeftOpenTag:n.canBeLeftOpenTag,shouldDecodeNewlines:n.shouldDecodeNewlines,shouldKeepComment:n.comments,start:function(t,u,l){function p(t){"production"!==e.env.NODE_ENV&&("slot"!==t.tag&&"template"!==t.tag||r("Cannot use <"+t.tag+"> as component root element because it may contain multiple nodes."),t.attrsMap.hasOwnProperty("v-for")&&r("Cannot use v-for on stateful component root element because it renders multiple elements."))}var h=a&&a.ns||Nu(t);ko&&"svg"===h&&(u=si(u));var d={type:1,tag:t,attrsList:u,attrsMap:ii(u),parent:a,children:[]};h&&(d.ns=h),ai(d)&&!Uo()&&(d.forbidden=!0,"production"!==e.env.NODE_ENV&&xu("Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side-effects in your templates, such as <"+t+">, as they will not be parsed."));for(var v=0;v<Cu.length;v++)Cu[v](d,n);if(c||(qr(d),d.pre&&(c=!0)),Au(d.tag)&&(f=!0),c)zr(d);else{Wr(d),Yr(d),Xr(d),Hr(d),d.plain=!d.key&&!u.length,Jr(d),Qr(d),ti(d);for(var g=0;g<Ou.length;g++)Ou[g](d,n);ei(d)}if(o?s.length||(o.if&&(d.elseif||d.else)?(p(d),Zr(o,{exp:d.elseif,block:d})):"production"!==e.env.NODE_ENV&&r("Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.")):(o=d,p(o)),a&&!d.forbidden)if(d.elseif||d.else)Kr(d,a);else if(d.slotScope){a.plain=!1;var m=d.slotTarget||'"default"';(a.scopedSlots||(a.scopedSlots={}))[m]=d}else a.children.push(d),d.parent=a;l?i(d):(a=d,s.push(d));for(var y=0;y<Su.length;y++)Su[y](d,n)},end:function(){var t=s[s.length-1],e=t.children[t.children.length-1];e&&3===e.type&&" "===e.text&&!f&&t.children.pop(),s.length-=1,a=s[s.length-1],i(t)},chars:function(n){if(!a)return void("production"!==e.env.NODE_ENV&&(n===t?r("Component template requires a root element, rather than just text."):(n=n.trim())&&r('text "'+n+'" outside root element will be ignored.')));if(!ko||"textarea"!==a.tag||a.attrsMap.placeholder!==n){var i=a.children;if(n=f||n.trim()?oi(a)?n:Ju(n):u&&i.length?" ":""){var o;!c&&" "!==n&&(o=Pr(n,Eu))?i.push({type:2,expression:o,text:n}):" "===n&&i.length&&" "===i[i.length-1].text||i.push({type:3,text:n})}}},comment:function(t){a.children.push({type:3,text:t,isComment:!0})}}),o}function qr(t){null!=Nn(t,"v-pre")&&(t.pre=!0)}function zr(t){var e=t.attrsList.length;if(e)for(var n=t.attrs=new Array(e),r=0;r<e;r++)n[r]={name:t.attrsList[r].name,value:JSON.stringify(t.attrsList[r].value)};else t.pre||(t.plain=!0)}function Hr(t){var n=kn(t,"key");n&&("production"!==e.env.NODE_ENV&&"template"===t.tag&&xu("<template> cannot be keyed. Place the key on real elements instead."),t.key=n)}function Jr(t){var e=kn(t,"ref");e&&(t.ref=e,t.refInFor=ni(t))}function Wr(t){var n;if(n=Nn(t,"v-for")){var r=n.match(Vu);if(!r)return void("production"!==e.env.NODE_ENV&&xu("Invalid v-for expression: "+n));t.for=r[2].trim();var i=r[1].trim(),o=i.match(Fu);o?(t.alias=o[1].trim(),t.iterator1=o[2].trim(),o[3]&&(t.iterator2=o[3].trim())):t.alias=i}}function Yr(t){var e=Nn(t,"v-if");if(e)t.if=e,Zr(t,{exp:e,block:t});else{null!=Nn(t,"v-else")&&(t.else=!0);var n=Nn(t,"v-else-if");n&&(t.elseif=n)}}function Kr(t,n){var r=Gr(n.children);r&&r.if?Zr(r,{exp:t.elseif,block:t}):"production"!==e.env.NODE_ENV&&xu("v-"+(t.elseif?'else-if="'+t.elseif+'"':"else")+" used on element <"+t.tag+"> without corresponding v-if.")}function Gr(t){for(var n=t.length;n--;){if(1===t[n].type)return t[n];"production"!==e.env.NODE_ENV&&" "!==t[n].text&&xu('text "'+t[n].text.trim()+'" between v-if and v-else(-if) will be ignored.'),t.pop()}}function Zr(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function Xr(t){null!=Nn(t,"v-once")&&(t.once=!0)}function Qr(t){if("slot"===t.tag)t.slotName=kn(t,"name"),"production"!==e.env.NODE_ENV&&t.key&&xu("`key` does not work on <slot> because slots are abstract outlets and can possibly expand into multiple elements. Use the key on a wrapping element instead.");else{var n=kn(t,"slot");n&&(t.slotTarget='""'===n?'"default"':n,Cn(t,"slot",n)),"template"===t.tag&&(t.slotScope=Nn(t,"scope"))}}function ti(t){var e;(e=kn(t,"is"))&&(t.component=e),null!=Nn(t,"inline-template")&&(t.inlineTemplate=!0)}function ei(t){var n,r,i,o,a,s,u,c=t.attrsList;for(n=0,r=c.length;n<r;n++)if(i=o=c[n].name,a=c[n].value,Bu.test(i))if(t.hasBindings=!0,s=ri(i),s&&(i=i.replace(Hu,"")),zu.test(i))i=i.replace(zu,""),a=bn(a),u=!1,s&&(s.prop&&(u=!0,"innerHtml"===(i=io(i))&&(i="innerHTML")),s.camel&&(i=io(i)),s.sync&&An(t,"update:"+io(i),jn(a,"$event"))),u||!t.component&&ku(t.tag,t.attrsMap.type,i)?On(t,i,a):Cn(t,i,a);else if(Uu.test(i))i=i.replace(Uu,""),An(t,i,a,s,!1,xu);else{i=i.replace(Bu,"");var f=i.match(qu),l=f&&f[1];l&&(i=i.slice(0,-(l.length+1))),Sn(t,i,o,a,l,s),"production"!==e.env.NODE_ENV&&"model"===i&&ui(t,a)}else{if("production"!==e.env.NODE_ENV){var p=Pr(a,Eu);p&&xu(i+'="'+a+'": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div id="{{ val }}">, use <div :id="val">.')}Cn(t,i,JSON.stringify(a))}}function ni(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}function ri(t){var e=t.match(Hu);if(e){var n={};return e.forEach(function(t){n[t.slice(1)]=!0}),n}}function ii(t){for(var n={},r=0,i=t.length;r<i;r++)"production"===e.env.NODE_ENV||!n[t[r].name]||ko||To||xu("duplicate attribute: "+t[r].name),n[t[r].name]=t[r].value;return n}function oi(t){return"script"===t.tag||"style"===t.tag}function ai(t){return"style"===t.tag||"script"===t.tag&&(!t.attrsMap.type||"text/javascript"===t.attrsMap.type)}function si(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];Wu.test(r.name)||(r.name=r.name.replace(Yu,""),e.push(r))}return e}function ui(t,e){for(var n=t;n;)n.for&&n.alias===e&&xu("<"+t.tag+' v-model="'+e+'">: You are binding v-model directly to a v-for iteration alias. This will not be able to modify the v-for source array because writing to the alias is like modifying a function local variable. Consider using an array of objects and use v-model on an object property instead.'),n=n.parent}function ci(t,e){t&&(Tu=Ku(e.staticKeys||""),ju=e.isReservedTag||uo,li(t),pi(t,!1))}function fi(t){return d("type,tag,attrsList,attrsMap,plain,parent,children,attrs"+(t?","+t:""))}function li(t){if(t.static=hi(t),1===t.type){if(!ju(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,n=t.children.length;e<n;e++){var r=t.children[e];li(r),r.static||(t.static=!1)}if(t.ifConditions)for(var i=1,o=t.ifConditions.length;i<o;i++){var a=t.ifConditions[i].block;li(a),a.static||(t.static=!1)}}}function pi(t,e){if(1===t.type){if((t.static||t.once)&&(t.staticInFor=e),t.static&&t.children.length&&(1!==t.children.length||3!==t.children[0].type))return void(t.staticRoot=!0);if(t.staticRoot=!1,t.children)for(var n=0,r=t.children.length;n<r;n++)pi(t.children[n],e||!!t.for);if(t.ifConditions)for(var i=1,o=t.ifConditions.length;i<o;i++)pi(t.ifConditions[i].block,e)}}function hi(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||to(t.tag)||!ju(t.tag)||di(t)||!Object.keys(t).every(Tu))))}function di(t){for(;t.parent;){if(t=t.parent,"template"!==t.tag)return!1;if(t.for)return!0}return!1}function vi(t,n,r){var i=n?"nativeOn:{":"on:{";for(var o in t){var a=t[o];"production"!==e.env.NODE_ENV&&"click"===o&&a&&a.modifiers&&a.modifiers.right&&r('Use "contextmenu" instead of "click.right" since right clicks do not actually fire "click" events.'),i+='"'+o+'":'+gi(o,a)+","}return i.slice(0,-1)+"}"}function gi(t,e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map(function(e){return gi(t,e)}).join(",")+"]";var n=Zu.test(e.value),r=Gu.test(e.value);if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)tc[s]?(o+=tc[s],Xu[s]&&a.push(s)):a.push(s);a.length&&(i+=mi(a)),o&&(i+=o);return"function($event){"+i+(n?e.value+"($event)":r?"("+e.value+")($event)":e.value)+"}"}return n||r?e.value:"function($event){"+e.value+"}"}function mi(t){return"if(!('button' in $event)&&"+t.map(yi).join("&&")+")return null;"}function yi(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Xu[t];return"_k($event.keyCode,"+JSON.stringify(t)+(n?","+JSON.stringify(n):"")+")"}function _i(t,n){"production"!==e.env.NODE_ENV&&n.modifiers&&mo("v-on without argument does not support modifiers."),t.wrapListeners=function(t){return"_g("+t+","+n.value+")"}}function bi(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}}function wi(t,e){var n=new nc(e);return{render:"with(this){return "+(t?xi(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function xi(t,e){if(t.staticRoot&&!t.staticProcessed)return Ei(t,e);if(t.once&&!t.onceProcessed)return Oi(t,e);if(t.for&&!t.forProcessed)return Ai(t,e);if(t.if&&!t.ifProcessed)return Ci(t,e);if("template"!==t.tag||t.slotTarget){if("slot"===t.tag)return Bi(t,e);var n;if(t.component)n=Vi(t.component,t,e);else{var r=t.plain?void 0:ki(t,e),i=t.inlineTemplate?null:$i(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o<e.transforms.length;o++)n=e.transforms[o](t,n);return n}return $i(t,e)||"void 0"}function Ei(t,e){return t.staticProcessed=!0,e.staticRenderFns.push("with(this){return "+xi(t,e)+"}"),"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Oi(t,n){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return Ci(t,n);if(t.staticInFor){for(var r="",i=t.parent;i;){if(i.for){r=i.key;break}i=i.parent}return r?"_o("+xi(t,n)+","+n.onceId+++","+r+")":("production"!==e.env.NODE_ENV&&n.warn("v-once can only be used inside v-for that is keyed. "),xi(t,n))}return Ei(t,n)}function Ci(t,e,n,r){return t.ifProcessed=!0,Si(t.ifConditions.slice(),e,n,r)}function Si(t,e,n,r){function i(t){return n?n(t,e):t.once?Oi(t,e):xi(t,e)}if(!t.length)return r||"_e()";var o=t.shift();return o.exp?"("+o.exp+")?"+i(o.block)+":"+Si(t,e,n,r):""+i(o.block)}function Ai(t,n,r,i){var o=t.for,a=t.alias,s=t.iterator1?","+t.iterator1:"",u=t.iterator2?","+t.iterator2:"";return"production"!==e.env.NODE_ENV&&n.maybeComponent(t)&&"slot"!==t.tag&&"template"!==t.tag&&!t.key&&n.warn("<"+t.tag+' v-for="'+a+" in "+o+'">: component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info.',!0),t.forProcessed=!0,(i||"_l")+"(("+o+"),function("+a+s+u+"){return "+(r||xi)(t,n)+"})"}function ki(t,e){var n="{",r=Ni(t,e);r&&(n+=r+","),t.key&&(n+="key:"+t.key+","),t.ref&&(n+="ref:"+t.ref+","),t.refInFor&&(n+="refInFor:true,"),t.pre&&(n+="pre:true,"),t.component&&(n+='tag:"'+t.tag+'",');for(var i=0;i<e.dataGenFns.length;i++)n+=e.dataGenFns[i](t);if(t.attrs&&(n+="attrs:{"+Fi(t.attrs)+"},"),t.props&&(n+="domProps:{"+Fi(t.props)+"},"),t.events&&(n+=vi(t.events,!1,e.warn)+","),t.nativeEvents&&(n+=vi(t.nativeEvents,!0,e.warn)+","),t.slotTarget&&(n+="slot:"+t.slotTarget+","),t.scopedSlots&&(n+=ji(t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=Ti(t,e);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Ni(t,e){var n=t.directives;if(n){var r,i,o,a,s="directives:[",u=!1;for(r=0,i=n.length;r<i;r++){o=n[r],a=!0;var c=e.directives[o.name];c&&(a=!!c(t,o,e.warn)),a&&(u=!0,s+='{name:"'+o.name+'",rawName:"'+o.rawName+'"'+(o.value?",value:("+o.value+"),expression:"+JSON.stringify(o.value):"")+(o.arg?',arg:"'+o.arg+'"':"")+(o.modifiers?",modifiers:"+JSON.stringify(o.modifiers):"")+"},")}return u?s.slice(0,-1)+"]":void 0}}function Ti(t,n){var r=t.children[0];if("production"!==e.env.NODE_ENV&&(t.children.length>1||1!==r.type)&&n.warn("Inline-template components must have exactly one child element."),1===r.type){var i=wi(r,n.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}function ji(t,e){return"scopedSlots:_u(["+Object.keys(t).map(function(n){return Ri(n,t[n],e)}).join(",")+"])"}function Ri(t,e,n){return e.for&&!e.forProcessed?Pi(t,e,n):"{key:"+t+",fn:function("+String(e.attrsMap.scope)+"){return "+("template"===e.tag?$i(e,n)||"void 0":xi(e,n))+"}}"}function Pi(t,e,n){var r=e.for,i=e.alias,o=e.iterator1?","+e.iterator1:"",a=e.iterator2?","+e.iterator2:"";return e.forProcessed=!0,"_l(("+r+"),function("+i+o+a+"){return "+Ri(t,e,n)+"})"}function $i(t,e,n,r,i){var o=t.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag)return(r||xi)(a,e);var s=n?Di(o,e.maybeComponent):0,u=i||Ii;return"["+o.map(function(t){return u(t,e)}).join(",")+"]"+(s?","+s:"")}}function Di(t,e){for(var n=0,r=0;r<t.length;r++){var i=t[r];if(1===i.type){if(Li(i)||i.ifConditions&&i.ifConditions.some(function(t){return Li(t.block)})){n=2;break}(e(i)||i.ifConditions&&i.ifConditions.some(function(t){return e(t.block)}))&&(n=1)}}return n}function Li(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function Ii(t,e){return 1===t.type?xi(t,e):3===t.type&&t.isComment?Ui(t):Mi(t)}function Mi(t){return"_v("+(2===t.type?t.expression:qi(JSON.stringify(t.text)))+")"}function Ui(t){return"_e("+JSON.stringify(t.text)+")"}function Bi(t,e){var n=t.slotName||'"default"',r=$i(t,e),i="_t("+n+(r?","+r:""),o=t.attrs&&"{"+t.attrs.map(function(t){return io(t.name)+":"+t.value}).join(",")+"}",a=t.attrsMap["v-bind"];return!o&&!a||r||(i+=",null"),o&&(i+=","+o),a&&(i+=(o?"":",null")+","+a),i+")"}function Vi(t,e,n){var r=e.inlineTemplate?null:$i(e,n,!0);return"_c("+t+","+ki(e,n)+(r?","+r:"")+")"}function Fi(t){for(var e="",n=0;n<t.length;n++){var r=t[n];e+='"'+r.name+'":'+qi(r.value)+","}return e.slice(0,-1)}function qi(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function zi(t){var e=[];return t&&Hi(t,e),e}function Hi(t,e){if(1===t.type){for(var n in t.attrsMap)if(Bu.test(n)){var r=t.attrsMap[n];r&&("v-for"===n?Wi(t,'v-for="'+r+'"',e):Uu.test(n)?Ji(r,n+'="'+r+'"',e):Ki(r,n+'="'+r+'"',e))}if(t.children)for(var i=0;i<t.children.length;i++)Hi(t.children[i],e)}else 2===t.type&&Ki(t.expression,t.text,e)}function Ji(t,e,n){var r=t.replace(ac,""),i=r.match(ic);i&&"$"!==r.charAt(i.index-1)&&n.push('avoid using JavaScript unary operator as property name: "'+i[0]+'" in expression '+e.trim()),Ki(t,e,n)}function Wi(t,e,n){Ki(t.for||"",e,n),Yi(t.alias,"v-for alias",e,n),Yi(t.iterator1,"v-for iterator",e,n),Yi(t.iterator2,"v-for iterator",e,n)}function Yi(t,e,n,r){"string"!=typeof t||oc.test(t)||r.push("invalid "+e+' "'+t+'" in expression: '+n.trim())}function Ki(t,e,n){try{new Function("return "+t)}catch(i){var r=t.replace(ac,"").match(rc);r?n.push('avoid using JavaScript keyword as property name: "'+r[0]+'" in expression '+e.trim()):n.push("invalid expression: "+e.trim())}}function Gi(t,e){try{return new Function(t)}catch(n){return e.push({err:n,code:t}),x}}function Zi(t){var n=Object.create(null);return function(r,i,o){if(i=i||{},"production"!==e.env.NODE_ENV)try{new Function("return 1")}catch(t){t.toString().match(/unsafe-eval|CSP/)&&mo("It seems you are using the standalone build of Vue.js in an environment with Content Security Policy that prohibits unsafe-eval. The template compiler cannot work in this environment. Consider relaxing the policy to allow unsafe-eval or pre-compiling your templates into render functions.")}var a=i.delimiters?String(i.delimiters)+r:r;if(n[a])return n[a];var s=t(r,i);"production"!==e.env.NODE_ENV&&(s.errors&&s.errors.length&&mo("Error compiling template:\n\n"+r+"\n\n"+s.errors.map(function(t){return"- "+t}).join("\n")+"\n",o),s.tips&&s.tips.length&&s.tips.forEach(function(t){return yo(t,o)}));var u={},c=[];return u.render=Gi(s.render,c),u.staticRenderFns=s.staticRenderFns.map(function(t){return Gi(t,c)}),"production"!==e.env.NODE_ENV&&(s.errors&&s.errors.length||!c.length||mo("Failed to generate render function:\n\n"+c.map(function(t){var e=t.err,n=t.code;return e.toString()+" in\n\n"+n+"\n"}).join("\n"),o)),n[a]=u}}function Xi(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}var Qi=Object.prototype.toString,to=d("slot,component",!0),eo=d("key,ref,slot,is"),no=Object.prototype.hasOwnProperty,ro=/-(\w)/g,io=m(function(t){return t.replace(ro,function(t,e){return e?e.toUpperCase():""})}),oo=m(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),ao=/\B([A-Z])/g,so=m(function(t){return t.replace(ao,"-$1").toLowerCase()}),uo=function(t,e,n){return!1},co=function(t){return t},fo="data-server-rendered",lo=["component","directive","filter"],po=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated"],ho={optionMergeStrategies:Object.create(null),silent:!1,productionTip:"production"!==e.env.NODE_ENV,devtools:"production"!==e.env.NODE_ENV,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:uo,isReservedAttr:uo,isUnknownElement:uo,getTagNamespace:x,parsePlatformTagName:co,mustUseProp:uo,_lifecycleHooks:po},vo=Object.freeze({}),go=/[^\w.$]/,mo=x,yo=x,_o=null;if("production"!==e.env.NODE_ENV){var bo="undefined"!=typeof console,wo=/(?:^|[-_])(\w)/g,xo=function(t){return t.replace(wo,function(t){return t.toUpperCase()}).replace(/[-_]/g,"")};mo=function(t,e){var n=e?Oo(e):"";ho.warnHandler?ho.warnHandler.call(null,t,e,n):bo&&!ho.silent&&console.error("[Vue warn]: "+t+n)},yo=function(t,e){bo&&!ho.silent&&console.warn("[Vue tip]: "+t+(e?Oo(e):""))},_o=function(t,e){if(t.$root===t)return"<Root>";var n="string"==typeof t?t:"function"==typeof t&&t.options?t.options.name:t._isVue?t.$options.name||t.$options._componentTag:t.name,r=t._isVue&&t.$options.__file;if(!n&&r){var i=r.match(/([^\/\\]+)\.vue$/);n=i&&i[1]}return(n?"<"+xo(n)+">":"<Anonymous>")+(r&&!1!==e?" at "+r:"")};var Eo=function(t,e){for(var n="";e;)e%2==1&&(n+=t),e>1&&(t+=t),e>>=1;return n},Oo=function(t){if(t._isVue&&t.$parent){for(var e=[],n=0;t;){if(e.length>0){var r=e[e.length-1];if(r.constructor===t.constructor){n++,t=t.$parent;continue}n>0&&(e[e.length-1]=[r,n],n=0)}e.push(t),t=t.$parent}return"\n\nfound in\n\n"+e.map(function(t,e){return""+(0===e?"---\x3e ":Eo(" ",5+2*e))+(Array.isArray(t)?_o(t[0])+"... ("+t[1]+" recursive calls)":_o(t))}).join("\n")}return"\n\n(found in "+_o(t)+")"}}var Co="__proto__"in{},So="undefined"!=typeof window,Ao=So&&window.navigator.userAgent.toLowerCase(),ko=Ao&&/msie|trident/.test(Ao),No=Ao&&Ao.indexOf("msie 9.0")>0,To=Ao&&Ao.indexOf("edge/")>0,jo=Ao&&Ao.indexOf("android")>0,Ro=Ao&&/iphone|ipad|ipod|ios/.test(Ao),Po=Ao&&/chrome\/\d+/.test(Ao)&&!To,$o={}.watch,Do=!1;if(So)try{var Lo={};Object.defineProperty(Lo,"passive",{get:function(){Do=!0}}),window.addEventListener("test-passive",null,Lo)}catch(t){}var Io,Mo,Uo=function(){return void 0===Io&&(Io=!So&&void 0!==n&&"server"===n.process.env.VUE_ENV),Io},Bo=So&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Vo="undefined"!=typeof Symbol&&T(Symbol)&&"undefined"!=typeof Reflect&&T(Reflect.ownKeys),Fo=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e<t.length;e++)t[e]()}var e,n=[],r=!1;if("undefined"!=typeof Promise&&T(Promise)){var i=Promise.resolve(),o=function(t){console.error(t)};e=function(){i.then(t).catch(o),Ro&&setTimeout(x)}}else if(ko||"undefined"==typeof MutationObserver||!T(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())e=function(){setTimeout(t,0)};else{var a=1,s=new MutationObserver(t),u=document.createTextNode(String(a));s.observe(u,{characterData:!0}),e=function(){a=(a+1)%2,u.data=String(a)}}return function(t,i){var o;if(n.push(function(){if(t)try{t.call(i)}catch(t){N(t,i,"nextTick")}else o&&o(i)}),r||(r=!0,e()),!t&&"undefined"!=typeof Promise)return new Promise(function(t,e){o=t})}}();Mo="undefined"!=typeof Set&&T(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var qo=0,zo=function(){this.id=qo++,this.subs=[]};zo.prototype.addSub=function(t){this.subs.push(t)},zo.prototype.removeSub=function(t){v(this.subs,t)},zo.prototype.depend=function(){zo.target&&zo.target.addDep(this)},zo.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},zo.target=null;var Ho=[],Jo=Array.prototype,Wo=Object.create(Jo);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(t){var e=Jo[t];A(Wo,t,function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var i,o=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":i=n;break;case"splice":i=n.slice(2)}return i&&a.observeArray(i),a.dep.notify(),o})});var Yo=Object.getOwnPropertyNames(Wo),Ko={shouldConvert:!0},Go=function(t){if(this.value=t,this.dep=new zo,this.vmCount=0,A(t,"__ob__",this),Array.isArray(t)){(Co?P:$)(t,Wo,Yo),this.observeArray(t)}else this.walk(t)};Go.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)L(t,e[n],t[e[n]])},Go.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)D(t[e])};var Zo=ho.optionMergeStrategies;"production"!==e.env.NODE_ENV&&(Zo.el=Zo.propsData=function(t,e,n,r){return n||mo('option "'+r+'" can only be used during instance creation with the `new` keyword.'),ta(t,e)}),Zo.data=function(t,n,r){return r?V(t,n,r):n&&"function"!=typeof n?("production"!==e.env.NODE_ENV&&mo('The "data" option should be a function that returns a per-instance value in component definitions.',r),t):V.call(this,t,n)},po.forEach(function(t){Zo[t]=F}),lo.forEach(function(t){Zo[t+"s"]=q}),Zo.watch=function(t,e){if(t===$o&&(t=void 0),e===$o&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var n={};b(n,t);for(var r in e){var i=n[r],o=e[r];i&&!Array.isArray(i)&&(i=[i]),n[r]=i?i.concat(o):Array.isArray(o)?o:[o]}return n},Zo.props=Zo.methods=Zo.inject=Zo.computed=function(t,e){if(!t)return e;var n=Object.create(null);return b(n,t),e&&b(n,e),n},Zo.provide=V;var Xo,Qo,ta=function(t,e){return void 0===e?t:e},ea=/^(String|Number|Boolean|Function|Symbol)$/;if("production"!==e.env.NODE_ENV){var na=So&&window.performance;na&&na.mark&&na.measure&&na.clearMarks&&na.clearMeasures&&(Xo=function(t){return na.mark(t)},Qo=function(t,e,n){na.measure(t,e,n),na.clearMarks(e),na.clearMarks(n),na.clearMeasures(t)})}var ra;if("production"!==e.env.NODE_ENV){var ia=d("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,require"),oa=function(t,e){mo('Property or method "'+e+'" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option.',t)},aa="undefined"!=typeof Proxy&&Proxy.toString().match(/native code/);if(aa){var sa=d("stop,prevent,self,ctrl,shift,alt,meta");ho.keyCodes=new Proxy(ho.keyCodes,{set:function(t,e,n){return sa(e)?(mo("Avoid overwriting built-in modifier in config.keyCodes: ."+e),!1):(t[e]=n,!0)}})}var ua={has:function(t,e){var n=e in t,r=ia(e)||"_"===e.charAt(0);return n||r||oa(t,e),n||!r}},ca={get:function(t,e){return"string"!=typeof e||e in t||oa(t,e),t[e]}};ra=function(t){if(aa){var e=t.$options,n=e.render&&e.render._withStripped?ca:ua;t._renderProxy=new Proxy(t,n)}else t._renderProxy=t}}var fa=function(t,e,n,r,i,o,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=i,this.ns=void 0,this.context=o,this.functionalContext=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},la={child:{}};la.child.get=function(){return this.componentInstance},Object.defineProperties(fa.prototype,la);var pa,ha=function(t){void 0===t&&(t="");var e=new fa;return e.text=t,e.isComment=!0,e},da=m(function(t){var e="&"===t.charAt(0);t=e?t.slice(1):t;var n="~"===t.charAt(0);t=n?t.slice(1):t;var r="!"===t.charAt(0);return t=r?t.slice(1):t,{name:t,plain:!(e||n||r),once:n,capture:r,passive:e}}),va=null,ga=!1,ma=100,ya=[],_a=[],ba={},wa={},xa=!1,Ea=!1,Oa=0,Ca=0,Sa=function(t,n,r,i){this.vm=t,t._watchers.push(this),i?(this.deep=!!i.deep,this.user=!!i.user,this.lazy=!!i.lazy,this.sync=!!i.sync):this.deep=this.user=this.lazy=this.sync=!1,this.cb=r,this.id=++Ca,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new Mo,this.newDepIds=new Mo,this.expression="production"!==e.env.NODE_ENV?n.toString():"","function"==typeof n?this.getter=n:(this.getter=k(n),this.getter||(this.getter=function(){},"production"!==e.env.NODE_ENV&&mo('Failed watching path: "'+n+'" Watcher only accepts simple dot-delimited paths. For full control, use a function instead.',t))),this.value=this.lazy?void 0:this.get()};Sa.prototype.get=function(){j(this);var t,e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;N(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&Bt(t),R(),this.cleanupDeps()}return t},Sa.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},Sa.prototype.cleanupDeps=function(){for(var t=this,e=this.deps.length;e--;){var n=t.deps[e];t.newDepIds.has(n.id)||n.removeSub(t)}var r=this.depIds;this.depIds=this.newDepIds,this.newDepIds=r,this.newDepIds.clear(),r=this.deps,this.deps=this.newDeps,this.newDeps=r,this.newDeps.length=0},Sa.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():Ut(this)},Sa.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||u(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){N(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},Sa.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},Sa.prototype.depend=function(){for(var t=this,e=this.deps.length;e--;)t.deps[e].depend()},Sa.prototype.teardown=function(){var t=this;if(this.active){this.vm._isBeingDestroyed||v(this.vm._watchers,this);for(var e=this.deps.length;e--;)t.deps[e].removeSub(t);this.active=!1}};var Aa=new Mo,ka={enumerable:!0,configurable:!0,get:x,set:x},Na={lazy:!0},Ta={init:function(t,e,n,r){if(!t.componentInstance||t.componentInstance._isDestroyed){(t.componentInstance=ae(t,va,n,r)).$mount(e?t.elm:void 0,e)}else if(t.data.keepAlive){var i=t;Ta.prepatch(i,i)}},prepatch:function(t,e){var n=e.componentOptions;Nt(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e=t.context,n=t.componentInstance;n._isMounted||(n._isMounted=!0,Pt(n,"mounted")),t.data.keepAlive&&(e._isMounted?It(n):jt(n,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?Rt(e,!0):e.$destroy())}},ja=Object.keys(Ta),Ra=1,Pa=2,$a=0;!function(t){t.prototype._init=function(t){var n=this;n._uid=$a++;var r,i;"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(r="vue-perf-init:"+n._uid,i="vue-perf-end:"+n._uid,Xo(r)),n._isVue=!0,t&&t._isComponent?Oe(n,t):n.$options=Y(Ce(n.constructor),t||{},n),"production"!==e.env.NODE_ENV?ra(n):n._renderProxy=n,n._self=n,At(n),bt(n),Ee(n),Pt(n,"beforeCreate"),ee(n),qt(n),te(n),Pt(n,"created"),"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(n._name=_o(n,!1),Xo(i),Qo(n._name+" init",r,i)),n.$options.el&&n.$mount(n.$options.el)}}(ke),function(t){var n={};n.get=function(){return this._data};var r={};r.get=function(){return this._props},"production"!==e.env.NODE_ENV&&(n.set=function(t){mo("Avoid replacing instance root $data. Use nested data properties instead.",this)},r.set=function(){mo("$props is readonly.",this)}),Object.defineProperty(t.prototype,"$data",n),Object.defineProperty(t.prototype,"$props",r),t.prototype.$set=I,t.prototype.$delete=M,t.prototype.$watch=function(t,e,n){var r=this;if(c(e))return Qt(r,t,e,n);n=n||{},n.user=!0;var i=new Sa(r,t,e,n);return n.immediate&&e.call(r,i.value),function(){i.teardown()}}}(ke),function(t){var n=/^hook:/;t.prototype.$on=function(t,e){var r=this,i=this;if(Array.isArray(t))for(var o=0,a=t.length;o<a;o++)r.$on(t[o],e);else(i._events[t]||(i._events[t]=[])).push(e),n.test(t)&&(i._hasHookEvent=!0);return i},t.prototype.$once=function(t,e){function n(){r.$off(t,n),e.apply(r,arguments)}var r=this;return n.fn=e,r.$on(t,n),r},t.prototype.$off=function(t,e){var n=this,r=this;if(!arguments.length)return r._events=Object.create(null),r;if(Array.isArray(t)){for(var i=0,o=t.length;i<o;i++)n.$off(t[i],e);return r}var a=r._events[t];if(!a)return r;if(1===arguments.length)return r._events[t]=null,r;if(e)for(var s,u=a.length;u--;)if((s=a[u])===e||s.fn===e){a.splice(u,1);break}return r},t.prototype.$emit=function(t){var n=this;if("production"!==e.env.NODE_ENV){var r=t.toLowerCase();r!==t&&n._events[r]&&yo('Event "'+r+'" is emitted in component '+_o(n)+' but the handler is registered for "'+t+'". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "'+so(t)+'" instead of "'+t+'".')}var i=n._events[t];if(i){i=i.length>1?_(i):i;for(var o=_(arguments,1),a=0,s=i.length;a<s;a++)try{i[a].apply(n,o)}catch(e){N(e,n,'event handler for "'+t+'"')}}return n}}(ke),function(t){t.prototype._update=function(t,e){var n=this;n._isMounted&&Pt(n,"beforeUpdate");var r=n.$el,i=n._vnode,o=va;va=n,n._vnode=t,i?n.$el=n.__patch__(i,t):(n.$el=n.__patch__(n.$el,t,e,!1,n.$options._parentElm,n.$options._refElm),n.$options._parentElm=n.$options._refElm=null),va=o,r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){var t=this;t._watcher&&t._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Pt(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||v(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Pt(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null)}}}(ke),function(t){t.prototype.$nextTick=function(t){return Fo(t,this)},t.prototype._render=function(){var t=this,n=t.$options,r=n.render,i=n.staticRenderFns,o=n._parentVnode;if(t._isMounted)for(var a in t.$slots){var s=t.$slots[a];s._rendered&&(t.$slots[a]=it(s,!0))}t.$scopedSlots=o&&o.data.scopedSlots||vo,i&&!t._staticTrees&&(t._staticTrees=[]),t.$vnode=o;var u;try{u=r.call(t._renderProxy,t.$createElement)}catch(n){N(n,t,"render function"),u="production"!==e.env.NODE_ENV&&t.$options.renderError?t.$options.renderError.call(t._renderProxy,t.$createElement,n):t._vnode}return u instanceof fa||("production"!==e.env.NODE_ENV&&Array.isArray(u)&&mo("Multiple root nodes returned from render function. Render function should return a single root node.",t),u=ha()),u.parent=o,u},t.prototype._o=_e,t.prototype._n=h,t.prototype._s=p,t.prototype._l=he,t.prototype._t=de,t.prototype._q=E,t.prototype._i=O,t.prototype._m=ye,t.prototype._f=ve,t.prototype._k=ge,t.prototype._b=me,t.prototype._v=nt,t.prototype._e=ha,t.prototype._u=St,t.prototype._g=xe}(ke);var Da=[String,RegExp,Array],La={name:"keep-alive",abstract:!0,props:{include:Da,exclude:Da},created:function(){this.cache=Object.create(null)},destroyed:function(){var t=this;for(var e in t.cache)Me(t.cache[e])},watch:{include:function(t){Ie(this.cache,this._vnode,function(e){return Le(t,e)})},exclude:function(t){Ie(this.cache,this._vnode,function(e){return!Le(t,e)})}},render:function(){var t=_t(this.$slots.default),e=t&&t.componentOptions;if(e){var n=De(e);if(n&&(this.include&&!Le(this.include,n)||this.exclude&&Le(this.exclude,n)))return t;var r=null==t.key?e.Ctor.cid+(e.tag?"::"+e.tag:""):t.key;this.cache[r]?t.componentInstance=this.cache[r].componentInstance:this.cache[r]=t,t.data.keepAlive=!0}return t}},Ia={KeepAlive:La};!function(t){var n={};n.get=function(){return ho},"production"!==e.env.NODE_ENV&&(n.set=function(){mo("Do not replace the Vue.config object, set individual fields instead.")}),Object.defineProperty(t,"config",n),t.util={warn:mo,extend:b,mergeOptions:Y,defineReactive:L},t.set=I,t.delete=M,t.nextTick=Fo,t.options=Object.create(null),lo.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,b(t.options.components,Ia),Ne(t),Te(t),je(t),$e(t)}(ke),Object.defineProperty(ke.prototype,"$isServer",{get:Uo}),Object.defineProperty(ke.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),ke.version="2.4.4";var Ma,Ua,Ba,Va,Fa,qa,za,Ha,Ja,Wa=d("style,class"),Ya=d("input,textarea,option,select,progress"),Ka=function(t,e,n){return"value"===n&&Ya(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Ga=d("contenteditable,draggable,spellcheck"),Za=d("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Xa="http://www.w3.org/1999/xlink",Qa=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},ts=function(t){return Qa(t)?t.slice(6,t.length):""},es=function(t){return null==t||!1===t},ns={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},rs=d("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),is=d("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),os=function(t){return"pre"===t},as=function(t){return rs(t)||is(t)},ss=Object.create(null),us=d("text,number,password,search,email,tel,url"),cs=Object.freeze({createElement:Ke,createElementNS:Ge,createTextNode:Ze,createComment:Xe,insertBefore:Qe,removeChild:tn,appendChild:en,parentNode:nn,nextSibling:rn,tagName:on,setTextContent:an,setAttribute:sn}),fs={create:function(t,e){un(e)},update:function(t,e){t.data.ref!==e.data.ref&&(un(t,!0),un(e))},destroy:function(t){un(t,!0)}},ls=new fa("",{},[]),ps=["create","activate","update","remove","destroy"],hs={create:pn,update:pn,destroy:function(t){pn(t,ls)}},ds=Object.create(null),vs=[fs,hs],gs={create:mn,update:mn},ms={create:_n,update:_n},ys=/[\w).+\-_$\]]/,_s="__r",bs="__c",ws={create:Jn,update:Jn},xs={create:Wn,update:Wn},Es=m(function(t){var e={},n=/;(?![^(]*\))/g,r=/:(.+)/;return t.split(n).forEach(function(t){if(t){var n=t.split(r);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}),Os=/^--/,Cs=/\s*!important$/,Ss=function(t,e,n){if(Os.test(e))t.style.setProperty(e,n);else if(Cs.test(n))t.style.setProperty(e,n.replace(Cs,""),"important");else{var r=ks(e);if(Array.isArray(n))for(var i=0,o=n.length;i<o;i++)t.style[r]=n[i];else t.style[r]=n}},As=["Webkit","Moz","ms"],ks=m(function(t){if(Ja=Ja||document.createElement("div").style,"filter"!==(t=io(t))&&t in Ja)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<As.length;n++){var r=As[n]+e;if(r in Ja)return r}}),Ns={create:tr,update:tr},Ts=m(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),js=So&&!No,Rs="transition",Ps="animation",$s="transition",Ds="transitionend",Ls="animation",Is="animationend";js&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&($s="WebkitTransition",Ds="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ls="WebkitAnimation",Is="webkitAnimationEnd"));var Ms=So&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout,Us=/\b(transform|all)(,|$)/,Bs=So?{create:gr,activate:gr,remove:function(t,e){!0!==t.data.show?pr(t,e):e()}}:{},Vs=[gs,ms,ws,xs,Ns,Bs],Fs=Vs.concat(vs),qs=function(t){function n(t){return new fa(P.tagName(t).toLowerCase(),{},[],void 0,t)}function a(t,e){function n(){0==--n.listeners&&u(t)}return n.listeners=e,n}function u(t){var e=P.parentNode(t);i(e)&&P.removeChild(e,t)}function c(t,n,r,a,s){if(t.isRootInsert=!s,!f(t,n,r,a)){var u=t.data,c=t.children,l=t.tag;i(l)?("production"!==e.env.NODE_ENV&&(u&&u.pre&&$++,$||t.ns||ho.ignoredElements.length&&ho.ignoredElements.indexOf(l)>-1||!ho.isUnknownElement(l)||mo("Unknown custom element: <"+l+'> - did you register the component correctly? For recursive components, make sure to provide the "name" option.',t.context)),t.elm=t.ns?P.createElementNS(t.ns,l):P.createElement(l,t),y(t),v(t,c,n),i(u)&&m(t,n),h(r,t.elm,a),"production"!==e.env.NODE_ENV&&u&&u.pre&&$--):o(t.isComment)?(t.elm=P.createComment(t.text),h(r,t.elm,a)):(t.elm=P.createTextNode(t.text),h(r,t.elm,a))}}function f(t,e,n,r){var a=t.data;if(i(a)){var s=i(t.componentInstance)&&a.keepAlive;if(i(a=a.hook)&&i(a=a.init)&&a(t,!1,n,r),i(t.componentInstance))return l(t,e),o(s)&&p(t,e,n,r),!0}}function l(t,e){i(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,g(t)?(m(t,e),y(t)):(un(t),e.push(t))}function p(t,e,n,r){for(var o,a=t;a.componentInstance;)if(a=a.componentInstance._vnode,i(o=a.data)&&i(o=o.transition)){for(o=0;o<j.activate.length;++o)j.activate[o](ls,a);e.push(a);break}h(n,t.elm,r)}function h(t,e,n){i(t)&&(i(n)?n.parentNode===t&&P.insertBefore(t,e,n):P.appendChild(t,e))}function v(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)c(e[r],n,t.elm,null,!0);else s(t.text)&&P.appendChild(t.elm,P.createTextNode(t.text))}function g(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return i(t.tag)}function m(t,e){for(var n=0;n<j.create.length;++n)j.create[n](ls,t);N=t.data.hook,i(N)&&(i(N.create)&&N.create(ls,t),i(N.insert)&&e.push(t))}function y(t){for(var e,n=t;n;)i(e=n.context)&&i(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,""),n=n.parent;i(e=va)&&e!==t.context&&i(e=e.$options._scopeId)&&P.setAttribute(t.elm,e,"")}function _(t,e,n,r,i,o){for(;r<=i;++r)c(n[r],o,t,e)}function b(t){var e,n,r=t.data;if(i(r))for(i(e=r.hook)&&i(e=e.destroy)&&e(t),e=0;e<j.destroy.length;++e)j.destroy[e](t);if(i(e=t.children))for(n=0;n<t.children.length;++n)b(t.children[n])}function w(t,e,n,r){for(;n<=r;++n){var o=e[n];i(o)&&(i(o.tag)?(x(o),b(o)):u(o.elm))}}function x(t,e){if(i(e)||i(t.data)){var n,r=j.remove.length+1;for(i(e)?e.listeners+=r:e=a(t.elm,r),i(n=t.componentInstance)&&i(n=n._vnode)&&i(n.data)&&x(n,e),n=0;n<j.remove.length;++n)j.remove[n](t,e);i(n=t.data.hook)&&i(n=n.remove)?n(t,e):e()}else u(t.elm)}function E(t,n,o,a,s){for(var u,f,l,p,h=0,d=0,v=n.length-1,g=n[0],m=n[v],y=o.length-1,b=o[0],x=o[y],E=!s;h<=v&&d<=y;)r(g)?g=n[++h]:r(m)?m=n[--v]:cn(g,b)?(C(g,b,a),g=n[++h],b=o[++d]):cn(m,x)?(C(m,x,a),m=n[--v],x=o[--y]):cn(g,x)?(C(g,x,a),E&&P.insertBefore(t,g.elm,P.nextSibling(m.elm)),g=n[++h],x=o[--y]):cn(m,b)?(C(m,b,a),E&&P.insertBefore(t,m.elm,g.elm),m=n[--v],b=o[++d]):(r(u)&&(u=ln(n,h,v)),f=i(b.key)?u[b.key]:O(b,n,h,v),r(f)?c(b,a,t,g.elm):(l=n[f],"production"===e.env.NODE_ENV||l||mo("It seems there are duplicate keys that is causing an update error. Make sure each v-for item has a unique key."),cn(l,b)?(C(l,b,a),n[f]=void 0,E&&P.insertBefore(t,l.elm,g.elm)):c(b,a,t,g.elm)),b=o[++d]);h>v?(p=r(o[y+1])?null:o[y+1].elm,_(t,p,o,d,y,a)):d>y&&w(t,n,h,v)}function O(t,e,n,r){for(var o=n;o<r;o++){var a=e[o];if(i(a)&&cn(t,a))return o}}function C(t,e,n,a){if(t!==e){var s=e.elm=t.elm;if(o(t.isAsyncPlaceholder))return void(i(e.asyncFactory.resolved)?A(t.elm,e,n):e.isAsyncPlaceholder=!0);if(o(e.isStatic)&&o(t.isStatic)&&e.key===t.key&&(o(e.isCloned)||o(e.isOnce)))return void(e.componentInstance=t.componentInstance);var u,c=e.data;i(c)&&i(u=c.hook)&&i(u=u.prepatch)&&u(t,e);var f=t.children,l=e.children;if(i(c)&&g(e)){for(u=0;u<j.update.length;++u)j.update[u](t,e);i(u=c.hook)&&i(u=u.update)&&u(t,e)}r(e.text)?i(f)&&i(l)?f!==l&&E(s,f,l,n,a):i(l)?(i(t.text)&&P.setTextContent(s,""),_(s,null,l,0,l.length-1,n)):i(f)?w(s,f,0,f.length-1):i(t.text)&&P.setTextContent(s,""):t.text!==e.text&&P.setTextContent(s,e.text),i(c)&&i(u=c.hook)&&i(u=u.postpatch)&&u(t,e)}}function S(t,e,n){if(o(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}function A(t,n,r){if(o(n.isComment)&&i(n.asyncFactory))return n.elm=t,n.isAsyncPlaceholder=!0,!0;if("production"!==e.env.NODE_ENV&&!k(t,n))return!1;n.elm=t;var a=n.tag,s=n.data,u=n.children;if(i(s)&&(i(N=s.hook)&&i(N=N.init)&&N(n,!0),i(N=n.componentInstance)))return l(n,r),!0;if(i(a)){if(i(u))if(t.hasChildNodes())if(i(N=s)&&i(N=N.domProps)&&i(N=N.innerHTML)){if(N!==t.innerHTML)return"production"===e.env.NODE_ENV||"undefined"==typeof console||D||(D=!0,console.warn("Parent: ",t),console.warn("server innerHTML: ",N),console.warn("client innerHTML: ",t.innerHTML)),!1}else{for(var c=!0,f=t.firstChild,p=0;p<u.length;p++){if(!f||!A(f,u[p],r)){c=!1;break}f=f.nextSibling}if(!c||f)return"production"===e.env.NODE_ENV||"undefined"==typeof console||D||(D=!0,console.warn("Parent: ",t),console.warn("Mismatching childNodes vs. VNodes: ",t.childNodes,u)),!1}else v(n,u,r);if(i(s))for(var h in s)if(!L(h)){m(n,r);break}}else t.data!==n.text&&(t.data=n.text);return!0}function k(t,e){return i(e.tag)?0===e.tag.indexOf("vue-component")||e.tag.toLowerCase()===(t.tagName&&t.tagName.toLowerCase()):t.nodeType===(e.isComment?8:3)}var N,T,j={},R=t.modules,P=t.nodeOps;for(N=0;N<ps.length;++N)for(j[ps[N]]=[],T=0;T<R.length;++T)i(R[T][ps[N]])&&j[ps[N]].push(R[T][ps[N]]);var $=0,D=!1,L=d("attrs,style,class,staticClass,staticStyle,key");return function(t,a,s,u,f,l){if(r(a))return void(i(t)&&b(t));var p=!1,h=[];if(r(t))p=!0,c(a,h,f,l);else{var d=i(t.nodeType);if(!d&&cn(t,a))C(t,a,h,u);else{if(d){if(1===t.nodeType&&t.hasAttribute(fo)&&(t.removeAttribute(fo),s=!0),o(s)){if(A(t,a,h))return S(a,h,!0),t;"production"!==e.env.NODE_ENV&&mo("The client-side rendered virtual DOM tree is not matching server-rendered content. This is likely caused by incorrect HTML markup, for example nesting block-level elements inside <p>, or missing <tbody>. Bailing hydration and performing full client-side render.")}t=n(t)}var v=t.elm,m=P.parentNode(v);if(c(a,h,v._leaveCb?null:m,P.nextSibling(v)),i(a.parent))for(var y=a.parent,_=g(a);y;){for(var x=0;x<j.destroy.length;++x)j.destroy[x](y);if(y.elm=a.elm,_){for(var E=0;E<j.create.length;++E)j.create[E](ls,y);var O=y.data.hook.insert;if(O.merged)for(var k=1;k<O.fns.length;k++)O.fns[k]()}y=y.parent}i(m)?w(m,[t],0,0):i(t.tag)&&b(t)}}return S(a,h,p),a.elm}}({nodeOps:cs,modules:Fs});No&&document.addEventListener("selectionchange",function(){var t=document.activeElement;t&&t.vmodel&&Er(t,"input")});var zs={inserted:function(t,e,n){"select"===n.tag?(mr(t,e,n.context),t._vOptions=[].map.call(t.options,br)):("textarea"===n.tag||us(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("change",xr),jo||(t.addEventListener("compositionstart",wr),t.addEventListener("compositionend",xr)),No&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){mr(t,e,n.context);var r=t._vOptions,i=t._vOptions=[].map.call(t.options,br);if(i.some(function(t,e){return!E(t,r[e])})){(t.multiple?e.value.some(function(t){return _r(t,i)}):e.value!==e.oldValue&&_r(e.value,i))&&Er(t,"change")}}}},Hs={bind:function(t,e,n){var r=e.value;n=Or(n);var i=n.data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,lr(n,function(){t.style.display=o})):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;r!==e.oldValue&&(n=Or(n),n.data&&n.data.transition?(n.data.show=!0,r?lr(n,function(){t.style.display=t.__vOriginalDisplay}):pr(n,function(){t.style.display="none"})):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}},Js={model:zs,show:Hs},Ws={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]},Ys={name:"transition",props:Ws,abstract:!0,render:function(t){var n=this,r=this.$options._renderChildren;if(r&&(r=r.filter(function(t){return t.tag||yt(t)}),r.length)){"production"!==e.env.NODE_ENV&&r.length>1&&mo("<transition> can only be used on a single element. Use <transition-group> for lists.",this.$parent);var i=this.mode;"production"!==e.env.NODE_ENV&&i&&"in-out"!==i&&"out-in"!==i&&mo("invalid <transition> mode: "+i,this.$parent);var o=r[0];if(kr(this.$vnode))return o;var a=Cr(o);if(!a)return o;if(this._leaving)return Ar(t,o);var u="__transition-"+this._uid+"-";a.key=null==a.key?a.isComment?u+"comment":u+a.tag:s(a.key)?0===String(a.key).indexOf(u)?a.key:u+a.key:a.key;var c=(a.data||(a.data={})).transition=Sr(this),f=this._vnode,l=Cr(f);if(a.data.directives&&a.data.directives.some(function(t){return"show"===t.name})&&(a.data.show=!0),l&&l.data&&!Nr(a,l)&&!yt(l)){var p=l&&(l.data.transition=b({},c));if("out-in"===i)return this._leaving=!0,ut(p,"afterLeave",function(){n._leaving=!1,n.$forceUpdate()}),Ar(t,o);if("in-out"===i){if(yt(a))return f;var h,d=function(){h()};ut(c,"afterEnter",d),ut(c,"enterCancelled",d),ut(p,"delayLeave",function(t){h=t})}}return o}}},Ks=b({tag:String,moveClass:String},Ws);delete Ks.mode;var Gs={props:Ks,render:function(t){for(var n=this.tag||this.$vnode.data.tag||"span",r=Object.create(null),i=this.prevChildren=this.children,o=this.$slots.default||[],a=this.children=[],s=Sr(this),u=0;u<o.length;u++){var c=o[u];if(c.tag)if(null!=c.key&&0!==String(c.key).indexOf("__vlist"))a.push(c),r[c.key]=c,(c.data||(c.data={})).transition=s;else if("production"!==e.env.NODE_ENV){var f=c.componentOptions,l=f?f.Ctor.options.name||f.tag||"":c.tag;mo("<transition-group> children must be keyed: <"+l+">")}}if(i){for(var p=[],h=[],d=0;d<i.length;d++){var v=i[d];v.data.transition=s,v.data.pos=v.elm.getBoundingClientRect(),r[v.key]?p.push(v):h.push(v)}this.kept=t(n,null,p),this.removed=h}return t(n,null,a)},beforeUpdate:function(){this.__patch__(this._vnode,this.kept,!1,!0),this._vnode=this.kept},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";if(t.length&&this.hasMove(t[0].elm,e)){t.forEach(Tr),t.forEach(jr),t.forEach(Rr);var n=document.body;n.offsetHeight;t.forEach(function(t){if(t.data.moved){var n=t.elm,r=n.style;or(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(Ds,n._moveCb=function t(r){r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(Ds,t),n._moveCb=null,ar(n,e))})}})}},methods:{hasMove:function(t,e){if(!js)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach(function(t){nr(n,t)}),er(n,e),n.style.display="none",this.$el.appendChild(n);var r=ur(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}},Zs={Transition:Ys,TransitionGroup:Gs};ke.config.mustUseProp=Ka,ke.config.isReservedTag=as,ke.config.isReservedAttr=Wa,ke.config.getTagNamespace=Je,ke.config.isUnknownElement=We,b(ke.options.directives,Js),b(ke.options.components,Zs),ke.prototype.__patch__=So?qs:x,ke.prototype.$mount=function(t,e){return t=t&&So?Ye(t):void 0,kt(this,t,e)},setTimeout(function(){ho.devtools&&(Bo?Bo.emit("init",ke):"production"!==e.env.NODE_ENV&&Po&&console[console.info?"info":"log"]("Download the Vue Devtools extension for a better development experience:\nhttps://github.com/vuejs/vue-devtools")),"production"!==e.env.NODE_ENV&&!1!==ho.productionTip&&So&&"undefined"!=typeof console&&console[console.info?"info":"log"]("You are running Vue in development mode.\nMake sure to turn on production mode when deploying for production.\nSee more tips at https://vuejs.org/guide/deployment.html")},0);var Xs,Qs=!!So&&function(t,e){var n=document.createElement("div");return n.innerHTML='<div a="'+t+'"/>',n.innerHTML.indexOf(e)>0}("\n"," "),tu=/\{\{((?:.|\n)+?)\}\}/g,eu=/[-.*+?^${}()|[\]\/\\]/g,nu=m(function(t){var e=t[0].replace(eu,"\\$&"),n=t[1].replace(eu,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),ru={staticKeys:["staticClass"],transformNode:$r,genData:Dr},iu={staticKeys:["staticStyle"],transformNode:Lr,genData:Ir},ou=[ru,iu],au={model:Mn,text:Mr,html:Ur},su=d("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),uu=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),cu=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),fu={expectHTML:!0,modules:ou,directives:au,isPreTag:os,isUnaryTag:su,mustUseProp:Ka,canBeLeftOpenTag:uu,isReservedTag:as,getTagNamespace:Je,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(ou)},lu={decode:function(t){return Xs=Xs||document.createElement("div"),Xs.innerHTML=t,Xs.textContent}},pu=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,hu="[a-zA-Z_][\\w\\-\\.]*",du="((?:"+hu+"\\:)?"+hu+")",vu=new RegExp("^<"+du),gu=/^\s*(\/?)>/,mu=new RegExp("^<\\/"+du+"[^>]*>"),yu=/^<!DOCTYPE [^>]+>/i,_u=/^<!--/,bu=/^<!\[/,wu=!1;"x".replace(/x(.)?/g,function(t,e){wu=""===e});var xu,Eu,Ou,Cu,Su,Au,ku,Nu,Tu,ju,Ru=d("script,style,textarea",!0),Pu={},$u={"<":"<",">":">",""":'"',"&":"&"," ":"\n"},Du=/&(?:lt|gt|quot|amp);/g,Lu=/&(?:lt|gt|quot|amp|#10);/g,Iu=d("pre,textarea",!0),Mu=function(t,e){return t&&Iu(t)&&"\n"===e[0]},Uu=/^@|^v-on:/,Bu=/^v-|^@|^:/,Vu=/(.*?)\s+(?:in|of)\s+(.*)/,Fu=/\((\{[^}]*\}|[^,]*),([^,]*)(?:,([^,]*))?\)/,qu=/:(.*)$/,zu=/^:|^v-bind:/,Hu=/\.[^.]+/g,Ju=m(lu.decode),Wu=/^xmlns:NS\d+/,Yu=/^NS\d+:/,Ku=m(fi),Gu=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/,Zu=/^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/,Xu={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Qu=function(t){return"if("+t+")return null;"},tc={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Qu("$event.target !== $event.currentTarget"),ctrl:Qu("!$event.ctrlKey"),shift:Qu("!$event.shiftKey"),alt:Qu("!$event.altKey"),meta:Qu("!$event.metaKey"),left:Qu("'button' in $event && $event.button !== 0"),middle:Qu("'button' in $event && $event.button !== 1"),right:Qu("'button' in $event && $event.button !== 2")},ec={on:_i,bind:bi,cloak:x},nc=function(t){this.options=t,this.warn=t.warn||xn,this.transforms=En(t.modules,"transformCode"),this.dataGenFns=En(t.modules,"genData"),this.directives=b(b({},ec),t.directives);var e=t.isReservedTag||uo;this.maybeComponent=function(t){return!e(t.tag)},this.onceId=0,this.staticRenderFns=[]},rc=new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b"),ic=new RegExp("\\b"+"delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b")+"\\s*\\([^\\)]*\\)"),oc=/[A-Za-z_$][\w$]*/,ac=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g,sc=function(t){return function(n){function r(r,i){var o=Object.create(n),a=[],s=[];if(o.warn=function(t,e){(e?s:a).push(t)},i){i.modules&&(o.modules=(n.modules||[]).concat(i.modules)),i.directives&&(o.directives=b(Object.create(n.directives),i.directives));for(var u in i)"modules"!==u&&"directives"!==u&&(o[u]=i[u])}var c=t(r,o);return"production"!==e.env.NODE_ENV&&a.push.apply(a,zi(c.ast)),c.errors=a,c.tips=s,c}return{compile:r,compileToFunctions:Zi(r)}}}(function(t,e){var n=Fr(t.trim(),e);ci(n,e);var r=wi(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}}),uc=sc(fu),cc=uc.compileToFunctions,fc=m(function(t){var e=Ye(t);return e&&e.innerHTML}),lc=ke.prototype.$mount;ke.prototype.$mount=function(t,n){if((t=t&&Ye(t))===document.body||t===document.documentElement)return"production"!==e.env.NODE_ENV&&mo("Do not mount Vue to <html> or <body> - mount to normal elements instead."),this;var r=this.$options;if(!r.render){var i=r.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=fc(i),"production"===e.env.NODE_ENV||i||mo("Template element not found or is empty: "+r.template,this));else{if(!i.nodeType)return"production"!==e.env.NODE_ENV&&mo("invalid template option:"+i,this),this;i=i.innerHTML}else t&&(i=Xi(t));if(i){"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&Xo("compile");var o=cc(i,{shouldDecodeNewlines:Qs,delimiters:r.delimiters,comments:r.comments},this),a=o.render,s=o.staticRenderFns;r.render=a,r.staticRenderFns=s,"production"!==e.env.NODE_ENV&&ho.performance&&Xo&&(Xo("compile end"),Qo(this._name+" compile","compile","compile end"))}}return lc.call(this,t,n)},ke.compile=cc,t.exports=ke}).call(e,n(2),n(1))},function(t,e,n){"use strict";function r(t){n(28)}Object.defineProperty(e,"__esModule",{value:!0});var i=n(33),o=n.n(i),a=n(91),s=n(10),u=r,c=s(o.a,a.a,u,null,null);e.default=c.exports},function(t,e,n){var r=n(29);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);n(31)("4055d79c",r,!0)},function(t,e,n){e=t.exports=n(30)(void 0),e.push([t.i,"body,html{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:100%}pre{font-family:Consolas,monaco,monospace;font-size:13px;margin:0}a,a:active,a:hover,a:visited{color:#357edd;text-decoration:none}a:hover{text-decoration:underline}.flex-fill{-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;min-width:0;min-height:0}.darken-10:focus,.darken-10:hover{-webkit-box-shadow:inset 9999px 9999px rgba(0,0,0,.1);box-shadow:inset 9999px 9999px rgba(0,0,0,.1)}.darken-10:active{-webkit-box-shadow:inset 9999px 9999px rgba(0,0,0,.2);box-shadow:inset 9999px 9999px rgba(0,0,0,.2)}.hljs{background-color:#f4f4f4;padding:0 1rem}.box-shadow{-webkit-box-shadow:0 1px 4px -1px rgba(0,0,0,.4);box-shadow:0 1px 4px -1px rgba(0,0,0,.4)}",""])},function(t,e){function n(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var r=n(e,t);return e[2]?"@media "+e[2]+"{"+r+"}":r}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var o=this[i][0];"number"==typeof o&&(r[o]=!0)}for(i=0;i<t.length;i++){var a=t[i];"number"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]="("+a[2]+") and ("+n+")"),e.push(a))}},e}},function(t,e,n){function r(t){for(var e=0;e<t.length;e++){var n=t[e],r=f[n.id];if(r){r.refs++;for(var i=0;i<r.parts.length;i++)r.parts[i](n.parts[i]);for(;i<n.parts.length;i++)r.parts.push(o(n.parts[i]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i<n.parts.length;i++)a.push(o(n.parts[i]));f[n.id]={id:n.id,refs:1,parts:a}}}}function i(){var t=document.createElement("style");return t.type="text/css",l.appendChild(t),t}function o(t){var e,n,r=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(r){if(d)return v;r.parentNode.removeChild(r)}if(g){var o=h++;r=p||(p=i()),e=a.bind(null,r,o,!1),n=a.bind(null,r,o,!0)}else r=i(),e=s.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}function a(t,e,n,r){var i=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=m(e,i);else{var o=document.createTextNode(i),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(o,a[e]):t.appendChild(o)}}function s(t,e){var n=e.css,r=e.media,i=e.sourceMap;if(r&&t.setAttribute("media",r),i&&(n+="\n/*# sourceURL="+i.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var u="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!u)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var c=n(32),f={},l=u&&(document.head||document.getElementsByTagName("head")[0]),p=null,h=0,d=!1,v=function(){},g="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());t.exports=function(t,e,n){d=n;var i=c(t,e);return r(i),function(e){for(var n=[],o=0;o<i.length;o++){var a=i[o],s=f[a.id];s.refs--,n.push(s)}e?(i=c(t,e),r(i)):i=[];for(var o=0;o<n.length;o++){var s=n[o];if(0===s.refs){for(var u=0;u<s.parts.length;u++)s.parts[u]();delete f[s.id]}}}};var m=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join("\n")}}()},function(t,e){t.exports=function(t,e){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],a=o[0],s=o[1],u=o[2],c=o[3],f={id:t+":"+i,css:s,media:u,sourceMap:c};r[a]?r[a].parts.push(f):n.push(r[a]={id:a,parts:[f]})}return n}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(11),o=(r(i),n(13)),a=r(o),s=n(87),u=r(s),c=[],f=[],l=[],p=[],h=a.default.version,d="https://localhost:8080/api/v1";e.default={name:"app",components:{Example:u.default},watch:{api_key:function(t,e){a.default.setup(t,{baseUrl:this.base_url,debug:!0})},base_url:function(t,e){a.default.setup(this.api_key,{baseUrl:t,debug:!0})}},data:function(){return{version:h,api_key:"xtdkxpcjwzkpgkhkcmhx",base_url:d,list_examples:c,connection_examples:f,pipe_examples:l,task_examples:p}},mounted:function(){a.default.setup("xtdkxpcjwzkpgkhkcmhx",{baseUrl:d,debug:!0})}}},function(t,e,n){"use strict";var r=n(0),i=n(35),o=n(36),a=n(37),s=n(38),u=n(39),c=n(40),f=n(41),l=n(44),p=n(45),h=n(46),d=n(47),v=n(48),g=n(49),m=n(50),y=n(51),_=n(52),b=n(53),w=n(54),x=n(55),E=n(56),O=n(57),C=n(58),S=n(59),A=n(60),k=function(t,e){switch(r.get(t,"op","")){default:return C.toCode(t);case"create":return i.toCode(t,e);case"convert":return o.toCode(t,e);case"copy":return a.toCode(t,e);case"dump":return s.toCode(t,e);case"echo":return u.toCode(t,e);case"email":return c.toCode(t,e);case"execute":return f.toCode(t,e);case"filter":return l.toCode(t,e);case"foreach":return p.toCode(t,e);case"insert":return h.toCode(t,e);case"limit":return d.toCode(t,e);case"list":return m.toCode(t,e);case"merge":return v.toCode(t,e);case"mkdir":return g.toCode(t,e);case"read":return y.toCode(t,e);case"render":return _.toCode(t,e);case"request":return b.toCode(t,e);case"select":return w.toCode(t,e);case"sequence":return x.toCode(t,e);case"set":return E.toCode(t,e);case"sleep":return O.toCode(t,e);case"transform":return S.toCode(t,e);case"write":return A.toCode(t,e)}};t.exports={create:i,convert:o,copy:a,dump:s,echo:u,email:c,execute:f.execute,insert:h,filter:l,foreach:p,javascript:f.javascript,limit:d,list:m,merge:v,mkdir:g,python:f.python,read:y,render:_,request:b,select:w,sequence:x,set:E,sleep:O,task:C,transform:S,write:A,toCode:k}},function(t,e,n){"use strict";var r=n(0),i=function(t,e){if(Array.isArray(t))return{op:"create",params:{content_type:"application/vnd.flexio.table",columns:t}};var n={op:"create",params:{path:t}};return void 0!==e&&(Array.isArray(e)?n.params.columns=e:n.params.content_type=e),n};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.path)||void 0,o=JSON.stringify(n.content_type)||void 0,a=JSON.stringify(n.columns)||void 0;return void 0!==i?void 0!==a?"create("+i+", "+a+")":void 0!==o?"create("+i+", "+o+")":"create("+i+")":void 0!==a?"create("+a+")":void 0!==o?"":void 0},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){return{op:"convert",params:{input:t,output:e}}};i.toCode=function(t,e){var n=r.get(t,"params.input",{}),i=r.get(t,"params.output",{});return"convert("+JSON.stringify(n)+", "+JSON.stringify(i)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e,n){var i={op:"copy",params:{from:t,to:e}};return r.isPlainObject(n)&&(i.params.options=n),i};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.from)||'""',o=JSON.stringify(n.to)||'""',a=n.hasOwnProperty("options")&&r.isPlainObject(n.options)?JSON.stringify(n.options):null,s="copy("+i+", "+o;return null!==a&&(s+=", "+a),s+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"dump",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"dump("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"echo",params:{msg:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"echo("+(JSON.stringify(n.msg)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(!r.isPlainObject(t))throw"The first function parameter must be an object";if(!t.hasOwnProperty("to"))throw"The `to` parameter is required";if(!t.hasOwnProperty("body_text"))throw"The `body_text` parameter is required";return{op:"email",params:t}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"email("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";(function(e,r){var i=n(0),o=function(){return void 0!==e},a=function(t){try{return o()?r(t,"utf8").toString("base64"):btoa(unescape(encodeURIComponent(t)))}catch(t){return t}},s=function(t){try{return o()?r.from(t,"base64").toString("utf8"):decodeURIComponent(escape(atob(t)))}catch(t){return t}},u=function(t){var e;try{e=t.toString(),e=e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))}catch(t){e=""}return e},c=function(t){if(i.isString(t))return t;if(i.isFunction(t)){var e;if(0==t.length)return"exports.flexio_handler = function(context) "+(e=u(t));if(e=t.toString(),"function"==e.substring(0,8))e=e.slice(8);else{var n=e.indexOf("=>"),r=e.indexOf("{");n>=0&&n<r&&(e=e.replace("=>s*{","{"))}return"exports.flexio_handler = function"+e}},f=function(){var t,e,n,r=Array.from(arguments),o=i.get(r,"[0]",null),s=i.get(r,"[1]",null),u=i.get(r,"[2]",null),f={};"python"==o||"javascript"==o?(t=o,e=s,null!==e&&void 0!==e||(e=""),n=u):(t="javascript",e=o,n=s),"javascript"==t&&(e=c(e)),f.lang=t;var l=/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/;return e.match(l)?f.path=e:f.code=a(e),null!==n&&(f.integrity=n),{op:"execute",params:f}},l=function(){var t=Array.from(arguments);return t.unshift("javascript"),f.apply(this,t)},p=function(){var t=Array.from(arguments);return t.unshift("python"),f.apply(this,t)},h=function(t){var e=i.get(t,"params",{}),n=e.lang||"",r=s(e.code||"");switch(n){case"javascript":return-1!=r.indexOf("exports.flexio_handler")?(r=r.replace("exports.flexio_handler =",""),"javascript("+r.trim()+")"):"javascript("+JSON.stringify(r.trim())+")";case"python":return"python(`\n"+r+"\n`)";default:return"execute("+JSON.stringify(n)+", `\n"+r+"\n`)"}};t.exports={execute:f,javascript:l,python:p,toCode:h}}).call(e,n(2),n(3).Buffer)},function(t,e,n){"use strict";function r(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===t[e-2]?2:"="===t[e-1]?1:0}function i(t){return 3*t.length/4-r(t)}function o(t){var e,n,i,o,a,s=t.length;o=r(t),a=new l(3*s/4-o),n=o>0?s-4:s;var u=0;for(e=0;e<n;e+=4)i=f[t.charCodeAt(e)]<<18|f[t.charCodeAt(e+1)]<<12|f[t.charCodeAt(e+2)]<<6|f[t.charCodeAt(e+3)],a[u++]=i>>16&255,a[u++]=i>>8&255,a[u++]=255&i;return 2===o?(i=f[t.charCodeAt(e)]<<2|f[t.charCodeAt(e+1)]>>4,a[u++]=255&i):1===o&&(i=f[t.charCodeAt(e)]<<10|f[t.charCodeAt(e+1)]<<4|f[t.charCodeAt(e+2)]>>2,a[u++]=i>>8&255,a[u++]=255&i),a}function a(t){return c[t>>18&63]+c[t>>12&63]+c[t>>6&63]+c[63&t]}function s(t,e,n){for(var r,i=[],o=e;o<n;o+=3)r=(t[o]<<16)+(t[o+1]<<8)+t[o+2],i.push(a(r));return i.join("")}function u(t){for(var e,n=t.length,r=n%3,i="",o=[],a=0,u=n-r;a<u;a+=16383)o.push(s(t,a,a+16383>u?u:a+16383));return 1===r?(e=t[n-1],i+=c[e>>2],i+=c[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=c[e>>10],i+=c[e>>4&63],i+=c[e<<2&63],i+="="),o.push(i),o.join("")}e.byteLength=i,e.toByteArray=o,e.fromByteArray=u;for(var c=[],f=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,d=p.length;h<d;++h)c[h]=p[h],f[p.charCodeAt(h)]=h;f["-".charCodeAt(0)]=62,f["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var o,a,s=8*i-r-1,u=(1<<s)-1,c=u>>1,f=-7,l=n?i-1:0,p=n?-1:1,h=t[e+l];for(l+=p,o=h&(1<<-f)-1,h>>=-f,f+=s;f>0;o=256*o+t[e+l],l+=p,f-=8);for(a=o&(1<<-f)-1,o>>=-f,f+=r;f>0;a=256*a+t[e+l],l+=p,f-=8);if(0===o)o=1-c;else{if(o===u)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=c}return(h?-1:1)*a*Math.pow(2,o-r)},e.write=function(t,e,n,r,i,o){var a,s,u,c=8*o-i-1,f=(1<<c)-1,l=f>>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,d=r?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=f):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),e+=a+l>=1?p/u:p*Math.pow(2,1-l),e*u>=2&&(a++,u/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(e*u-1)*Math.pow(2,i),a+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),a=0));i>=8;t[n+h]=255&s,h+=d,s/=256,i-=8);for(a=a<<i|s,c+=i;c>0;t[n+h]=255&a,h+=d,a/=256,c-=8);t[n+h-d]|=128*v}},function(t,e,n){"use strict";var r=n(0),i=function(t){if(r.isNil(t))throw"The `filter` parameter is required";return{op:"filter",params:{where:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"filter("+(JSON.stringify(n.where)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=n(5),o=function(t,e){var n={op:"foreach",params:{}};return("string"==typeof t||t instanceof String)&&(n.params.spec=t),i.isPipeObject(t)?n.params.run=t.pipe.task:i.isPipeObject(e)&&(n.params.run=e.pipe.task),n};o.toCode=function(t,e){var n=r.get(t,"params",{}),i=[];return n.hasOwnProperty("spec")&&i.push(JSON.stringify(n.spec)),n.hasOwnProperty("run")&&i.push(e.task.toCode(n.run,e)),"foreach("+i.join(", ")+")"},t.exports=o},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n;return n=Array.isArray(e)?e:[e],{op:"insert",params:{path:t,values:n}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"path",void 0),o=r.get(n,"values",void 0);return Array.isArray(o)||(o=[o]),i=JSON.stringify(i),o=JSON.stringify(o),"insert("+i+", "+o+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"limit",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"limit("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){if(Array.isArray(t))var e=t;else for(var e=[],n=0;n<arguments.length;++n)e.push(arguments[n]);return{op:"merge",params:{files:e}}};i.toCode=function(t,e){for(var n=r.get(t,"params",{}),i=r.get(n,"files",[]),o=0;o<i.length;++o)"string"==typeof i[o]||i[o]instanceof String?i[o]=JSON.stringify(i[o]):i[o]=e.merge.toCode(i[o],e);return"merge("+(i.length>=10?"["+i.join(", ")+"]":i.join(", "))+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"mkdir",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"mkdir("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"list",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"list("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"read",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"read("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t,e){var n={};return r.isPlainObject(t)?n=t:r.isString(t)&&(n.url=t),r.isPlainObject(e)&&r.assign(n,e),{op:"render",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.url)||"";return delete n.url,0==Object.keys(n).length?"render("+i+")":"render("+i+", "+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments),e=r.get(t,"[0]",""),n=r.get(t,"[1]",{});return n=r.isPlainObject(r.get(t,"[0]",{}))?r.get(t,"[0]",{}):r.assign({},{url:e},n),{op:"request",params:n}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=r.get(n,"url",""),o=Object.keys(n);return 1==o.length&&"url"==o[0]?"request("+JSON.stringify(i)+")":"request("+JSON.stringify(n,null,2)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(){var t=Array.from(arguments);return 1==t.length&&Array.isArray(r.get(t,"[0]"))&&(t=r.get(t,"[0]",[])),{op:"select",params:{columns:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{}),i=JSON.stringify(n.columns)||"";return-1!=i.indexOf("[")&&-1!=i.indexOf("]")&&(i=i.substring(1,i.length-1)),"select("+i+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return{op:"sequence",params:{steps:t}}});r.toCode=function(t,e){for(var n=[],r=0;r<t.params.items.length;++r){var i=t.params.items[r],o=e.task.toCode(i,e);i.hasOwnProperty("params")&&i.params.hasOwnProperty("lang")&&"python"!=i.params.lang&&(o=o.replace(/\n/g,"\n ")),n.push(o)}var n=["Flexio.pipe()"].concat(n);return n.join("\n .")},t.exports=r},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0),o=n(5),a=function(t,e){return o.isPipeObject(e)&&(e=e.pipe.task),{op:"set",params:{var:t,value:e}}};a.toCode=function(t,e){var n=i.get(t,"params",{}),o=i.get(n,"variable",""),a=i.get(n,"value","");return o=JSON.stringify(o),a="object"===(void 0===a?"undefined":r(a))&&null!==a&&a.hasOwnProperty("op")?e.task.toCode(a,e):JSON.stringify(a),"set("+o+", "+a+")"},t.exports=a},function(t,e,n){"use strict";var r=n(0),i=function(t){return t=r.defaultTo(t,10),{op:"sleep",params:{value:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"sleep("+(JSON.stringify(n.value)||"")+")"},t.exports=i},function(t,e,n){"use strict";var r=(n(0),function(t){return t});r.toCode=function(t,e){return"task("+JSON.stringify(t,null,2)+")"},t.exports=r},function(t,e,n){"use strict";var r=n(0),i=function(t){var e=Array.from(arguments),n={operations:[]},i={},o=[],a=r.get(e,"[0]");return r.isPlainObject(a)?(1==e.length&&r.has(a,"operations")?(i=r.pick(a,["columns","operations"]),i=r.assign(n,i)):(o=[].concat(e),i={operations:o}),{op:"transform",params:i}):{op:"transform",params:{columns:void 0,operations:o}}};i.toCode=function(t,e){var n=t.hasOwnProperty("params")?t.params:{};return!n.hasOwnProperty("columns")&&n.hasOwnProperty("operations")&&Array.isArray(n.operations)&&1==n.operations.length?"transform("+JSON.stringify(n.operations[0])+")":"transform("+JSON.stringify(n)+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0),i=function(t){return{op:"write",params:{path:t}}};i.toCode=function(t,e){var n=r.get(t,"params",{});return"write("+(JSON.stringify(n.path)||'""')+")"},t.exports=i},function(t,e,n){"use strict";var r=n(0);n(5);t.exports={},t.exports.getConnectionsObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.connection))throw"Unknown connection object type";i=e.connection}return new Promise(function(e,r){t.http().post("/connections",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.connections.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Connections..."),t.http().get("/connections").then(function(o){var a=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,a,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})}}}},function(t,e,n){"use strict";var r=n(0);t.exports={},t.exports.getPipesObject=function(t){return new function(){this.create=function(e,n){var i;if(r.isPlainObject(e))i=e;else{if(!(e instanceof t.pipe))throw"Unknown pipe object type";i=e.pipe}return new Promise(function(e,r){t.http().post("/pipes",i).then(function(i){t.util.callbackAdapter(null,i.data,e,r,n)}).catch(function(i){t.util.debug("Flexio.pipes.create(): Failed."),t.util.callbackAdapter(i,null,e,r,n)})})},this.list=function(e){var n=Array.from(arguments),e=r.get(n,"[0]");return new Promise(function(n,i){t.util.debug("Requesting Pipes..."),t.http().get("/pipes").then(function(o){var a=r.get(o,"data",[]);t.util.debug("Success!"),t.util.callbackAdapter(null,a,n,i,e)}).catch(function(r){t.util.debug("Failed."),t.util.callbackAdapter(r,null,n,i,e)})})},this.run=function(){var e=Array.from(arguments);e.push(null,null,null);var n,i,o={},a=null;e[0]instanceof t.pipe?(i=r.get(e[0],"pipe.eid",""),a=r.get(e[0],"pipe.task","")):Array.isArray(e[0])?(i="",a=e[0]):i=e[0],r.isPlainObject(e[1])&&(o=e[1]),n=r.isFunction(e[1])?e[1]:r.isFunction(e[2])?e[2]:null;var s=function(e,n){return{contentType:n,buffer:e,get blob(){return new Blob([this.buffer],{type:n})},get text(){return t.util.arrayBufferToString(this.buffer)},get data(){try{return JSON.parse(t.util.arrayBufferToString(this.buffer))}catch(t){return null}}}};return new Promise(function(e,u){if(t.util.debug("Running Pipe `"+(0==i.length?"[Pipe Object/Task Array]":i)+"`..."),0==i.length){var c={name:"SDK Pipe",description:"SDK Pipe",task:a,process_mode:"R"};t.http().post("/processes",c).then(function(i){var a=r.get(i,"data",{}),c=r.get(a,"eid","");t.util.debug("Created Process.");var f={method:"post",url:"/processes/"+c+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),t.http().request(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),a=s(i.data,o);t.util.callbackAdapter(null,a,e,u,n)}).catch(function(r){t.util.debug("Process Run Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}).catch(function(r){t.util.debug("Process Create Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}else{var f={method:"post",url:"/pipes/"+i+"/run",responseType:"arraybuffer"};o.hasOwnProperty("data")&&(f.data=o.data),o.hasOwnProperty("query")&&(f.params=o.query),o.hasOwnProperty("contentType")?f.headers={"Content-Type":o.contentType}:f.hasOwnProperty("data")&&(r.isPlainObject(f.data)||(r.isString(f.data)?f.headers={"Content-Type":"text/plain"}:f.headers={"Content-Type":"application/octet-stream"}));t.http()(f).then(function(i){t.util.debug("Process Complete.");var o=r.get(i,"headers.content-type","text/plain"),a=s(i.data,o);t.util.callbackAdapter(null,a,e,u,n)}).catch(function(r){t.util.debug("Pipe Run Call Failed. "+r),t.util.callbackAdapter(r,null,e,u,n)})}})}}}},function(t,e){t.exports={name:"flexio-sdk-js",version:"1.21.0",description:"Javascript SDK for managing Flex.io resources and services",author:"David Z. Williams <dave@flex.io>","--main":"dist/flexio-node.js",main:"src/main.js","--browser":"src/main.js",browser:"dist/flexio.min.js",scripts:{dev:"cross-env build=development webpack-dev-server --config ./build/webpack.dev.js --open --inline --https --hot","build:debug":"cross-env build=debug webpack --config build/webpack.dist.js","build:release":"cross-env build=production webpack --config build/webpack.dist.js","build:examples":"webpack --config build/webpack.examples.js",build:"npm run build:debug && npm run build:release && npm run build:examples",test:"jest"},repository:{type:"git",url:"git+https://github.com/flexiodata/flexio-sdk-js.git"},keywords:[],license:"Apache-2.0",bugs:{url:"https://github.com/flexiodata/flexio-sdk-js/issues"},homepage:"https://github.com/flexiodata/flexio-sdk-js/",dependencies:{},devDependencies:{autoprefixer:"^7.1.4","babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-plugin-transform-es2015-destructuring":"^6.23.0","babel-plugin-transform-es2015-parameters":"^6.24.1","babel-plugin-transform-object-rest-spread":"^6.26.0","babel-plugin-transform-runtime":"^6.23.0","babel-preset-env":"^1.6.0","babel-preset-es2015":"^6.24.1","babel-preset-stage-2":"^6.24.1","cross-env":"^5.0.5","css-loader":"^0.28.7","deep-assign":"^2.0.0",jest:"^22.4.2",vue:"^2.4.4","vue-loader":"^13.0.4","vue-simple-spinner":"^1.2.7","vue-style-loader":"^3.0.3","vue-template-compiler":"^2.4.4",webpack:"^3.5.5","webpack-bundle-analyzer":"^2.11.1","webpack-dev-server":"^2.8.2"}}},function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=n(0);t.exports={},t.exports.getPipeConstructor=function(t){return function(e){if(!(this instanceof t.pipe))return new t.pipe(e);var n=i.assign(this,{pipe:{name:"Untitled",description:"",task:{op:"sequence",params:{items:[]}}},processes:[],_params:{},loading:!1,saving:!1,running:!1,getJSON:function(){return i.assign({},this.pipe)},getProcesses:function(){return[].concat(this.processes)},getLastProcess:function(){return i.last(this.processes)},addTask:function(t){return this.pipe.task.params.items.push(t),this},clearTasks:function(){return this.pipe.task.params.items=[],this},getTasks:function(){return this.pipe.task.params.items},load:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),a=i.get(r,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):i.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the pipe's eid or pipe's alias may be used."):(this.loading=!0,t.util.debug("Loading Pipe `"+o+"`..."),t.http().get("/pipes/"+o).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.loading=!1,t.util.debug("Pipe Loaded."),"function"==typeof a&&a.call(e,null,r)}).catch(function(n){e.loading=!1,t.util.debug("Pipe Load Failed. "),"function"==typeof a&&a.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,r=Array.from(arguments),o=i.get(r,"[0]"),a=i.get(r,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(i.isPlainObject(o)&&(i.assign(this.pipe,i.pick(o,["name","description","ename"])),a=i.get(r,"[1]")),this.saving=!0,t.util.debug("Saving Pipe `"+i.get(this.pipe,"name","Untitled Pipe")+"`..."),t.http().post("/pipes",this.pipe).then(function(n){var r=i.get(n,"data",{});e.pipe=i.assign({},r),e.saving=!1,t.util.debug("Pipe Saved."),"function"==typeof a&&a.call(e,null,e.pipe)}).catch(function(n){e.saving=!1,t.util.debug("Pipe Save Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},run:function(){var e=Array.from(arguments);return e.unshift(this),t.pipes.run.apply(null,e)},params:function(t){return this._params=i.assign({},this.getParams(),t),this},getParams:function(){return i.assign({},this._params)},toCode:function(e){return t.task.toCode(this.pipe.task,t)}});return function(e){for(var n in t.task)t.task.hasOwnProperty(n)&&"toCode"!=n&&e(n,t.task[n])}(function(t,e){n[t]=function(){return n.addTask(e.apply(n,arguments))}}),void 0!==e&&("string"==typeof e||e instanceof String?n.pipe.eid=e:"object"===(void 0===e?"undefined":r(e))&&(e.hasOwnProperty("pipe")?n.pipe=JSON.parse(JSON.stringify(e.pipe)):e.hasOwnProperty("task")?n.pipe=JSON.parse(JSON.stringify(e)):e.hasOwnProperty("op")&&(n.pipe.task=e))),n}}},function(t,e,n){"use strict";var r=n(0),i=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"],o=["","basic","bearer","oauth2"];t.exports={},t.exports.getConnectionConstructor=function(t){return function(){return this instanceof t.connection?r.assign(this,{connection:{name:"Untitled",description:"",connection_type:"http",connection_info:{method:"",url:"",auth:"",username:"",password:"",token:"",access_token:"",refresh_token:"",expires:"",data:{},headers:{}}},loading:!1,saving:!1,running:!1,getJSON:function(){return r.assign({},this.connection)},name:function(t){return this.connection.name=t,this},description:function(t){return this.connection.description=t,this},method:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty method";if(-1==i.indexOf(e))throw"Invalid method";return this._setInfo("method",e)},url:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("url",e):this},auth:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isString(e))throw"Invalid/empty auth";if(-1==o.indexOf(e))throw"Invalid auth";return"none"==e&&(e=""),this._setInfo("auth",e)},username:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("username",e):this},password:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("password",e):this},token:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("token",e):this},accessToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("access_token",e):this},refreshToken:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isString(e)?this._setInfo("refresh_token",e):this},expires:function(){var t=Array.from(arguments),e=r.get(t,"[0]");return r.isNumber(e)&&(e=""+e),r.isString(e)?this._setInfo("expires",e):this},data:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("data",{});return e=r.assign({},n,e),this._setInfo("data",e)},headers:function(){var t=Array.from(arguments),e=r.get(t,"[0]");if(!r.isPlainObject(e))return this;var n=this._getInfo("headers",{});return e=r.assign({},n,e),this._setInfo("headers",e)},load:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),a=r.get(i,"[1]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.load.apply(e,n)},50),this):r.isNil(o)?t.util.debug("The `identifier` parameter is required. Either the connection's eid or connection's alias may be used."):(this.loading=!0,t.util.debug("Loading Connection `"+o+"`..."),t.http().get("/connections/"+o).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.loading=!1,t.util.debug("Connection Loaded."),"function"==typeof a&&a.call(e,null,i)}).catch(function(n){e.loading=!1,t.util.debug("Connection Load Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},save:function(){var e=this,n=arguments,i=Array.from(arguments),o=r.get(i,"[0]"),a=r.get(i,"[0]");return!0===this.loading||!0===this.saving||!0===this.running?(setTimeout(function(){e.save.apply(e,n)},50),this):(r.isPlainObject(o)&&(r.assign(this.connection,r.pick(o,["name","description","ename"])),a=r.get(i,"[1]")),this.saving=!0,t.util.debug("Saving Connection `"+r.get(this.connection,"name","Untitled Connection")+"`..."),t.http().post("/connections",this.connection).then(function(n){var i=r.get(n,"data",{});e.connection=r.assign({},i),e.saving=!1,t.util.debug("Connection Saved."),"function"==typeof a&&a.call(e,null,e.connection)}).catch(function(n){e.saving=!1,t.util.debug("Connection Save Failed."),"function"==typeof a&&a.call(e,n,null)}),this)},_getInfo:function(t,e){return r.get(this.connection,"connection_info."+t,e)},_setInfo:function(t,e){return this.connection.hasOwnProperty("connection_info")||(this.connection.connection_info={}),this.connection.connection_info[t]=e,this}}):new t.connection}}},function(t,e,n){"use strict";function r(t){this.options=i.isPlainObject(t)?t:{},this.post=function(t,e,n){return this.request(i.assign(n||{},{method:"POST",url:t,data:e}))},this.get=function(t,e){return this.request(i.assign(e||{},{method:"GET",url:t}))},this.request=function(t){var e=i.get(this.options,"baseURL",""),r=i.get(t,"url","");return-1!=r.indexOf("://")?e=r:(r="/"==r.substr(0,1)?r.substr(1):r,"/"!=e.slice(-1)&&(e+="/"),e+=r),t=i.assign({},t,{url:e}),o.isNodeJs()?n(67).apply(this,[t]):n(86).apply(this,[t])}}var i=n(0),o=n(5);t.exports={create:function(t){return new r(t)}}},function(t,e,n){"use strict";(function(e,r){function i(t){!0===this.options.insecure&&(e.env.NODE_TLS_REJECT_UNAUTHORIZED="0");var i=this.hasOwnProperty("https")?this.https:null;null===i&&(i=this.https=n(68));var a=n(24).URL,s=new a(o.get(t,"url",""),o.get(this.options,"baseUrl",void 0)),u={method:t.hasOwnProperty("method")?t.method.toUpperCase():"GET",port:s.port?s.port:443,host:s.hostname,path:s.pathname,encoding:null},c=o.assign({},o.get(this.options,"headers",{}),o.get(t,"headers",{}));Object.keys(c).length>0&&(u.headers=c);var f=null,l=o.get(t,"data",null);return o.isPlainObject(l)&&(l=JSON.stringify(l),f="application/json"),l&&(u.hasOwnProperty("headers")||(u.headers={}),f&&(u.headers["Content-Type"]=f),u.headers["Content-Length"]=r.byteLength(l)),new Promise(function(e,n){var o=[],a=i.request(u,function(n){var i={status:n.statusCode,statusText:n.statusMessage,headers:n.headers,request:a};n.on("data",function(t){o.push(t)}),n.on("end",function(){if(o=r.concat(o),"arraybuffer"!==t.responseType&&(o=o.toString(t.responseEncoding)),"string"==typeof o)try{o=JSON.parse(o)}catch(t){}i.data=o,e(i)})});a.on("error",function(t){n(response)}),a.end(l)})}var o=n(0);t.exports=i}).call(e,n(2),n(3).Buffer)},function(t,e,n){var r=n(69),i=t.exports;for(var o in r)r.hasOwnProperty(o)&&(i[o]=r[o]);i.request=function(t,e){return t||(t={}),t.scheme="https",t.protocol="https:",r.request.call(this,t,e)}},function(t,e,n){(function(t){var r=n(70),i=n(79),o=n(80),a=n(24),s=e;s.request=function(e,n){e="string"==typeof e?a.parse(e):i(e);var o=-1===t.location.protocol.search(/^https?:$/)?"http:":"",s=e.protocol||o,u=e.hostname||e.host,c=e.port,f=e.path||"/";u&&-1!==u.indexOf(":")&&(u="["+u+"]"),e.url=(u?s+"//"+u:"")+(c?":"+c:"")+f,e.method=(e.method||"GET").toUpperCase(),e.headers=e.headers||{};var l=new r(e);return n&&l.on("response",n),l},s.get=function(t,e){var n=s.request(t,e);return n.end(),n},s.Agent=function(){},s.Agent.defaultMaxSockets=4,s.STATUS_CODES=o,s.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(e,n(1))},function(t,e,n){(function(e,r,i){function o(t,e){return s.fetch&&e?"fetch":s.mozchunkedarraybuffer?"moz-chunked-arraybuffer":s.msstream?"ms-stream":s.arraybuffer&&t?"arraybuffer":s.vbArray&&t?"text:vbarray":"text"}function a(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}var s=n(15),u=n(4),c=n(71),f=n(16),l=n(78),p=c.IncomingMessage,h=c.readyStates,d=t.exports=function(t){var n=this;f.Writable.call(n),n._opts=t,n._body=[],n._headers={},t.auth&&n.setHeader("Authorization","Basic "+new e(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){n.setHeader(e,t.headers[e])});var r,i=!0;if("disable-fetch"===t.mode||"timeout"in t)i=!1,r=!0;else if("prefer-streaming"===t.mode)r=!1;else if("allow-wrong-content-type"===t.mode)r=!s.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");r=!0}n._mode=o(r,i),n.on("finish",function(){n._onFinish()})};u(d,f.Writable),d.prototype.setHeader=function(t,e){var n=this,r=t.toLowerCase();-1===v.indexOf(r)&&(n._headers[r]={name:t,value:e})},d.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},d.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},d.prototype._onFinish=function(){var t=this;if(!t._destroyed){var n=t._opts,o=t._headers,a=null;"GET"!==n.method&&"HEAD"!==n.method&&(a=s.blobConstructor?new r.Blob(t._body.map(function(t){return l(t)}),{type:(o["content-type"]||{}).value||""}):e.concat(t._body).toString());var u=[];if(Object.keys(o).forEach(function(t){var e=o[t].name,n=o[t].value;Array.isArray(n)?n.forEach(function(t){u.push([e,t])}):u.push([e,n])}),"fetch"===t._mode)r.fetch(t._opts.url,{method:t._opts.method,headers:u,body:a||void 0,mode:"cors",credentials:n.withCredentials?"include":"same-origin"}).then(function(e){t._fetchResponse=e,t._connect()},function(e){t.emit("error",e)});else{var c=t._xhr=new r.XMLHttpRequest;try{c.open(t._opts.method,t._opts.url,!0)}catch(e){return void i.nextTick(function(){t.emit("error",e)})}"responseType"in c&&(c.responseType=t._mode.split(":")[0]),"withCredentials"in c&&(c.withCredentials=!!n.withCredentials),"text"===t._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"timeout"in n&&(c.timeout=n.timeout,c.ontimeout=function(){t.emit("timeout")}),u.forEach(function(t){c.setRequestHeader(t[0],t[1])}),t._response=null,c.onreadystatechange=function(){switch(c.readyState){case h.LOADING:case h.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(c.onprogress=function(){t._onXHRProgress()}),c.onerror=function(){t._destroyed||t.emit("error",new Error("XHR error"))};try{c.send(a)}catch(e){return void i.nextTick(function(){t.emit("error",e)})}}}},d.prototype._onXHRProgress=function(){var t=this;a(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress())},d.prototype._connect=function(){var t=this;t._destroyed||(t._response=new p(t._xhr,t._fetchResponse,t._mode),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},d.prototype._write=function(t,e,n){this._body.push(t),n()},d.prototype.abort=d.prototype.destroy=function(){var t=this;t._destroyed=!0,t._response&&(t._response._destroyed=!0),t._xhr&&t._xhr.abort()},d.prototype.end=function(t,e,n){var r=this;"function"==typeof t&&(n=t,t=void 0),f.Writable.prototype.end.call(r,t,e,n)},d.prototype.flushHeaders=function(){},d.prototype.setTimeout=function(){},d.prototype.setNoDelay=function(){},d.prototype.setSocketKeepAlive=function(){};var v=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"]}).call(e,n(3).Buffer,n(1),n(2))},function(t,e,n){(function(t,r,i){var o=n(15),a=n(4),s=n(16),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(e,n,i){function a(){c.read().then(function(t){if(!u._destroyed){if(t.done)return void u.push(null);u.push(new r(t.value)),a()}}).catch(function(t){u.emit("error",t)})}var u=this;if(s.Readable.call(u),u._mode=i,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){t.nextTick(function(){u.emit("close")})}),"fetch"===i){u._fetchResponse=n,u.url=n.url,u.statusCode=n.status,u.statusMessage=n.statusText,n.headers.forEach(function(t,e){u.headers[e.toLowerCase()]=t,u.rawHeaders.push(e,t)});var c=n.body.getReader();a()}else{u._xhr=e,u._pos=0,u.url=e.responseURL,u.statusCode=e.status,u.statusMessage=e.statusText;if(e.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var n=e[1].toLowerCase();"set-cookie"===n?(void 0===u.headers[n]&&(u.headers[n]=[]),u.headers[n].push(e[2])):void 0!==u.headers[n]?u.headers[n]+=", "+e[2]:u.headers[n]=e[2],u.rawHeaders.push(e[1],e[2])}}),u._charset="x-user-defined",!o.overrideMimeType){var f=u.rawHeaders["mime-type"];if(f){var l=f.match(/;\s*charset=([^;])(;|$)/);l&&(u._charset=l[1].toLowerCase())}u._charset||(u._charset="utf-8")}}};a(c,s.Readable),c.prototype._read=function(){},c.prototype._onXHRProgress=function(){var t=this,e=t._xhr,n=null;switch(t._mode){case"text:vbarray":if(e.readyState!==u.DONE)break;try{n=new i.VBArray(e.responseBody).toArray()}catch(t){}if(null!==n){t.push(new r(n));break}case"text":try{n=e.responseText}catch(e){t._mode="text:vbarray";break}if(n.length>t._pos){var o=n.substr(t._pos);if("x-user-defined"===t._charset){for(var a=new r(o.length),s=0;s<o.length;s++)a[s]=255&o.charCodeAt(s);t.push(a)}else t.push(o,t._charset);t._pos=n.length}break;case"arraybuffer":if(e.readyState!==u.DONE||!e.response)break;n=e.response,t.push(new r(new Uint8Array(n)));break;case"moz-chunked-arraybuffer":if(n=e.response,e.readyState!==u.LOADING||!n)break;t.push(new r(new Uint8Array(n)));break;case"ms-stream":if(n=e.response,e.readyState!==u.LOADING)break;var c=new i.MSStreamReader;c.onprogress=function(){c.result.byteLength>t._pos&&(t.push(new r(new Uint8Array(c.result.slice(t._pos)))),t._pos=c.result.byteLength)},c.onload=function(){t.push(null)},c.readAsArrayBuffer(n)}t._xhr.readyState===u.DONE&&"ms-stream"!==t._mode&&t.push(null)}}).call(e,n(2),n(3).Buffer,n(1))},function(t,e){},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e,n){t.copy(e,n)}var o=n(9).Buffer;t.exports=function(){function t(){r(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return o.alloc(0);if(1===this.length)return this.head.data;for(var e=o.allocUnsafe(t>>>0),n=this.head,r=0;n;)i(n.data,e,r),r+=n.data.length,n=n.next;return e},t}()},function(t,e,n){function r(t,e){this._id=t,this._clearFn=e}var i=Function.prototype.apply;e.setTimeout=function(){return new r(i.call(setTimeout,window,arguments),clearTimeout)},e.setInterval=function(){return new r(i.call(setInterval,window,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(window,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(75),e.setImmediate=setImmediate,e.clearImmediate=clearImmediate},function(t,e,n){(function(t,e){!function(t,n){"use strict";function r(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var r={callback:t,args:e};return c[u]=r,s(u),u++}function i(t){delete c[t]}function o(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}function a(t){if(f)setTimeout(a,0,t);else{var e=c[t];if(e){f=!0;try{o(e)}finally{i(t),f=!1}}}}if(!t.setImmediate){var s,u=1,c={},f=!1,l=t.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(t);p=p&&p.setTimeout?p:t,"[object process]"==={}.toString.call(t.process)?function(){s=function(t){e.nextTick(function(){a(t)})}}():function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&a(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),s=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){a(t.data)},s=function(e){t.port2.postMessage(e)}}():l&&"onreadystatechange"in l.createElement("script")?function(){var t=l.documentElement;s=function(e){var n=l.createElement("script");n.onreadystatechange=function(){a(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():function(){s=function(t){setTimeout(a,0,t)}}(),p.setImmediate=r,p.clearImmediate=i}}("undefined"==typeof self?void 0===t?this:t:self)}).call(e,n(1),n(2))},function(t,e,n){(function(e){function n(t,e){function n(){if(!i){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),i=!0}return t.apply(this,arguments)}if(r("noDeprecation"))return t;var i=!1;return n}function r(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=n}).call(e,n(1))},function(t,e,n){"use strict";function r(t){if(!(this instanceof r))return new r(t);i.call(this,t)}t.exports=r;var i=n(23),o=n(7);o.inherits=n(4),o.inherits(r,i),r.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){var r=n(3).Buffer;t.exports=function(t){if(t instanceof Uint8Array){if(0===t.byteOffset&&t.byteLength===t.buffer.byteLength)return t.buffer;if("function"==typeof t.buffer.slice)return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}if(r.isBuffer(t)){for(var e=new Uint8Array(t.length),n=t.length,i=0;i<n;i++)e[i]=t[i];return e.buffer}throw new Error("Argument must be a Buffer")}},function(t,e){function n(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var i in n)r.call(n,i)&&(t[i]=n[i])}return t}t.exports=n;var r=Object.prototype.hasOwnProperty},function(t,e){t.exports={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",208:"Already Reported",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",308:"Permanent Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Payload Too Large",414:"URI Too Long",415:"Unsupported Media Type",416:"Range Not Satisfiable",417:"Expectation Failed",418:"I'm a teapot",421:"Misdirected Request",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",425:"Unordered Collection",426:"Upgrade Required",428:"Precondition Required",429:"Too Many Requests",431:"Request Header Fields Too Large",451:"Unavailable For Legal Reasons",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",508:"Loop Detected",509:"Bandwidth Limit Exceeded",510:"Not Extended",511:"Network Authentication Required"}},function(t,e,n){(function(t,r){var i;!function(o){function a(t){throw new RangeError(R[t])}function s(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function u(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),t=t.replace(j,"."),r+s(t.split("."),e).join(".")}function c(t){for(var e,n,r=[],i=0,o=t.length;i<o;)e=t.charCodeAt(i++),e>=55296&&e<=56319&&i<o?(n=t.charCodeAt(i++),56320==(64512&n)?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),i--)):r.push(e);return r}function f(t){return s(t,function(t){var e="";return t>65535&&(t-=65536,e+=D(t>>>10&1023|55296),t=56320|1023&t),e+=D(t)}).join("")}function l(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:w}function p(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function h(t,e,n){var r=0;for(t=n?$(t/C):t>>1,t+=$(t/e);t>P*E>>1;r+=w)t=$(t/P);return $(r+(P+1)*t/(t+O))}function d(t){var e,n,r,i,o,s,u,c,p,d,v=[],g=t.length,m=0,y=A,_=S;for(n=t.lastIndexOf(k),n<0&&(n=0),r=0;r<n;++r)t.charCodeAt(r)>=128&&a("not-basic"),v.push(t.charCodeAt(r));for(i=n>0?n+1:0;i<g;){for(o=m,s=1,u=w;i>=g&&a("invalid-input"),c=l(t.charCodeAt(i++)),(c>=w||c>$((b-m)/s))&&a("overflow"),m+=c*s,p=u<=_?x:u>=_+E?E:u-_,!(c<p);u+=w)d=w-p,s>$(b/d)&&a("overflow"),s*=d;e=v.length+1,_=h(m-o,e,0==o),$(m/e)>b-y&&a("overflow"),y+=$(m/e),m%=e,v.splice(m++,0,y)}return f(v)}function v(t){var e,n,r,i,o,s,u,f,l,d,v,g,m,y,_,O=[];for(t=c(t),g=t.length,e=A,n=0,o=S,s=0;s<g;++s)(v=t[s])<128&&O.push(D(v));for(r=i=O.length,i&&O.push(k);r<g;){for(u=b,s=0;s<g;++s)(v=t[s])>=e&&v<u&&(u=v);for(m=r+1,u-e>$((b-n)/m)&&a("overflow"),n+=(u-e)*m,e=u,s=0;s<g;++s)if(v=t[s],v<e&&++n>b&&a("overflow"),v==e){for(f=n,l=w;d=l<=o?x:l>=o+E?E:l-o,!(f<d);l+=w)_=f-d,y=w-d,O.push(D(p(d+_%y,0))),f=$(_/y);O.push(D(p(f,0))),o=h(n,m,r==i),n=0,++r}++n,++e}return O.join("")}function g(t){return u(t,function(t){return N.test(t)?d(t.slice(4).toLowerCase()):t})}function m(t){return u(t,function(t){return T.test(t)?"xn--"+v(t):t})}var y=("object"==typeof e&&e&&e.nodeType,"object"==typeof t&&t&&t.nodeType,"object"==typeof r&&r);var _,b=2147483647,w=36,x=1,E=26,O=38,C=700,S=72,A=128,k="-",N=/^xn--/,T=/[^\x20-\x7E]/,j=/[\x2E\u3002\uFF0E\uFF61]/g,R={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},P=w-x,$=Math.floor,D=String.fromCharCode;_={version:"1.4.1",ucs2:{decode:c,encode:f},decode:d,encode:v,toASCII:m,toUnicode:g},void 0!==(i=function(){return _}.call(e,n,e,t))&&(t.exports=i)}()}).call(e,n(12)(t),n(1))},function(t,e,n){"use strict";t.exports={isString:function(t){return"string"==typeof t},isObject:function(t){return"object"==typeof t&&null!==t},isNull:function(t){return null===t},isNullOrUndefined:function(t){return null==t}}},function(t,e,n){"use strict";e.decode=e.parse=n(84),e.encode=e.stringify=n(85)},function(t,e,n){"use strict";function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.exports=function(t,e,n,o){e=e||"&",n=n||"=";var a={};if("string"!=typeof t||0===t.length)return a;var s=/\+/g;t=t.split(e);var u=1e3;o&&"number"==typeof o.maxKeys&&(u=o.maxKeys);var c=t.length;u>0&&c>u&&(c=u);for(var f=0;f<c;++f){var l,p,h,d,v=t[f].replace(s,"%20"),g=v.indexOf(n);g>=0?(l=v.substr(0,g),p=v.substr(g+1)):(l=v,p=""),h=decodeURIComponent(l),d=decodeURIComponent(p),r(a,h)?i(a[h])?a[h].push(d):a[h]=[a[h],d]:a[h]=d}return a};var i=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}},function(t,e,n){"use strict";function r(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r<t.length;r++)n.push(e(t[r],r));return n}var i=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}};t.exports=function(t,e,n,s){return e=e||"&",n=n||"=",null===t&&(t=void 0),"object"==typeof t?r(a(t),function(a){var s=encodeURIComponent(i(a))+n;return o(t[a])?r(t[a],function(t){return s+encodeURIComponent(i(t))}).join(e):s+encodeURIComponent(i(t[a]))}).join(e):s?encodeURIComponent(i(s))+n+encodeURIComponent(i(t)):""};var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},a=Object.keys||function(t){var e=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e}},function(t,e,n){"use strict";function r(t){function e(t){for(var e={},n=t?t.split("\r\n"):[],r=0,i=n.length;r<i;r++){var o=n[r].indexOf(":");o>0&&(e[n[r].substr(0,o).trim()]=n[r].substr(o+1).trim())}return e}var n=i.assign({},i.get(this.options,"headers",{}),i.get(t,"headers",{})),r=i.get(t,"data",null);return"undefined"!=typeof FormData&&r instanceof FormData?delete n["Content-Type"]:i.isPlainObject(r)&&(r=JSON.stringify(r),n["Content-Type"]="application/json"),new Promise(function(i,o){function a(e){var n=t.responseType&&"text"!==t.responseType?e.response:e.responseText;if("string"==typeof n)try{n=JSON.parse(n)}catch(t){}return n}var s=new XMLHttpRequest;if(s.open(t.method.toUpperCase(),t.url,!0),t.responseType&&(s.responseType=t.responseType),Object.keys(n).length>0)for(var u in n)n.hasOwnProperty(u)&&s.setRequestHeader(u,n[u]);s.onload=function(){var n=a(s),r={data:n,status:1223===s.status?204:s.status,statusText:1223===s.status?"No Content":s.statusText,headers:e(s.getAllResponseHeaders()),config:t,request:s};i(r),s=null},s.onerror=function(){var n=a(s),r={data:n,status:s.status,statusText:s.statusText,headers:e(s.getAllResponseHeaders()),config:t,request:s};o(r),s=null},s.send(r)})}var i=n(0);t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(88),i=n.n(r),o=n(90),a=n(10),s=a(i.a,o.a,null,null,null);e.default=s.exports},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(exports,"__esModule",{value:!0});var _lodash=__webpack_require__(11),_lodash2=_interopRequireDefault(_lodash),_util=__webpack_require__(5),_util2=_interopRequireDefault(_util),_flexio=__webpack_require__(13),_flexio2=_interopRequireDefault(_flexio),_vueSimpleSpinner=__webpack_require__(89),_vueSimpleSpinner2=_interopRequireDefault(_vueSimpleSpinner);exports.default={props:{title:{type:String,default:""},description:{type:String,default:""},code:{type:String,default:""},fn:{type:Function,default:function(){return function(){alert("No function specified!")}}},"is-editable":{type:Boolean,default:!1},"show-run":{type:Boolean,default:!0}},components:{VueSimpleSpinner:_vueSimpleSpinner2.default},data:function(){return{result:"",img_src:"",editable_code:"Flexio.pipe()\n .echo('Hello, World!')\n .run(callback)",is_loading:!1}},computed:{has_image_result:function(){return this.img_src.length>0},has_text_result:function(){return this.result.length>0},code_trimmed:function(){return this.code.trim()}},methods:{run:function run(){var _this=this;if("function"==typeof this.fn){this.is_loading=!0;var fn=this.fn;this.isEditable&&(fn=function fn(Flexio,callback){eval(_this.editable_code)}),fn.call(this,_flexio2.default,function(t,e){_this.result="",_this.img_src="";var n=_lodash2.default.get(e,"contentType","");if("image/"==n.substr(0,6)){var r=window.URL||window.webkitURL;_this.img_src=r.createObjectURL(e.blob)}else"application/json"==n?_this.result=JSON.stringify(e.data,null,2):n.length>0&&_lodash2.default.has(e,"buffer")?_this.result=e.text:_this.result=JSON.stringify(e,null,2);_this.is_loading=!1},function(t){_this.is_loading=!1})}}}}},function(t,e,n){/*! * vue-simple-spinner v1.2.7 (https://github.com/dzwillia/vue-simple-spinner) * (c) 2017 David Z. Williams * Released under the MIT License.