UNPKG

104 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3 typeof define === 'function' && define.amd ? define(['exports'], factory) :
4 (factory((global._30s = {})));
5}(this, (function (exports) { 'use strict';
6
7 function _typeof(obj) {
8 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
9 _typeof = function (obj) {
10 return typeof obj;
11 };
12 } else {
13 _typeof = function (obj) {
14 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
15 };
16 }
17
18 return _typeof(obj);
19 }
20
21 function _defineProperty(obj, key, value) {
22 if (key in obj) {
23 Object.defineProperty(obj, key, {
24 value: value,
25 enumerable: true,
26 configurable: true,
27 writable: true
28 });
29 } else {
30 obj[key] = value;
31 }
32
33 return obj;
34 }
35
36 function _objectSpread(target) {
37 for (var i = 1; i < arguments.length; i++) {
38 var source = arguments[i] != null ? arguments[i] : {};
39 var ownKeys = Object.keys(source);
40
41 if (typeof Object.getOwnPropertySymbols === 'function') {
42 ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
43 return Object.getOwnPropertyDescriptor(source, sym).enumerable;
44 }));
45 }
46
47 ownKeys.forEach(function (key) {
48 _defineProperty(target, key, source[key]);
49 });
50 }
51
52 return target;
53 }
54
55 function _slicedToArray(arr, i) {
56 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
57 }
58
59 function _toArray(arr) {
60 return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();
61 }
62
63 function _toConsumableArray(arr) {
64 return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
65 }
66
67 function _arrayWithoutHoles(arr) {
68 if (Array.isArray(arr)) {
69 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
70
71 return arr2;
72 }
73 }
74
75 function _arrayWithHoles(arr) {
76 if (Array.isArray(arr)) return arr;
77 }
78
79 function _iterableToArray(iter) {
80 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
81 }
82
83 function _iterableToArrayLimit(arr, i) {
84 var _arr = [];
85 var _n = true;
86 var _d = false;
87 var _e = undefined;
88
89 try {
90 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
91 _arr.push(_s.value);
92
93 if (i && _arr.length === i) break;
94 }
95 } catch (err) {
96 _d = true;
97 _e = err;
98 } finally {
99 try {
100 if (!_n && _i["return"] != null) _i["return"]();
101 } finally {
102 if (_d) throw _e;
103 }
104 }
105
106 return _arr;
107 }
108
109 function _nonIterableSpread() {
110 throw new TypeError("Invalid attempt to spread non-iterable instance");
111 }
112
113 function _nonIterableRest() {
114 throw new TypeError("Invalid attempt to destructure non-iterable instance");
115 }
116
117 var fs = typeof require !== "undefined" && require('fs');
118
119 var crypto = typeof require !== "undefined" && require('crypto');
120
121 var CSVToArray = function CSVToArray(data) {
122 var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
123 var omitFirstRow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
124 return data.slice(omitFirstRow ? data.indexOf('\n') + 1 : 0).split('\n').map(function (v) {
125 return v.split(delimiter);
126 });
127 };
128 var CSVToJSON = function CSVToJSON(data) {
129 var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
130 var titles = data.slice(0, data.indexOf('\n')).split(delimiter);
131 return data.slice(data.indexOf('\n') + 1).split('\n').map(function (v) {
132 var values = v.split(delimiter);
133 return titles.reduce(function (obj, title, index) {
134 return obj[title] = values[index], obj;
135 }, {});
136 });
137 };
138 var JSONToFile = function JSONToFile(obj, filename) {
139 return fs.writeFile("".concat(filename, ".json"), JSON.stringify(obj, null, 2));
140 };
141 var JSONtoCSV = function JSONtoCSV(arr, columns) {
142 var delimiter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ',';
143 return [columns.join(delimiter)].concat(_toConsumableArray(arr.map(function (obj) {
144 return columns.reduce(function (acc, key) {
145 return "".concat(acc).concat(!acc.length ? '' : delimiter, "\"").concat(!obj[key] ? '' : obj[key], "\"");
146 }, '');
147 }))).join('\n');
148 };
149 var RGBToHex = function RGBToHex(r, g, b) {
150 return ((r << 16) + (g << 8) + b).toString(16).padStart(6, '0');
151 };
152 var URLJoin = function URLJoin() {
153 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
154 args[_key] = arguments[_key];
155 }
156
157 return args.join('/').replace(/[\/]+/g, '/').replace(/^(.+):\//, '$1://').replace(/^file:/, 'file:/').replace(/\/(\?|&|#[^!])/g, '$1').replace(/\?/g, '&').replace('&', '?');
158 };
159 var UUIDGeneratorBrowser = function UUIDGeneratorBrowser() {
160 return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
161 return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);
162 });
163 };
164 var UUIDGeneratorNode = function UUIDGeneratorNode() {
165 return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
166 return (c ^ crypto.randomBytes(1)[0] & 15 >> c / 4).toString(16);
167 });
168 };
169 var all = function all(arr) {
170 var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Boolean;
171 return arr.every(fn);
172 };
173 var allEqual = function allEqual(arr) {
174 return arr.every(function (val) {
175 return val === arr[0];
176 });
177 };
178 var any = function any(arr) {
179 var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Boolean;
180 return arr.some(fn);
181 };
182 var approximatelyEqual = function approximatelyEqual(v1, v2) {
183 var epsilon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.001;
184 return Math.abs(v1 - v2) < epsilon;
185 };
186 var arrayToCSV = function arrayToCSV(arr) {
187 var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
188 return arr.map(function (v) {
189 return v.map(function (x) {
190 return "\"".concat(x, "\"");
191 }).join(delimiter);
192 }).join('\n');
193 };
194 var arrayToHtmlList = function arrayToHtmlList(arr, listID) {
195 return function (el) {
196 return el = document.querySelector('#' + listID), el.innerHTML += arr.map(function (item) {
197 return "<li>".concat(item, "</li>");
198 }).join('');
199 }();
200 };
201 var ary = function ary(fn, n) {
202 return function () {
203 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
204 args[_key2] = arguments[_key2];
205 }
206
207 return fn.apply(void 0, _toConsumableArray(args.slice(0, n)));
208 };
209 };
210 var atob = function atob(str) {
211 return Buffer.from(str, 'base64').toString('binary');
212 };
213 var attempt = function attempt(fn) {
214 try {
215 for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
216 args[_key3 - 1] = arguments[_key3];
217 }
218
219 return fn.apply(void 0, args);
220 } catch (e) {
221 return e instanceof Error ? e : new Error(e);
222 }
223 };
224 var average = function average() {
225 for (var _len4 = arguments.length, nums = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
226 nums[_key4] = arguments[_key4];
227 }
228
229 return nums.reduce(function (acc, val) {
230 return acc + val;
231 }, 0) / nums.length;
232 };
233 var averageBy = function averageBy(arr, fn) {
234 return arr.map(typeof fn === 'function' ? fn : function (val) {
235 return val[fn];
236 }).reduce(function (acc, val) {
237 return acc + val;
238 }, 0) / arr.length;
239 };
240 var bifurcate = function bifurcate(arr, filter) {
241 return arr.reduce(function (acc, val, i) {
242 return acc[filter[i] ? 0 : 1].push(val), acc;
243 }, [[], []]);
244 };
245 var bifurcateBy = function bifurcateBy(arr, fn) {
246 return arr.reduce(function (acc, val, i) {
247 return acc[fn(val, i) ? 0 : 1].push(val), acc;
248 }, [[], []]);
249 };
250 var bind = function bind(fn, context) {
251 for (var _len5 = arguments.length, boundArgs = new Array(_len5 > 2 ? _len5 - 2 : 0), _key5 = 2; _key5 < _len5; _key5++) {
252 boundArgs[_key5 - 2] = arguments[_key5];
253 }
254
255 return function () {
256 for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
257 args[_key6] = arguments[_key6];
258 }
259
260 return fn.apply(context, boundArgs.concat(args));
261 };
262 };
263 var bindAll = function bindAll(obj) {
264 for (var _len7 = arguments.length, fns = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {
265 fns[_key7 - 1] = arguments[_key7];
266 }
267
268 return fns.forEach(function (fn) {
269 return f = obj[fn], obj[fn] = function () {
270 return f.apply(obj);
271 };
272 });
273 };
274 var bindKey = function bindKey(context, fn) {
275 for (var _len8 = arguments.length, boundArgs = new Array(_len8 > 2 ? _len8 - 2 : 0), _key8 = 2; _key8 < _len8; _key8++) {
276 boundArgs[_key8 - 2] = arguments[_key8];
277 }
278
279 return function () {
280 for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
281 args[_key9] = arguments[_key9];
282 }
283
284 return context[fn].apply(context, boundArgs.concat(args));
285 };
286 };
287 var binomialCoefficient = function binomialCoefficient(n, k) {
288 if (Number.isNaN(n) || Number.isNaN(k)) return NaN;
289 if (k < 0 || k > n) return 0;
290 if (k === 0 || k === n) return 1;
291 if (k === 1 || k === n - 1) return n;
292 if (n - k < k) k = n - k;
293 var res = n;
294
295 for (var j = 2; j <= k; j++) {
296 res *= (n - j + 1) / j;
297 }
298
299 return Math.round(res);
300 };
301 var bottomVisible = function bottomVisible() {
302 return document.documentElement.clientHeight + window.scrollY >= (document.documentElement.scrollHeight || document.documentElement.clientHeight);
303 };
304 var btoa = function btoa(str) {
305 return Buffer.from(str, 'binary').toString('base64');
306 };
307 var byteSize = function byteSize(str) {
308 return new Blob([str]).size;
309 };
310 var call = function call(key) {
311 for (var _len10 = arguments.length, args = new Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {
312 args[_key10 - 1] = arguments[_key10];
313 }
314
315 return function (context) {
316 return context[key].apply(context, args);
317 };
318 };
319 var capitalize = function capitalize(_ref) {
320 var _ref2 = _toArray(_ref),
321 first = _ref2[0],
322 rest = _ref2.slice(1);
323
324 var lowerRest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
325 return first.toUpperCase() + (lowerRest ? rest.join('').toLowerCase() : rest.join(''));
326 };
327 var capitalizeEveryWord = function capitalizeEveryWord(str) {
328 return str.replace(/\b[a-z]/g, function (char) {
329 return char.toUpperCase();
330 });
331 };
332 var castArray = function castArray(val) {
333 return Array.isArray(val) ? val : [val];
334 };
335 var chainAsync = function chainAsync(fns) {
336 var curr = 0;
337
338 var next = function next() {
339 return fns[curr++](next);
340 };
341
342 next();
343 };
344 var chunk = function chunk(arr, size) {
345 return Array.from({
346 length: Math.ceil(arr.length / size)
347 }, function (v, i) {
348 return arr.slice(i * size, i * size + size);
349 });
350 };
351 var clampNumber = function clampNumber(num, a, b) {
352 return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));
353 };
354 var cloneRegExp = function cloneRegExp(regExp) {
355 return new RegExp(regExp.source, regExp.flags);
356 };
357 var coalesce = function coalesce() {
358 for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
359 args[_key11] = arguments[_key11];
360 }
361
362 return args.find(function (_) {
363 return ![undefined, null].includes(_);
364 });
365 };
366 var coalesceFactory = function coalesceFactory(valid) {
367 return function () {
368 for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
369 args[_key12] = arguments[_key12];
370 }
371
372 return args.find(valid);
373 };
374 };
375 var collectInto = function collectInto(fn) {
376 return function () {
377 for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
378 args[_key13] = arguments[_key13];
379 }
380
381 return fn(args);
382 };
383 };
384 var colorize = function colorize() {
385 for (var _len14 = arguments.length, args = new Array(_len14), _key14 = 0; _key14 < _len14; _key14++) {
386 args[_key14] = arguments[_key14];
387 }
388
389 return {
390 black: "\x1B[30m".concat(args.join(' ')),
391 red: "\x1B[31m".concat(args.join(' ')),
392 green: "\x1B[32m".concat(args.join(' ')),
393 yellow: "\x1B[33m".concat(args.join(' ')),
394 blue: "\x1B[34m".concat(args.join(' ')),
395 magenta: "\x1B[35m".concat(args.join(' ')),
396 cyan: "\x1B[36m".concat(args.join(' ')),
397 white: "\x1B[37m".concat(args.join(' ')),
398 bgBlack: "\x1B[40m".concat(args.join(' '), "\x1B[0m"),
399 bgRed: "\x1B[41m".concat(args.join(' '), "\x1B[0m"),
400 bgGreen: "\x1B[42m".concat(args.join(' '), "\x1B[0m"),
401 bgYellow: "\x1B[43m".concat(args.join(' '), "\x1B[0m"),
402 bgBlue: "\x1B[44m".concat(args.join(' '), "\x1B[0m"),
403 bgMagenta: "\x1B[45m".concat(args.join(' '), "\x1B[0m"),
404 bgCyan: "\x1B[46m".concat(args.join(' '), "\x1B[0m"),
405 bgWhite: "\x1B[47m".concat(args.join(' '), "\x1B[0m")
406 };
407 };
408 var compact = function compact(arr) {
409 return arr.filter(Boolean);
410 };
411 var compose = function compose() {
412 for (var _len15 = arguments.length, fns = new Array(_len15), _key15 = 0; _key15 < _len15; _key15++) {
413 fns[_key15] = arguments[_key15];
414 }
415
416 return fns.reduce(function (f, g) {
417 return function () {
418 return f(g.apply(void 0, arguments));
419 };
420 });
421 };
422 var composeRight = function composeRight() {
423 for (var _len16 = arguments.length, fns = new Array(_len16), _key16 = 0; _key16 < _len16; _key16++) {
424 fns[_key16] = arguments[_key16];
425 }
426
427 return fns.reduce(function (f, g) {
428 return function () {
429 return g(f.apply(void 0, arguments));
430 };
431 });
432 };
433 var converge = function converge(converger, fns) {
434 return function () {
435 for (var _len17 = arguments.length, args = new Array(_len17), _key17 = 0; _key17 < _len17; _key17++) {
436 args[_key17] = arguments[_key17];
437 }
438
439 return converger.apply(void 0, _toConsumableArray(fns.map(function (fn) {
440 return fn.apply(null, args);
441 })));
442 };
443 };
444 var copyToClipboard = function copyToClipboard(str) {
445 var el = document.createElement('textarea');
446 el.value = str;
447 el.setAttribute('readonly', '');
448 el.style.position = 'absolute';
449 el.style.left = '-9999px';
450 document.body.appendChild(el);
451 var selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;
452 el.select();
453 document.execCommand('copy');
454 document.body.removeChild(el);
455
456 if (selected) {
457 document.getSelection().removeAllRanges();
458 document.getSelection().addRange(selected);
459 }
460 };
461 var countBy = function countBy(arr, fn) {
462 return arr.map(typeof fn === 'function' ? fn : function (val) {
463 return val[fn];
464 }).reduce(function (acc, val) {
465 acc[val] = (acc[val] || 0) + 1;
466 return acc;
467 }, {});
468 };
469 var countOccurrences = function countOccurrences(arr, val) {
470 return arr.reduce(function (a, v) {
471 return v === val ? a + 1 : a;
472 }, 0);
473 };
474 var counter = function counter(selector, start, end) {
475 var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
476 var duration = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 2000;
477
478 var current = start,
479 _step = (end - start) * step < 0 ? -step : step,
480 timer = setInterval(function () {
481 current += _step;
482 document.querySelector(selector).innerHTML = current;
483 if (current >= end) document.querySelector(selector).innerHTML = end;
484 if (current >= end) clearInterval(timer);
485 }, Math.abs(Math.floor(duration / (end - start))));
486
487 return timer;
488 };
489 var createElement = function createElement(str) {
490 var el = document.createElement('div');
491 el.innerHTML = str;
492 return el.firstElementChild;
493 };
494 var createEventHub = function createEventHub() {
495 return {
496 hub: Object.create(null),
497 emit: function emit(event, data) {
498 (this.hub[event] || []).forEach(function (handler) {
499 return handler(data);
500 });
501 },
502 on: function on(event, handler) {
503 if (!this.hub[event]) this.hub[event] = [];
504 this.hub[event].push(handler);
505 },
506 off: function off(event, handler) {
507 var i = (this.hub[event] || []).findIndex(function (h) {
508 return h === handler;
509 });
510 if (i > -1) this.hub[event].splice(i, 1);
511 }
512 };
513 };
514 var currentURL = function currentURL() {
515 return window.location.href;
516 };
517 var curry = function curry(fn) {
518 var arity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : fn.length;
519
520 for (var _len18 = arguments.length, args = new Array(_len18 > 2 ? _len18 - 2 : 0), _key18 = 2; _key18 < _len18; _key18++) {
521 args[_key18 - 2] = arguments[_key18];
522 }
523
524 return arity <= args.length ? fn.apply(void 0, args) : curry.bind.apply(curry, [null, fn, arity].concat(args));
525 };
526 var dayOfYear = function dayOfYear(date) {
527 return Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
528 };
529 var debounce = function debounce(fn) {
530 var ms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
531 var timeoutId;
532 return function () {
533 var _this = this;
534
535 for (var _len19 = arguments.length, args = new Array(_len19), _key19 = 0; _key19 < _len19; _key19++) {
536 args[_key19] = arguments[_key19];
537 }
538
539 clearTimeout(timeoutId);
540 timeoutId = setTimeout(function () {
541 return fn.apply(_this, args);
542 }, ms);
543 };
544 };
545 var decapitalize = function decapitalize(_ref3) {
546 var _ref4 = _toArray(_ref3),
547 first = _ref4[0],
548 rest = _ref4.slice(1);
549
550 var upperRest = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
551 return first.toLowerCase() + (upperRest ? rest.join('').toUpperCase() : rest.join(''));
552 };
553 var deepClone = function deepClone(obj) {
554 var clone = Object.assign({}, obj);
555 Object.keys(clone).forEach(function (key) {
556 return clone[key] = _typeof(obj[key]) === 'object' ? deepClone(obj[key]) : obj[key];
557 });
558 return Array.isArray(obj) ? (clone.length = obj.length) && Array.from(clone) : clone;
559 };
560 var deepFlatten = function deepFlatten(arr) {
561 var _ref5;
562
563 return (_ref5 = []).concat.apply(_ref5, _toConsumableArray(arr.map(function (v) {
564 return Array.isArray(v) ? deepFlatten(v) : v;
565 })));
566 };
567 var deepFreeze = function deepFreeze(obj) {
568 return Object.keys(obj).forEach(function (prop) {
569 return !(obj[prop] instanceof Object) || Object.isFrozen(obj[prop]) ? null : deepFreeze(obj[prop]);
570 }) || Object.freeze(obj);
571 };
572 var defaults = function defaults(obj) {
573 for (var _len20 = arguments.length, defs = new Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {
574 defs[_key20 - 1] = arguments[_key20];
575 }
576
577 return Object.assign.apply(Object, [{}, obj].concat(_toConsumableArray(defs.reverse()), [obj]));
578 };
579 var defer = function defer(fn) {
580 for (var _len21 = arguments.length, args = new Array(_len21 > 1 ? _len21 - 1 : 0), _key21 = 1; _key21 < _len21; _key21++) {
581 args[_key21 - 1] = arguments[_key21];
582 }
583
584 return setTimeout.apply(void 0, [fn, 1].concat(args));
585 };
586 var degreesToRads = function degreesToRads(deg) {
587 return deg * Math.PI / 180.0;
588 };
589 var delay = function delay(fn, wait) {
590 for (var _len22 = arguments.length, args = new Array(_len22 > 2 ? _len22 - 2 : 0), _key22 = 2; _key22 < _len22; _key22++) {
591 args[_key22 - 2] = arguments[_key22];
592 }
593
594 return setTimeout.apply(void 0, [fn, wait].concat(args));
595 };
596 var detectDeviceType = function detectDeviceType() {
597 return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ? 'Mobile' : 'Desktop';
598 };
599 var difference = function difference(a, b) {
600 var s = new Set(b);
601 return a.filter(function (x) {
602 return !s.has(x);
603 });
604 };
605 var differenceBy = function differenceBy(a, b, fn) {
606 var s = new Set(b.map(fn));
607 return a.filter(function (x) {
608 return !s.has(fn(x));
609 });
610 };
611 var differenceWith = function differenceWith(arr, val, comp) {
612 return arr.filter(function (a) {
613 return val.findIndex(function (b) {
614 return comp(a, b);
615 }) === -1;
616 });
617 };
618 var dig = function dig(obj, target) {
619 return target in obj ? obj[target] : Object.values(obj).reduce(function (acc, val) {
620 if (acc !== undefined) return acc;
621 if (_typeof(val) === 'object') return dig(val, target);
622 }, undefined);
623 };
624 var digitize = function digitize(n) {
625 return _toConsumableArray("".concat(n)).map(function (i) {
626 return parseInt(i);
627 });
628 };
629 var distance = function distance(x0, y0, x1, y1) {
630 return Math.hypot(x1 - x0, y1 - y0);
631 };
632 var drop = function drop(arr) {
633 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
634 return arr.slice(n);
635 };
636 var dropRight = function dropRight(arr) {
637 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
638 return arr.slice(0, -n);
639 };
640 var dropRightWhile = function dropRightWhile(arr, func) {
641 while (arr.length > 0 && !func(arr[arr.length - 1])) {
642 arr = arr.slice(0, -1);
643 }
644
645 return arr;
646 };
647 var dropWhile = function dropWhile(arr, func) {
648 while (arr.length > 0 && !func(arr[0])) {
649 arr = arr.slice(1);
650 }
651
652 return arr;
653 };
654 var elementContains = function elementContains(parent, child) {
655 return parent !== child && parent.contains(child);
656 };
657 var elementIsVisibleInViewport = function elementIsVisibleInViewport(el) {
658 var partiallyVisible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
659
660 var _el$getBoundingClient = el.getBoundingClientRect(),
661 top = _el$getBoundingClient.top,
662 left = _el$getBoundingClient.left,
663 bottom = _el$getBoundingClient.bottom,
664 right = _el$getBoundingClient.right;
665
666 var _window = window,
667 innerHeight = _window.innerHeight,
668 innerWidth = _window.innerWidth;
669 return partiallyVisible ? (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth) : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;
670 };
671 var elo = function elo(_ref6) {
672 var _ref7 = _toArray(_ref6),
673 ratings = _ref7.slice(0);
674
675 var kFactor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;
676 var selfRating = arguments.length > 2 ? arguments[2] : undefined;
677
678 var _ratings = _slicedToArray(ratings, 2),
679 a = _ratings[0],
680 b = _ratings[1];
681
682 var expectedScore = function expectedScore(self, opponent) {
683 return 1 / (1 + Math.pow(10, (opponent - self) / 400));
684 };
685
686 var newRating = function newRating(rating, i) {
687 return (selfRating || rating) + kFactor * (i - expectedScore(i ? a : b, i ? b : a));
688 };
689
690 if (ratings.length === 2) return [newRating(a, 1), newRating(b, 0)];
691
692 for (var i = 0, len = ratings.length; i < len; i++) {
693 var j = i;
694
695 while (j < len - 1) {
696 j++;
697
698 var _elo = elo([ratings[i], ratings[j]], kFactor);
699
700 var _elo2 = _slicedToArray(_elo, 2);
701
702 ratings[i] = _elo2[0];
703 ratings[j] = _elo2[1];
704 }
705 }
706
707 return ratings;
708 };
709 var equals = function equals(a, b) {
710 if (a === b) return true;
711 if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
712 if (!a || !b || _typeof(a) !== 'object' && _typeof(b) !== 'object') return a === b;
713 if (a === null || a === undefined || b === null || b === undefined) return false;
714 if (a.prototype !== b.prototype) return false;
715 var keys = Object.keys(a);
716 if (keys.length !== Object.keys(b).length) return false;
717 return keys.every(function (k) {
718 return equals(a[k], b[k]);
719 });
720 };
721 var escapeHTML = function escapeHTML(str) {
722 return str.replace(/[&<>'"]/g, function (tag) {
723 return {
724 '&': '&amp;',
725 '<': '&lt;',
726 '>': '&gt;',
727 "'": '&#39;',
728 '"': '&quot;'
729 }[tag] || tag;
730 });
731 };
732 var escapeRegExp = function escapeRegExp(str) {
733 return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
734 };
735 var everyNth = function everyNth(arr, nth) {
736 return arr.filter(function (e, i) {
737 return i % nth === nth - 1;
738 });
739 };
740 var extendHex = function extendHex(shortHex) {
741 return '#' + shortHex.slice(shortHex.startsWith('#') ? 1 : 0).split('').map(function (x) {
742 return x + x;
743 }).join('');
744 };
745 var factorial = function factorial(n) {
746 return n < 0 ? function () {
747 throw new TypeError('Negative numbers are not allowed!');
748 }() : n <= 1 ? 1 : n * factorial(n - 1);
749 };
750 var fibonacci = function fibonacci(n) {
751 return Array.from({
752 length: n
753 }).reduce(function (acc, val, i) {
754 return acc.concat(i > 1 ? acc[i - 1] + acc[i - 2] : i);
755 }, []);
756 };
757 var filterNonUnique = function filterNonUnique(arr) {
758 return arr.filter(function (i) {
759 return arr.indexOf(i) === arr.lastIndexOf(i);
760 });
761 };
762 var filterNonUniqueBy = function filterNonUniqueBy(arr, fn) {
763 return arr.filter(function (v, i) {
764 return arr.every(function (x, j) {
765 return i === j === fn(v, x, i, j);
766 });
767 });
768 };
769 var findKey = function findKey(obj, fn) {
770 return Object.keys(obj).find(function (key) {
771 return fn(obj[key], key, obj);
772 });
773 };
774 var findLast = function findLast(arr, fn) {
775 return arr.filter(fn).pop();
776 };
777 var findLastIndex = function findLastIndex(arr, fn) {
778 return arr.map(function (val, i) {
779 return [i, val];
780 }).filter(function (_ref8) {
781 var _ref9 = _slicedToArray(_ref8, 2),
782 i = _ref9[0],
783 val = _ref9[1];
784
785 return fn(val, i, arr);
786 }).pop()[0];
787 };
788 var findLastKey = function findLastKey(obj, fn) {
789 return Object.keys(obj).reverse().find(function (key) {
790 return fn(obj[key], key, obj);
791 });
792 };
793 var flatten = function flatten(arr) {
794 var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
795 return arr.reduce(function (a, v) {
796 return a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v);
797 }, []);
798 };
799 var flattenObject = function flattenObject(obj) {
800 var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
801 return Object.keys(obj).reduce(function (acc, k) {
802 var pre = prefix.length ? prefix + '.' : '';
803 if (_typeof(obj[k]) === 'object') Object.assign(acc, flattenObject(obj[k], pre + k));else acc[pre + k] = obj[k];
804 return acc;
805 }, {});
806 };
807 var flip = function flip(fn) {
808 return function (first) {
809 for (var _len23 = arguments.length, rest = new Array(_len23 > 1 ? _len23 - 1 : 0), _key23 = 1; _key23 < _len23; _key23++) {
810 rest[_key23 - 1] = arguments[_key23];
811 }
812
813 return fn.apply(void 0, rest.concat([first]));
814 };
815 };
816 var forEachRight = function forEachRight(arr, callback) {
817 return arr.slice(0).reverse().forEach(callback);
818 };
819 var forOwn = function forOwn(obj, fn) {
820 return Object.keys(obj).forEach(function (key) {
821 return fn(obj[key], key, obj);
822 });
823 };
824 var forOwnRight = function forOwnRight(obj, fn) {
825 return Object.keys(obj).reverse().forEach(function (key) {
826 return fn(obj[key], key, obj);
827 });
828 };
829 var formatDuration = function formatDuration(ms) {
830 if (ms < 0) ms = -ms;
831 var time = {
832 day: Math.floor(ms / 86400000),
833 hour: Math.floor(ms / 3600000) % 24,
834 minute: Math.floor(ms / 60000) % 60,
835 second: Math.floor(ms / 1000) % 60,
836 millisecond: Math.floor(ms) % 1000
837 };
838 return Object.entries(time).filter(function (val) {
839 return val[1] !== 0;
840 }).map(function (_ref10) {
841 var _ref11 = _slicedToArray(_ref10, 2),
842 key = _ref11[0],
843 val = _ref11[1];
844
845 return "".concat(val, " ").concat(key).concat(val !== 1 ? 's' : '');
846 }).join(', ');
847 };
848 var fromCamelCase = function fromCamelCase(str) {
849 var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';
850 return str.replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2').replace(/([A-Z]+)([A-Z][a-z\d]+)/g, '$1' + separator + '$2').toLowerCase();
851 };
852 var functionName = function functionName(fn) {
853 return console.debug(fn.name), fn;
854 };
855 var functions = function functions(obj) {
856 var inherited = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
857 return (inherited ? _toConsumableArray(Object.keys(obj)).concat(_toConsumableArray(Object.keys(Object.getPrototypeOf(obj)))) : Object.keys(obj)).filter(function (key) {
858 return typeof obj[key] === 'function';
859 });
860 };
861 var gcd = function gcd() {
862 var _gcd = function _gcd(x, y) {
863 return !y ? x : gcd(y, x % y);
864 };
865
866 for (var _len24 = arguments.length, arr = new Array(_len24), _key24 = 0; _key24 < _len24; _key24++) {
867 arr[_key24] = arguments[_key24];
868 }
869
870 return arr.concat().reduce(function (a, b) {
871 return _gcd(a, b);
872 });
873 };
874 var geometricProgression = function geometricProgression(end) {
875 var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
876 var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;
877 return Array.from({
878 length: Math.floor(Math.log(end / start) / Math.log(step)) + 1
879 }).map(function (v, i) {
880 return start * Math.pow(step, i);
881 });
882 };
883 var get = function get(from) {
884 for (var _len25 = arguments.length, selectors = new Array(_len25 > 1 ? _len25 - 1 : 0), _key25 = 1; _key25 < _len25; _key25++) {
885 selectors[_key25 - 1] = arguments[_key25];
886 }
887
888 return selectors.concat().map(function (s) {
889 return s.replace(/\[([^\[\]]*)\]/g, '.$1.').split('.').filter(function (t) {
890 return t !== '';
891 }).reduce(function (prev, cur) {
892 return prev && prev[cur];
893 }, from);
894 });
895 };
896 var getColonTimeFromDate = function getColonTimeFromDate(date) {
897 return date.toTimeString().slice(0, 8);
898 };
899 var getDaysDiffBetweenDates = function getDaysDiffBetweenDates(dateInitial, dateFinal) {
900 return (dateFinal - dateInitial) / (1000 * 3600 * 24);
901 };
902 var getImages = function getImages(el) {
903 var includeDuplicates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
904
905 var images = _toConsumableArray(el.getElementsByTagName('img')).map(function (img) {
906 return img.getAttribute('src');
907 });
908
909 return includeDuplicates ? images : _toConsumableArray(new Set(images));
910 };
911 var getMeridiemSuffixOfInteger = function getMeridiemSuffixOfInteger(num) {
912 return num === 0 || num === 24 ? 12 + 'am' : num === 12 ? 12 + 'pm' : num < 12 ? num % 12 + 'am' : num % 12 + 'pm';
913 };
914 var getScrollPosition = function getScrollPosition() {
915 var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
916 return {
917 x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,
918 y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop
919 };
920 };
921 var getStyle = function getStyle(el, ruleName) {
922 return getComputedStyle(el)[ruleName];
923 };
924 var getType = function getType(v) {
925 return v === undefined ? 'undefined' : v === null ? 'null' : v.constructor.name.toLowerCase();
926 };
927 var getURLParameters = function getURLParameters(url) {
928 return (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(function (a, v) {
929 return a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1), a;
930 }, {});
931 };
932 var groupBy = function groupBy(arr, fn) {
933 return arr.map(typeof fn === 'function' ? fn : function (val) {
934 return val[fn];
935 }).reduce(function (acc, val, i) {
936 acc[val] = (acc[val] || []).concat(arr[i]);
937 return acc;
938 }, {});
939 };
940 var hammingDistance = function hammingDistance(num1, num2) {
941 return ((num1 ^ num2).toString(2).match(/1/g) || '').length;
942 };
943 var hasClass = function hasClass(el, className) {
944 return el.classList.contains(className);
945 };
946 var hasFlags = function hasFlags() {
947 for (var _len26 = arguments.length, flags = new Array(_len26), _key26 = 0; _key26 < _len26; _key26++) {
948 flags[_key26] = arguments[_key26];
949 }
950
951 return flags.every(function (flag) {
952 return process.argv.includes(/^-{1,2}/.test(flag) ? flag : '--' + flag);
953 });
954 };
955 var hashBrowser = function hashBrowser(val) {
956 return crypto.subtle.digest('SHA-256', new TextEncoder('utf-8').encode(val)).then(function (h) {
957 var hexes = [],
958 view = new DataView(h);
959
960 for (var i = 0; i < view.byteLength; i += 4) {
961 hexes.push(('00000000' + view.getUint32(i).toString(16)).slice(-8));
962 }
963
964 return hexes.join('');
965 });
966 };
967 var hashNode = function hashNode(val) {
968 return new Promise(function (resolve) {
969 return setTimeout(function () {
970 return resolve(crypto.createHash('sha256').update(val).digest('hex'));
971 }, 0);
972 });
973 };
974 var head = function head(arr) {
975 return arr[0];
976 };
977 var hexToRGB = function hexToRGB(hex) {
978 var alpha = false,
979 h = hex.slice(hex.startsWith('#') ? 1 : 0);
980 if (h.length === 3) h = _toConsumableArray(h).map(function (x) {
981 return x + x;
982 }).join('');else if (h.length === 8) alpha = true;
983 h = parseInt(h, 16);
984 return 'rgb' + (alpha ? 'a' : '') + '(' + (h >>> (alpha ? 24 : 16)) + ', ' + ((h & (alpha ? 0x00ff0000 : 0x00ff00)) >>> (alpha ? 16 : 8)) + ', ' + ((h & (alpha ? 0x0000ff00 : 0x0000ff)) >>> (alpha ? 8 : 0)) + (alpha ? ", ".concat(h & 0x000000ff) : '') + ')';
985 };
986 var hide = function hide() {
987 for (var _len27 = arguments.length, el = new Array(_len27), _key27 = 0; _key27 < _len27; _key27++) {
988 el[_key27] = arguments[_key27];
989 }
990
991 return el.concat().forEach(function (e) {
992 return e.style.display = 'none';
993 });
994 };
995 var httpGet = function httpGet(url, callback) {
996 var err = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : console.error;
997 var request = new XMLHttpRequest();
998 request.open('GET', url, true);
999
1000 request.onload = function () {
1001 return callback(request.responseText);
1002 };
1003
1004 request.onerror = function () {
1005 return err(request);
1006 };
1007
1008 request.send();
1009 };
1010 var httpPost = function httpPost(url, data, callback) {
1011 var err = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : console.error;
1012 var request = new XMLHttpRequest();
1013 request.open('POST', url, true);
1014 request.setRequestHeader('Content-type', 'application/json; charset=utf-8');
1015
1016 request.onload = function () {
1017 return callback(request.responseText);
1018 };
1019
1020 request.onerror = function () {
1021 return err(request);
1022 };
1023
1024 request.send(data);
1025 };
1026 var httpsRedirect = function httpsRedirect() {
1027 if (location.protocol !== 'https:') location.replace('https://' + location.href.split('//')[1]);
1028 };
1029 var hz = function hz(fn) {
1030 var iterations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
1031 var before = performance.now();
1032
1033 for (var i = 0; i < iterations; i++) {
1034 fn();
1035 }
1036
1037 return 1000 * iterations / (performance.now() - before);
1038 };
1039 var inRange = function inRange(n, start) {
1040 var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1041
1042 if (end && start > end) {
1043 var _ref12 = [start, end];
1044 end = _ref12[0];
1045 start = _ref12[1];
1046 }
1047
1048 return end == null ? n >= 0 && n < start : n >= start && n < end;
1049 };
1050 var indentString = function indentString(str, count) {
1051 var indent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ' ';
1052 return str.replace(/^/gm, indent.repeat(count));
1053 };
1054 var indexOfAll = function indexOfAll(arr, val) {
1055 return arr.reduce(function (acc, el, i) {
1056 return el === val ? _toConsumableArray(acc).concat([i]) : acc;
1057 }, []);
1058 };
1059 var initial = function initial(arr) {
1060 return arr.slice(0, -1);
1061 };
1062 var initialize2DArray = function initialize2DArray(w, h) {
1063 var val = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
1064 return Array.from({
1065 length: h
1066 }).map(function () {
1067 return Array.from({
1068 length: w
1069 }).fill(val);
1070 });
1071 };
1072 var initializeArrayWithRange = function initializeArrayWithRange(end) {
1073 var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1074 var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1075 return Array.from({
1076 length: Math.ceil((end - start + 1) / step)
1077 }, function (v, i) {
1078 return i * step + start;
1079 });
1080 };
1081 var initializeArrayWithRangeRight = function initializeArrayWithRangeRight(end) {
1082 var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1083 var step = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1084 return Array.from({
1085 length: Math.ceil((end + 1 - start) / step)
1086 }).map(function (v, i, arr) {
1087 return (arr.length - i - 1) * step + start;
1088 });
1089 };
1090 var initializeArrayWithValues = function initializeArrayWithValues(n) {
1091 var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1092 return Array(n).fill(val);
1093 };
1094 var initializeNDArray = function initializeNDArray(val) {
1095 for (var _len28 = arguments.length, args = new Array(_len28 > 1 ? _len28 - 1 : 0), _key28 = 1; _key28 < _len28; _key28++) {
1096 args[_key28 - 1] = arguments[_key28];
1097 }
1098
1099 return args.length === 0 ? val : Array.from({
1100 length: args[0]
1101 }).map(function () {
1102 return initializeNDArray.apply(void 0, [val].concat(_toConsumableArray(args.slice(1))));
1103 });
1104 };
1105 var insertAfter = function insertAfter(el, htmlString) {
1106 return el.insertAdjacentHTML('afterend', htmlString);
1107 };
1108 var insertBefore = function insertBefore(el, htmlString) {
1109 return el.insertAdjacentHTML('beforebegin', htmlString);
1110 };
1111 var intersection = function intersection(a, b) {
1112 var s = new Set(b);
1113 return a.filter(function (x) {
1114 return s.has(x);
1115 });
1116 };
1117 var intersectionBy = function intersectionBy(a, b, fn) {
1118 var s = new Set(b.map(fn));
1119 return a.filter(function (x) {
1120 return s.has(fn(x));
1121 });
1122 };
1123 var intersectionWith = function intersectionWith(a, b, comp) {
1124 return a.filter(function (x) {
1125 return b.findIndex(function (y) {
1126 return comp(x, y);
1127 }) !== -1;
1128 });
1129 };
1130 var invertKeyValues = function invertKeyValues(obj, fn) {
1131 return Object.keys(obj).reduce(function (acc, key) {
1132 var val = fn ? fn(obj[key]) : obj[key];
1133 acc[val] = acc[val] || [];
1134 acc[val].push(key);
1135 return acc;
1136 }, {});
1137 };
1138 var is = function is(type, val) {
1139 return ![, null].includes(val) && val.constructor === type;
1140 };
1141 var isAbsoluteURL = function isAbsoluteURL(str) {
1142 return /^[a-z][a-z0-9+.-]*:/.test(str);
1143 };
1144 var isAfterDate = function isAfterDate(dateA, dateB) {
1145 return dateA > dateB;
1146 };
1147 var isAnagram = function isAnagram(str1, str2) {
1148 var normalize = function normalize(str) {
1149 return str.toLowerCase().replace(/[^a-z0-9]/gi, '').split('').sort().join('');
1150 };
1151
1152 return normalize(str1) === normalize(str2);
1153 };
1154 var isArrayLike = function isArrayLike(obj) {
1155 return obj != null && typeof obj[Symbol.iterator] === 'function';
1156 };
1157 var isBeforeDate = function isBeforeDate(dateA, dateB) {
1158 return dateA < dateB;
1159 };
1160 var isBoolean = function isBoolean(val) {
1161 return typeof val === 'boolean';
1162 };
1163 var isBrowser = function isBrowser() {
1164 return ![typeof window === "undefined" ? "undefined" : _typeof(window), typeof document === "undefined" ? "undefined" : _typeof(document)].includes('undefined');
1165 };
1166 var isBrowserTabFocused = function isBrowserTabFocused() {
1167 return !document.hidden;
1168 };
1169 var isDivisible = function isDivisible(dividend, divisor) {
1170 return dividend % divisor === 0;
1171 };
1172 var isDuplexStream = function isDuplexStream(val) {
1173 return val !== null && _typeof(val) === 'object' && typeof val.pipe === 'function' && typeof val._read === 'function' && _typeof(val._readableState) === 'object' && typeof val._write === 'function' && _typeof(val._writableState) === 'object';
1174 };
1175 var isEmpty = function isEmpty(val) {
1176 return val == null || !(Object.keys(val) || val).length;
1177 };
1178 var isEven = function isEven(num) {
1179 return num % 2 === 0;
1180 };
1181 var isFunction = function isFunction(val) {
1182 return typeof val === 'function';
1183 };
1184 var isLowerCase = function isLowerCase(str) {
1185 return str === str.toLowerCase();
1186 };
1187 var isNegativeZero = function isNegativeZero(val) {
1188 return val === 0 && 1 / val === -Infinity;
1189 };
1190 var isNil = function isNil(val) {
1191 return val === undefined || val === null;
1192 };
1193 var isNull = function isNull(val) {
1194 return val === null;
1195 };
1196 var isNumber = function isNumber(val) {
1197 return typeof val === 'number';
1198 };
1199 var isObject = function isObject(obj) {
1200 return obj === Object(obj);
1201 };
1202 var isObjectLike = function isObjectLike(val) {
1203 return val !== null && _typeof(val) === 'object';
1204 };
1205 var isPlainObject = function isPlainObject(val) {
1206 return !!val && _typeof(val) === 'object' && val.constructor === Object;
1207 };
1208 var isPrime = function isPrime(num) {
1209 var boundary = Math.floor(Math.sqrt(num));
1210
1211 for (var i = 2; i <= boundary; i++) {
1212 if (num % i === 0) return false;
1213 }
1214
1215 return num >= 2;
1216 };
1217 var isPrimitive = function isPrimitive(val) {
1218 return Object(val) !== val;
1219 };
1220 var isPromiseLike = function isPromiseLike(obj) {
1221 return obj !== null && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
1222 };
1223 var isReadableStream = function isReadableStream(val) {
1224 return val !== null && _typeof(val) === 'object' && typeof val.pipe === 'function' && typeof val._read === 'function' && _typeof(val._readableState) === 'object';
1225 };
1226 var isSameDate = function isSameDate(dateA, dateB) {
1227 return dateA.toISOString() === dateB.toISOString();
1228 };
1229 var isSorted = function isSorted(arr) {
1230 var direction = -(arr[0] - arr[1]);
1231 var _iteratorNormalCompletion = true;
1232 var _didIteratorError = false;
1233 var _iteratorError = undefined;
1234
1235 try {
1236 for (var _iterator = arr.entries()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion = (_step2 = _iterator.next()).done); _iteratorNormalCompletion = true) {
1237 var _step2$value = _slicedToArray(_step2.value, 2),
1238 i = _step2$value[0],
1239 val = _step2$value[1];
1240
1241 direction = !direction ? -(arr[i - 1] - arr[i]) : direction;
1242 if (i === arr.length - 1) return !direction ? 0 : direction;else if ((val - arr[i + 1]) * direction > 0) return 0;
1243 }
1244 } catch (err) {
1245 _didIteratorError = true;
1246 _iteratorError = err;
1247 } finally {
1248 try {
1249 if (!_iteratorNormalCompletion && _iterator.return != null) {
1250 _iterator.return();
1251 }
1252 } finally {
1253 if (_didIteratorError) {
1254 throw _iteratorError;
1255 }
1256 }
1257 }
1258 };
1259 var isStream = function isStream(val) {
1260 return val !== null && _typeof(val) === 'object' && typeof val.pipe === 'function';
1261 };
1262 var isString = function isString(val) {
1263 return typeof val === 'string';
1264 };
1265 var isSymbol = function isSymbol(val) {
1266 return _typeof(val) === 'symbol';
1267 };
1268 var isTravisCI = function isTravisCI() {
1269 return 'TRAVIS' in process.env && 'CI' in process.env;
1270 };
1271 var isUndefined = function isUndefined(val) {
1272 return val === undefined;
1273 };
1274 var isUpperCase = function isUpperCase(str) {
1275 return str === str.toUpperCase();
1276 };
1277 var isValidJSON = function isValidJSON(str) {
1278 try {
1279 JSON.parse(str);
1280 return true;
1281 } catch (e) {
1282 return false;
1283 }
1284 };
1285 var isWritableStream = function isWritableStream(val) {
1286 return val !== null && _typeof(val) === 'object' && typeof val.pipe === 'function' && typeof val._write === 'function' && _typeof(val._writableState) === 'object';
1287 };
1288 var join = function join(arr) {
1289 var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';
1290 var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : separator;
1291 return arr.reduce(function (acc, val, i) {
1292 return i === arr.length - 2 ? acc + val + end : i === arr.length - 1 ? acc + val : acc + val + separator;
1293 }, '');
1294 };
1295 var last = function last(arr) {
1296 return arr[arr.length - 1];
1297 };
1298 var lcm = function lcm() {
1299 var gcd = function gcd(x, y) {
1300 return !y ? x : gcd(y, x % y);
1301 };
1302
1303 var _lcm = function _lcm(x, y) {
1304 return x * y / gcd(x, y);
1305 };
1306
1307 for (var _len29 = arguments.length, arr = new Array(_len29), _key29 = 0; _key29 < _len29; _key29++) {
1308 arr[_key29] = arguments[_key29];
1309 }
1310
1311 return arr.concat().reduce(function (a, b) {
1312 return _lcm(a, b);
1313 });
1314 };
1315 var longestItem = function longestItem() {
1316 for (var _len30 = arguments.length, vals = new Array(_len30), _key30 = 0; _key30 < _len30; _key30++) {
1317 vals[_key30] = arguments[_key30];
1318 }
1319
1320 return vals.reduce(function (a, x) {
1321 return x.length > a.length ? x : a;
1322 });
1323 };
1324 var lowercaseKeys = function lowercaseKeys(obj) {
1325 return Object.keys(obj).reduce(function (acc, key) {
1326 acc[key.toLowerCase()] = obj[key];
1327 return acc;
1328 }, {});
1329 };
1330 var luhnCheck = function luhnCheck(num) {
1331 var arr = (num + '').split('').reverse().map(function (x) {
1332 return parseInt(x);
1333 });
1334 var lastDigit = arr.splice(0, 1)[0];
1335 var sum = arr.reduce(function (acc, val, i) {
1336 return i % 2 !== 0 ? acc + val : acc + val * 2 % 9 || 9;
1337 }, 0);
1338 sum += lastDigit;
1339 return sum % 10 === 0;
1340 };
1341 var mapKeys = function mapKeys(obj, fn) {
1342 return Object.keys(obj).reduce(function (acc, k) {
1343 acc[fn(obj[k], k, obj)] = obj[k];
1344 return acc;
1345 }, {});
1346 };
1347 var mapObject = function mapObject(arr, fn) {
1348 return function (a) {
1349 return a = [arr, arr.map(fn)], a[0].reduce(function (acc, val, ind) {
1350 return acc[val] = a[1][ind], acc;
1351 }, {});
1352 }();
1353 };
1354 var mapString = function mapString(str, fn) {
1355 return str.split('').map(function (c, i) {
1356 return fn(c, i, str);
1357 }).join('');
1358 };
1359 var mapValues = function mapValues(obj, fn) {
1360 return Object.keys(obj).reduce(function (acc, k) {
1361 acc[k] = fn(obj[k], k, obj);
1362 return acc;
1363 }, {});
1364 };
1365 var mask = function mask(cc) {
1366 var num = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;
1367 var mask = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '*';
1368 return "".concat(cc).slice(-num).padStart("".concat(cc).length, mask);
1369 };
1370 var matches = function matches(obj, source) {
1371 return Object.keys(source).every(function (key) {
1372 return obj.hasOwnProperty(key) && obj[key] === source[key];
1373 });
1374 };
1375 var matchesWith = function matchesWith(obj, source, fn) {
1376 return Object.keys(source).every(function (key) {
1377 return obj.hasOwnProperty(key) && fn ? fn(obj[key], source[key], key, obj, source) : obj[key] == source[key];
1378 });
1379 };
1380 var maxBy = function maxBy(arr, fn) {
1381 return Math.max.apply(Math, _toConsumableArray(arr.map(typeof fn === 'function' ? fn : function (val) {
1382 return val[fn];
1383 })));
1384 };
1385 var maxDate = function maxDate() {
1386 var _Math$max;
1387
1388 for (var _len31 = arguments.length, dates = new Array(_len31), _key31 = 0; _key31 < _len31; _key31++) {
1389 dates[_key31] = arguments[_key31];
1390 }
1391
1392 return new Date((_Math$max = Math.max).apply.apply(_Math$max, [null].concat(dates)));
1393 };
1394 var maxN = function maxN(arr) {
1395 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
1396 return _toConsumableArray(arr).sort(function (a, b) {
1397 return b - a;
1398 }).slice(0, n);
1399 };
1400 var median = function median(arr) {
1401 var mid = Math.floor(arr.length / 2),
1402 nums = _toConsumableArray(arr).sort(function (a, b) {
1403 return a - b;
1404 });
1405
1406 return arr.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;
1407 };
1408 var memoize = function memoize(fn) {
1409 var cache = new Map();
1410
1411 var cached = function cached(val) {
1412 return cache.has(val) ? cache.get(val) : cache.set(val, fn.call(this, val)) && cache.get(val);
1413 };
1414
1415 cached.cache = cache;
1416 return cached;
1417 };
1418 var merge = function merge() {
1419 for (var _len32 = arguments.length, objs = new Array(_len32), _key32 = 0; _key32 < _len32; _key32++) {
1420 objs[_key32] = arguments[_key32];
1421 }
1422
1423 return objs.concat().reduce(function (acc, obj) {
1424 return Object.keys(obj).reduce(function (a, k) {
1425 acc[k] = acc.hasOwnProperty(k) ? [].concat(acc[k]).concat(obj[k]) : obj[k];
1426 return acc;
1427 }, {});
1428 }, {});
1429 };
1430 var minBy = function minBy(arr, fn) {
1431 return Math.min.apply(Math, _toConsumableArray(arr.map(typeof fn === 'function' ? fn : function (val) {
1432 return val[fn];
1433 })));
1434 };
1435 var minDate = function minDate() {
1436 var _Math$min;
1437
1438 for (var _len33 = arguments.length, dates = new Array(_len33), _key33 = 0; _key33 < _len33; _key33++) {
1439 dates[_key33] = arguments[_key33];
1440 }
1441
1442 return new Date((_Math$min = Math.min).apply.apply(_Math$min, [null].concat(dates)));
1443 };
1444 var minN = function minN(arr) {
1445 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
1446 return _toConsumableArray(arr).sort(function (a, b) {
1447 return a - b;
1448 }).slice(0, n);
1449 };
1450 var mostPerformant = function mostPerformant(fns) {
1451 var iterations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10000;
1452 var times = fns.map(function (fn) {
1453 var before = performance.now();
1454
1455 for (var i = 0; i < iterations; i++) {
1456 fn();
1457 }
1458
1459 return performance.now() - before;
1460 });
1461 return times.indexOf(Math.min.apply(Math, _toConsumableArray(times)));
1462 };
1463 var negate = function negate(func) {
1464 return function () {
1465 return !func.apply(void 0, arguments);
1466 };
1467 };
1468 var nest = function nest(items) {
1469 var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1470 var link = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'parent_id';
1471 return items.filter(function (item) {
1472 return item[link] === id;
1473 }).map(function (item) {
1474 return _objectSpread({}, item, {
1475 children: nest(items, item.id)
1476 });
1477 });
1478 };
1479 var nodeListToArray = function nodeListToArray(nodeList) {
1480 return _toConsumableArray(nodeList);
1481 };
1482 var none = function none(arr) {
1483 var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Boolean;
1484 return !arr.some(fn);
1485 };
1486 var nthArg = function nthArg(n) {
1487 return function () {
1488 for (var _len34 = arguments.length, args = new Array(_len34), _key34 = 0; _key34 < _len34; _key34++) {
1489 args[_key34] = arguments[_key34];
1490 }
1491
1492 return args.slice(n)[0];
1493 };
1494 };
1495 var nthElement = function nthElement(arr) {
1496 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1497 return (n === -1 ? arr.slice(n) : arr.slice(n, n + 1))[0];
1498 };
1499 var objectFromPairs = function objectFromPairs(arr) {
1500 return arr.reduce(function (a, _ref13) {
1501 var _ref14 = _slicedToArray(_ref13, 2),
1502 key = _ref14[0],
1503 val = _ref14[1];
1504
1505 return a[key] = val, a;
1506 }, {});
1507 };
1508 var objectToPairs = function objectToPairs(obj) {
1509 return Object.keys(obj).map(function (k) {
1510 return [k, obj[k]];
1511 });
1512 };
1513 var observeMutations = function observeMutations(element, callback, options) {
1514 var observer = new MutationObserver(function (mutations) {
1515 return mutations.forEach(function (m) {
1516 return callback(m);
1517 });
1518 });
1519 observer.observe(element, Object.assign({
1520 childList: true,
1521 attributes: true,
1522 attributeOldValue: true,
1523 characterData: true,
1524 characterDataOldValue: true,
1525 subtree: true
1526 }, options));
1527 return observer;
1528 };
1529 var off = function off(el, evt, fn) {
1530 var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
1531 return el.removeEventListener(evt, fn, opts);
1532 };
1533 var offset = function offset(arr, _offset) {
1534 return _toConsumableArray(arr.slice(_offset)).concat(_toConsumableArray(arr.slice(0, _offset)));
1535 };
1536 var omit = function omit(obj, arr) {
1537 return Object.keys(obj).filter(function (k) {
1538 return !arr.includes(k);
1539 }).reduce(function (acc, key) {
1540 return acc[key] = obj[key], acc;
1541 }, {});
1542 };
1543 var omitBy = function omitBy(obj, fn) {
1544 return Object.keys(obj).filter(function (k) {
1545 return !fn(obj[k], k);
1546 }).reduce(function (acc, key) {
1547 return acc[key] = obj[key], acc;
1548 }, {});
1549 };
1550 var on = function on(el, evt, fn) {
1551 var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
1552
1553 var delegatorFn = function delegatorFn(e) {
1554 return e.target.matches(opts.target) && fn.call(e.target, e);
1555 };
1556
1557 el.addEventListener(evt, opts.target ? delegatorFn : fn, opts.options || false);
1558 if (opts.target) return delegatorFn;
1559 };
1560 var onUserInputChange = function onUserInputChange(callback) {
1561 var type = 'mouse',
1562 lastTime = 0;
1563
1564 var mousemoveHandler = function mousemoveHandler() {
1565 var now = performance.now();
1566 if (now - lastTime < 20) type = 'mouse', callback(type), document.removeEventListener('mousemove', mousemoveHandler);
1567 lastTime = now;
1568 };
1569
1570 document.addEventListener('touchstart', function () {
1571 if (type === 'touch') return;
1572 type = 'touch', callback(type), document.addEventListener('mousemove', mousemoveHandler);
1573 });
1574 };
1575 var once = function once(fn) {
1576 var called = false;
1577 return function () {
1578 if (called) return;
1579 called = true;
1580
1581 for (var _len35 = arguments.length, args = new Array(_len35), _key35 = 0; _key35 < _len35; _key35++) {
1582 args[_key35] = arguments[_key35];
1583 }
1584
1585 return fn.apply(this, args);
1586 };
1587 };
1588 var orderBy = function orderBy(arr, props, orders) {
1589 return _toConsumableArray(arr).sort(function (a, b) {
1590 return props.reduce(function (acc, prop, i) {
1591 if (acc === 0) {
1592 var _ref15 = orders && orders[i] === 'desc' ? [b[prop], a[prop]] : [a[prop], b[prop]],
1593 _ref16 = _slicedToArray(_ref15, 2),
1594 p1 = _ref16[0],
1595 p2 = _ref16[1];
1596
1597 acc = p1 > p2 ? 1 : p1 < p2 ? -1 : 0;
1598 }
1599
1600 return acc;
1601 }, 0);
1602 });
1603 };
1604 var over = function over() {
1605 for (var _len36 = arguments.length, fns = new Array(_len36), _key36 = 0; _key36 < _len36; _key36++) {
1606 fns[_key36] = arguments[_key36];
1607 }
1608
1609 return function () {
1610 for (var _len37 = arguments.length, args = new Array(_len37), _key37 = 0; _key37 < _len37; _key37++) {
1611 args[_key37] = arguments[_key37];
1612 }
1613
1614 return fns.map(function (fn) {
1615 return fn.apply(null, args);
1616 });
1617 };
1618 };
1619 var overArgs = function overArgs(fn, transforms) {
1620 return function () {
1621 for (var _len38 = arguments.length, args = new Array(_len38), _key38 = 0; _key38 < _len38; _key38++) {
1622 args[_key38] = arguments[_key38];
1623 }
1624
1625 return fn.apply(void 0, _toConsumableArray(args.map(function (val, i) {
1626 return transforms[i](val);
1627 })));
1628 };
1629 };
1630 var pad = function pad(str, length) {
1631 var char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ' ';
1632 return str.padStart((str.length + length) / 2, char).padEnd(length, char);
1633 };
1634 var palindrome = function palindrome(str) {
1635 var s = str.toLowerCase().replace(/[\W_]/g, '');
1636 return s === _toConsumableArray(s).reverse().join('');
1637 };
1638 var parseCookie = function parseCookie(str) {
1639 return str.split(';').map(function (v) {
1640 return v.split('=');
1641 }).reduce(function (acc, v) {
1642 acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim());
1643 return acc;
1644 }, {});
1645 };
1646 var partial = function partial(fn) {
1647 for (var _len39 = arguments.length, partials = new Array(_len39 > 1 ? _len39 - 1 : 0), _key39 = 1; _key39 < _len39; _key39++) {
1648 partials[_key39 - 1] = arguments[_key39];
1649 }
1650
1651 return function () {
1652 for (var _len40 = arguments.length, args = new Array(_len40), _key40 = 0; _key40 < _len40; _key40++) {
1653 args[_key40] = arguments[_key40];
1654 }
1655
1656 return fn.apply(void 0, partials.concat(args));
1657 };
1658 };
1659 var partialRight = function partialRight(fn) {
1660 for (var _len41 = arguments.length, partials = new Array(_len41 > 1 ? _len41 - 1 : 0), _key41 = 1; _key41 < _len41; _key41++) {
1661 partials[_key41 - 1] = arguments[_key41];
1662 }
1663
1664 return function () {
1665 for (var _len42 = arguments.length, args = new Array(_len42), _key42 = 0; _key42 < _len42; _key42++) {
1666 args[_key42] = arguments[_key42];
1667 }
1668
1669 return fn.apply(void 0, args.concat(partials));
1670 };
1671 };
1672 var partition = function partition(arr, fn) {
1673 return arr.reduce(function (acc, val, i, arr) {
1674 acc[fn(val, i, arr) ? 0 : 1].push(val);
1675 return acc;
1676 }, [[], []]);
1677 };
1678 var percentile = function percentile(arr, val) {
1679 return 100 * arr.reduce(function (acc, v) {
1680 return acc + (v < val ? 1 : 0) + (v === val ? 0.5 : 0);
1681 }, 0) / arr.length;
1682 };
1683 var permutations = function permutations(arr) {
1684 if (arr.length <= 2) return arr.length === 2 ? [arr, [arr[1], arr[0]]] : arr;
1685 return arr.reduce(function (acc, item, i) {
1686 return acc.concat(permutations(_toConsumableArray(arr.slice(0, i)).concat(_toConsumableArray(arr.slice(i + 1)))).map(function (val) {
1687 return [item].concat(_toConsumableArray(val));
1688 }));
1689 }, []);
1690 };
1691 var pick = function pick(obj, arr) {
1692 return arr.reduce(function (acc, curr) {
1693 return curr in obj && (acc[curr] = obj[curr]), acc;
1694 }, {});
1695 };
1696 var pickBy = function pickBy(obj, fn) {
1697 return Object.keys(obj).filter(function (k) {
1698 return fn(obj[k], k);
1699 }).reduce(function (acc, key) {
1700 return acc[key] = obj[key], acc;
1701 }, {});
1702 };
1703 var pipeAsyncFunctions = function pipeAsyncFunctions() {
1704 for (var _len43 = arguments.length, fns = new Array(_len43), _key43 = 0; _key43 < _len43; _key43++) {
1705 fns[_key43] = arguments[_key43];
1706 }
1707
1708 return function (arg) {
1709 return fns.reduce(function (p, f) {
1710 return p.then(f);
1711 }, Promise.resolve(arg));
1712 };
1713 };
1714 var pipeFunctions = function pipeFunctions() {
1715 for (var _len44 = arguments.length, fns = new Array(_len44), _key44 = 0; _key44 < _len44; _key44++) {
1716 fns[_key44] = arguments[_key44];
1717 }
1718
1719 return fns.reduce(function (f, g) {
1720 return function () {
1721 return g(f.apply(void 0, arguments));
1722 };
1723 });
1724 };
1725 var pluralize = function pluralize(val, word) {
1726 var plural = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : word + 's';
1727
1728 var _pluralize = function _pluralize(num, word) {
1729 var plural = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : word + 's';
1730 return [1, -1].includes(Number(num)) ? word : plural;
1731 };
1732
1733 if (_typeof(val) === 'object') return function (num, word) {
1734 return _pluralize(num, word, val[word]);
1735 };
1736 return _pluralize(val, word, plural);
1737 };
1738 var powerset = function powerset(arr) {
1739 return arr.reduce(function (a, v) {
1740 return a.concat(a.map(function (r) {
1741 return [v].concat(r);
1742 }));
1743 }, [[]]);
1744 };
1745 var prefix = function prefix(prop) {
1746 var capitalizedProp = prop.charAt(0).toUpperCase() + prop.slice(1);
1747 var prefixes = ['', 'webkit', 'moz', 'ms', 'o'];
1748 var i = prefixes.findIndex(function (prefix) {
1749 return typeof document.body.style[prefix ? prefix + capitalizedProp : prop] !== 'undefined';
1750 });
1751 return i !== -1 ? i === 0 ? prop : prefixes[i] + capitalizedProp : null;
1752 };
1753 var prettyBytes = function prettyBytes(num) {
1754 var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
1755 var addSpace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
1756 var UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
1757 if (Math.abs(num) < 1) return num + (addSpace ? ' ' : '') + UNITS[0];
1758 var exponent = Math.min(Math.floor(Math.log10(num < 0 ? -num : num) / 3), UNITS.length - 1);
1759 var n = Number(((num < 0 ? -num : num) / Math.pow(1000, exponent)).toPrecision(precision));
1760 return (num < 0 ? '-' : '') + n + (addSpace ? ' ' : '') + UNITS[exponent];
1761 };
1762 var primes = function primes(num) {
1763 var arr = Array.from({
1764 length: num - 1
1765 }).map(function (x, i) {
1766 return i + 2;
1767 }),
1768 sqroot = Math.floor(Math.sqrt(num)),
1769 numsTillSqroot = Array.from({
1770 length: sqroot - 1
1771 }).map(function (x, i) {
1772 return i + 2;
1773 });
1774 numsTillSqroot.forEach(function (x) {
1775 return arr = arr.filter(function (y) {
1776 return y % x !== 0 || y === x;
1777 });
1778 });
1779 return arr;
1780 };
1781 var promisify = function promisify(func) {
1782 return function () {
1783 for (var _len45 = arguments.length, args = new Array(_len45), _key45 = 0; _key45 < _len45; _key45++) {
1784 args[_key45] = arguments[_key45];
1785 }
1786
1787 return new Promise(function (resolve, reject) {
1788 return func.apply(void 0, args.concat([function (err, result) {
1789 return err ? reject(err) : resolve(result);
1790 }]));
1791 });
1792 };
1793 };
1794 var pull = function pull(arr) {
1795 for (var _len46 = arguments.length, args = new Array(_len46 > 1 ? _len46 - 1 : 0), _key46 = 1; _key46 < _len46; _key46++) {
1796 args[_key46 - 1] = arguments[_key46];
1797 }
1798
1799 var argState = Array.isArray(args[0]) ? args[0] : args;
1800 var pulled = arr.filter(function (v, i) {
1801 return !argState.includes(v);
1802 });
1803 arr.length = 0;
1804 pulled.forEach(function (v) {
1805 return arr.push(v);
1806 });
1807 };
1808 var pullAtIndex = function pullAtIndex(arr, pullArr) {
1809 var removed = [];
1810 var pulled = arr.map(function (v, i) {
1811 return pullArr.includes(i) ? removed.push(v) : v;
1812 }).filter(function (v, i) {
1813 return !pullArr.includes(i);
1814 });
1815 arr.length = 0;
1816 pulled.forEach(function (v) {
1817 return arr.push(v);
1818 });
1819 return removed;
1820 };
1821 var pullAtValue = function pullAtValue(arr, pullArr) {
1822 var removed = [],
1823 pushToRemove = arr.forEach(function (v, i) {
1824 return pullArr.includes(v) ? removed.push(v) : v;
1825 }),
1826 mutateTo = arr.filter(function (v, i) {
1827 return !pullArr.includes(v);
1828 });
1829 arr.length = 0;
1830 mutateTo.forEach(function (v) {
1831 return arr.push(v);
1832 });
1833 return removed;
1834 };
1835 var pullBy = function pullBy(arr) {
1836 for (var _len47 = arguments.length, args = new Array(_len47 > 1 ? _len47 - 1 : 0), _key47 = 1; _key47 < _len47; _key47++) {
1837 args[_key47 - 1] = arguments[_key47];
1838 }
1839
1840 var length = args.length;
1841 var fn = length > 1 ? args[length - 1] : undefined;
1842 fn = typeof fn == 'function' ? (args.pop(), fn) : undefined;
1843 var argState = (Array.isArray(args[0]) ? args[0] : args).map(function (val) {
1844 return fn(val);
1845 });
1846 var pulled = arr.filter(function (v, i) {
1847 return !argState.includes(fn(v));
1848 });
1849 arr.length = 0;
1850 pulled.forEach(function (v) {
1851 return arr.push(v);
1852 });
1853 };
1854 var radsToDegrees = function radsToDegrees(rad) {
1855 return rad * 180.0 / Math.PI;
1856 };
1857 var randomHexColorCode = function randomHexColorCode() {
1858 var n = (Math.random() * 0xfffff * 1000000).toString(16);
1859 return '#' + n.slice(0, 6);
1860 };
1861 var randomIntArrayInRange = function randomIntArrayInRange(min, max) {
1862 var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1863 return Array.from({
1864 length: n
1865 }, function () {
1866 return Math.floor(Math.random() * (max - min + 1)) + min;
1867 });
1868 };
1869 var randomIntegerInRange = function randomIntegerInRange(min, max) {
1870 return Math.floor(Math.random() * (max - min + 1)) + min;
1871 };
1872 var randomNumberInRange = function randomNumberInRange(min, max) {
1873 return Math.random() * (max - min) + min;
1874 };
1875 var readFileLines = function readFileLines(filename) {
1876 return fs.readFileSync(filename).toString('UTF8').split('\n');
1877 };
1878 var rearg = function rearg(fn, indexes) {
1879 return function () {
1880 for (var _len48 = arguments.length, args = new Array(_len48), _key48 = 0; _key48 < _len48; _key48++) {
1881 args[_key48] = arguments[_key48];
1882 }
1883
1884 return fn.apply(void 0, _toConsumableArray(indexes.map(function (i) {
1885 return args[i];
1886 })));
1887 };
1888 };
1889 var recordAnimationFrames = function recordAnimationFrames(callback) {
1890 var autoStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1891 var running = true,
1892 raf;
1893
1894 var stop = function stop() {
1895 running = false;
1896 cancelAnimationFrame(raf);
1897 };
1898
1899 var start = function start() {
1900 running = true;
1901 run();
1902 };
1903
1904 var run = function run() {
1905 raf = requestAnimationFrame(function () {
1906 callback();
1907 if (running) run();
1908 });
1909 };
1910
1911 if (autoStart) start();
1912 return {
1913 start: start,
1914 stop: stop
1915 };
1916 };
1917 var redirect = function redirect(url) {
1918 var asLink = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1919 return asLink ? window.location.href = url : window.location.replace(url);
1920 };
1921 var reduceSuccessive = function reduceSuccessive(arr, fn, acc) {
1922 return arr.reduce(function (res, val, i, arr) {
1923 return res.push(fn(res.slice(-1)[0], val, i, arr)), res;
1924 }, [acc]);
1925 };
1926 var reduceWhich = function reduceWhich(arr) {
1927 var comparator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (a, b) {
1928 return a - b;
1929 };
1930 return arr.reduce(function (a, b) {
1931 return comparator(a, b) >= 0 ? b : a;
1932 });
1933 };
1934 var reducedFilter = function reducedFilter(data, keys, fn) {
1935 return data.filter(fn).map(function (el) {
1936 return keys.reduce(function (acc, key) {
1937 acc[key] = el[key];
1938 return acc;
1939 }, {});
1940 });
1941 };
1942 var reject = function reject(pred, array) {
1943 return array.filter(function () {
1944 return !pred.apply(void 0, arguments);
1945 });
1946 };
1947 var remove = function remove(arr, func) {
1948 return Array.isArray(arr) ? arr.filter(func).reduce(function (acc, val) {
1949 arr.splice(arr.indexOf(val), 1);
1950 return acc.concat(val);
1951 }, []) : [];
1952 };
1953 var removeNonASCII = function removeNonASCII(str) {
1954 return str.replace(/[^\x20-\x7E]/g, '');
1955 };
1956 var renameKeys = function renameKeys(keysMap, obj) {
1957 return Object.keys(obj).reduce(function (acc, key) {
1958 return _objectSpread({}, acc, _defineProperty({}, keysMap[key] || key, obj[key]));
1959 }, {});
1960 };
1961 var reverseString = function reverseString(str) {
1962 return _toConsumableArray(str).reverse().join('');
1963 };
1964 var round = function round(n) {
1965 var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1966 return Number("".concat(Math.round("".concat(n, "e").concat(decimals)), "e-").concat(decimals));
1967 };
1968 var runAsync = function runAsync(fn) {
1969 var worker = new Worker(URL.createObjectURL(new Blob(["postMessage((".concat(fn, ")());")]), {
1970 type: 'application/javascript; charset=utf-8'
1971 }));
1972 return new Promise(function (res, rej) {
1973 worker.onmessage = function (_ref17) {
1974 var data = _ref17.data;
1975 res(data), worker.terminate();
1976 };
1977
1978 worker.onerror = function (err) {
1979 rej(err), worker.terminate();
1980 };
1981 });
1982 };
1983 var runPromisesInSeries = function runPromisesInSeries(ps) {
1984 return ps.reduce(function (p, next) {
1985 return p.then(next);
1986 }, Promise.resolve());
1987 };
1988 var sample = function sample(arr) {
1989 return arr[Math.floor(Math.random() * arr.length)];
1990 };
1991 var sampleSize = function sampleSize(_ref18) {
1992 var _ref19 = _toArray(_ref18),
1993 arr = _ref19.slice(0);
1994
1995 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
1996 var m = arr.length;
1997
1998 while (m) {
1999 var i = Math.floor(Math.random() * m--);
2000 var _ref20 = [arr[i], arr[m]];
2001 arr[m] = _ref20[0];
2002 arr[i] = _ref20[1];
2003 }
2004
2005 return arr.slice(0, n);
2006 };
2007 var scrollToTop = function scrollToTop() {
2008 var c = document.documentElement.scrollTop || document.body.scrollTop;
2009
2010 if (c > 0) {
2011 window.requestAnimationFrame(scrollToTop);
2012 window.scrollTo(0, c - c / 8);
2013 }
2014 };
2015 var sdbm = function sdbm(str) {
2016 var arr = str.split('');
2017 return arr.reduce(function (hashCode, currentVal) {
2018 return hashCode = currentVal.charCodeAt(0) + (hashCode << 6) + (hashCode << 16) - hashCode;
2019 }, 0);
2020 };
2021 var serializeCookie = function serializeCookie(name, val) {
2022 return "".concat(encodeURIComponent(name), "=").concat(encodeURIComponent(val));
2023 };
2024 var setStyle = function setStyle(el, ruleName, val) {
2025 return el.style[ruleName] = val;
2026 };
2027 var shallowClone = function shallowClone(obj) {
2028 return Object.assign({}, obj);
2029 };
2030 var shank = function shank(arr) {
2031 var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2032 var delCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
2033
2034 for (var _len49 = arguments.length, elements = new Array(_len49 > 3 ? _len49 - 3 : 0), _key49 = 3; _key49 < _len49; _key49++) {
2035 elements[_key49 - 3] = arguments[_key49];
2036 }
2037
2038 return arr.slice(0, index).concat(elements).concat(arr.slice(index + delCount));
2039 };
2040 var show = function show() {
2041 for (var _len50 = arguments.length, el = new Array(_len50), _key50 = 0; _key50 < _len50; _key50++) {
2042 el[_key50] = arguments[_key50];
2043 }
2044
2045 return el.concat().forEach(function (e) {
2046 return e.style.display = '';
2047 });
2048 };
2049 var shuffle = function shuffle(_ref21) {
2050 var _ref22 = _toArray(_ref21),
2051 arr = _ref22.slice(0);
2052
2053 var m = arr.length;
2054
2055 while (m) {
2056 var i = Math.floor(Math.random() * m--);
2057 var _ref23 = [arr[i], arr[m]];
2058 arr[m] = _ref23[0];
2059 arr[i] = _ref23[1];
2060 }
2061
2062 return arr;
2063 };
2064 var similarity = function similarity(arr, values) {
2065 return arr.filter(function (v) {
2066 return values.includes(v);
2067 });
2068 };
2069 var size = function size(val) {
2070 return Array.isArray(val) ? val.length : val && _typeof(val) === 'object' ? val.size || val.length || Object.keys(val).length : typeof val === 'string' ? new Blob([val]).size : 0;
2071 };
2072 var sleep = function sleep(ms) {
2073 return new Promise(function (resolve) {
2074 return setTimeout(resolve, ms);
2075 });
2076 };
2077 var smoothScroll = function smoothScroll(element) {
2078 return document.querySelector(element).scrollIntoView({
2079 behavior: 'smooth'
2080 });
2081 };
2082 var sortCharactersInString = function sortCharactersInString(str) {
2083 return _toConsumableArray(str).sort(function (a, b) {
2084 return a.localeCompare(b);
2085 }).join('');
2086 };
2087 var sortedIndex = function sortedIndex(arr, n) {
2088 var isDescending = arr[0] > arr[arr.length - 1];
2089 var index = arr.findIndex(function (el) {
2090 return isDescending ? n >= el : n <= el;
2091 });
2092 return index === -1 ? arr.length : index;
2093 };
2094 var sortedIndexBy = function sortedIndexBy(arr, n, fn) {
2095 var isDescending = fn(arr[0]) > fn(arr[arr.length - 1]);
2096 var val = fn(n);
2097 var index = arr.findIndex(function (el) {
2098 return isDescending ? val >= fn(el) : val <= fn(el);
2099 });
2100 return index === -1 ? arr.length : index;
2101 };
2102 var sortedLastIndex = function sortedLastIndex(arr, n) {
2103 var isDescending = arr[0] > arr[arr.length - 1];
2104 var index = arr.reverse().findIndex(function (el) {
2105 return isDescending ? n <= el : n >= el;
2106 });
2107 return index === -1 ? 0 : arr.length - index;
2108 };
2109 var sortedLastIndexBy = function sortedLastIndexBy(arr, n, fn) {
2110 var isDescending = fn(arr[0]) > fn(arr[arr.length - 1]);
2111 var val = fn(n);
2112 var index = arr.map(fn).reverse().findIndex(function (el) {
2113 return isDescending ? val <= el : val >= el;
2114 });
2115 return index === -1 ? 0 : arr.length - index;
2116 };
2117 var splitLines = function splitLines(str) {
2118 return str.split(/\r?\n/);
2119 };
2120 var spreadOver = function spreadOver(fn) {
2121 return function (argsArr) {
2122 return fn.apply(void 0, _toConsumableArray(argsArr));
2123 };
2124 };
2125 var stableSort = function stableSort(arr, compare) {
2126 return arr.map(function (item, index) {
2127 return {
2128 item: item,
2129 index: index
2130 };
2131 }).sort(function (a, b) {
2132 return compare(a.item, b.item) || a.index - b.index;
2133 }).map(function (_ref24) {
2134 var item = _ref24.item;
2135 return item;
2136 });
2137 };
2138 var standardDeviation = function standardDeviation(arr) {
2139 var usePopulation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2140 var mean = arr.reduce(function (acc, val) {
2141 return acc + val;
2142 }, 0) / arr.length;
2143 return Math.sqrt(arr.reduce(function (acc, val) {
2144 return acc.concat(Math.pow(val - mean, 2));
2145 }, []).reduce(function (acc, val) {
2146 return acc + val;
2147 }, 0) / (arr.length - (usePopulation ? 0 : 1)));
2148 };
2149 var stringPermutations = function stringPermutations(str) {
2150 if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str];
2151 return str.split('').reduce(function (acc, letter, i) {
2152 return acc.concat(stringPermutations(str.slice(0, i) + str.slice(i + 1)).map(function (val) {
2153 return letter + val;
2154 }));
2155 }, []);
2156 };
2157 var stripHTMLTags = function stripHTMLTags(str) {
2158 return str.replace(/<[^>]*>/g, '');
2159 };
2160 var sum = function sum() {
2161 for (var _len51 = arguments.length, arr = new Array(_len51), _key51 = 0; _key51 < _len51; _key51++) {
2162 arr[_key51] = arguments[_key51];
2163 }
2164
2165 return arr.concat().reduce(function (acc, val) {
2166 return acc + val;
2167 }, 0);
2168 };
2169 var sumBy = function sumBy(arr, fn) {
2170 return arr.map(typeof fn === 'function' ? fn : function (val) {
2171 return val[fn];
2172 }).reduce(function (acc, val) {
2173 return acc + val;
2174 }, 0);
2175 };
2176 var sumPower = function sumPower(end) {
2177 var power = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
2178 var start = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
2179 return Array(end + 1 - start).fill(0).map(function (x, i) {
2180 return Math.pow(i + start, power);
2181 }).reduce(function (a, b) {
2182 return a + b;
2183 }, 0);
2184 };
2185 var symmetricDifference = function symmetricDifference(a, b) {
2186 var sA = new Set(a),
2187 sB = new Set(b);
2188 return _toConsumableArray(a.filter(function (x) {
2189 return !sB.has(x);
2190 })).concat(_toConsumableArray(b.filter(function (x) {
2191 return !sA.has(x);
2192 })));
2193 };
2194 var symmetricDifferenceBy = function symmetricDifferenceBy(a, b, fn) {
2195 var sA = new Set(a.map(function (v) {
2196 return fn(v);
2197 })),
2198 sB = new Set(b.map(function (v) {
2199 return fn(v);
2200 }));
2201 return _toConsumableArray(a.filter(function (x) {
2202 return !sB.has(fn(x));
2203 })).concat(_toConsumableArray(b.filter(function (x) {
2204 return !sA.has(fn(x));
2205 })));
2206 };
2207 var symmetricDifferenceWith = function symmetricDifferenceWith(arr, val, comp) {
2208 return _toConsumableArray(arr.filter(function (a) {
2209 return val.findIndex(function (b) {
2210 return comp(a, b);
2211 }) === -1;
2212 })).concat(_toConsumableArray(val.filter(function (a) {
2213 return arr.findIndex(function (b) {
2214 return comp(a, b);
2215 }) === -1;
2216 })));
2217 };
2218 var tail = function tail(arr) {
2219 return arr.length > 1 ? arr.slice(1) : arr;
2220 };
2221 var take = function take(arr) {
2222 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
2223 return arr.slice(0, n);
2224 };
2225 var takeRight = function takeRight(arr) {
2226 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
2227 return arr.slice(arr.length - n, arr.length);
2228 };
2229 var takeRightWhile = function takeRightWhile(arr, func) {
2230 return arr.reduceRight(function (acc, el) {
2231 return func(el) ? acc : [el].concat(_toConsumableArray(acc));
2232 }, []);
2233 };
2234 var takeWhile = function takeWhile(arr, func) {
2235 var _iteratorNormalCompletion2 = true;
2236 var _didIteratorError2 = false;
2237 var _iteratorError2 = undefined;
2238
2239 try {
2240 for (var _iterator2 = arr.entries()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion2 = (_step3 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
2241 var _step3$value = _slicedToArray(_step3.value, 2),
2242 i = _step3$value[0],
2243 val = _step3$value[1];
2244
2245 if (func(val)) return arr.slice(0, i);
2246 }
2247 } catch (err) {
2248 _didIteratorError2 = true;
2249 _iteratorError2 = err;
2250 } finally {
2251 try {
2252 if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
2253 _iterator2.return();
2254 }
2255 } finally {
2256 if (_didIteratorError2) {
2257 throw _iteratorError2;
2258 }
2259 }
2260 }
2261
2262 return arr;
2263 };
2264 var throttle = function throttle(fn, wait) {
2265 var inThrottle, lastFn, lastTime;
2266 return function () {
2267 var context = this,
2268 args = arguments;
2269
2270 if (!inThrottle) {
2271 fn.apply(context, args);
2272 lastTime = Date.now();
2273 inThrottle = true;
2274 } else {
2275 clearTimeout(lastFn);
2276 lastFn = setTimeout(function () {
2277 if (Date.now() - lastTime >= wait) {
2278 fn.apply(context, args);
2279 lastTime = Date.now();
2280 }
2281 }, Math.max(wait - (Date.now() - lastTime), 0));
2282 }
2283 };
2284 };
2285 var timeTaken = function timeTaken(callback) {
2286 console.time('timeTaken');
2287 var r = callback();
2288 console.timeEnd('timeTaken');
2289 return r;
2290 };
2291 var times = function times(n, fn) {
2292 var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
2293 var i = 0;
2294
2295 while (fn.call(context, i) !== false && ++i < n) {}
2296 };
2297 var toCamelCase = function toCamelCase(str) {
2298 var s = str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(function (x) {
2299 return x.slice(0, 1).toUpperCase() + x.slice(1).toLowerCase();
2300 }).join('');
2301 return s.slice(0, 1).toLowerCase() + s.slice(1);
2302 };
2303 var toCurrency = function toCurrency(n, curr) {
2304 var LanguageFormat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
2305 return Intl.NumberFormat(LanguageFormat, {
2306 style: 'currency',
2307 currency: curr
2308 }).format(n);
2309 };
2310 var toDecimalMark = function toDecimalMark(num) {
2311 return num.toLocaleString('en-US');
2312 };
2313 var toHash = function toHash(object, key) {
2314 return Array.prototype.reduce.call(object, function (acc, data, index) {
2315 return acc[!key ? index : data[key]] = data, acc;
2316 }, {});
2317 };
2318 var toKebabCase = function toKebabCase(str) {
2319 return str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(function (x) {
2320 return x.toLowerCase();
2321 }).join('-');
2322 };
2323 var toOrdinalSuffix = function toOrdinalSuffix(num) {
2324 var int = parseInt(num),
2325 digits = [int % 10, int % 100],
2326 ordinals = ['st', 'nd', 'rd', 'th'],
2327 oPattern = [1, 2, 3, 4],
2328 tPattern = [11, 12, 13, 14, 15, 16, 17, 18, 19];
2329 return oPattern.includes(digits[0]) && !tPattern.includes(digits[1]) ? int + ordinals[digits[0] - 1] : int + ordinals[3];
2330 };
2331 var toSafeInteger = function toSafeInteger(num) {
2332 return Math.round(Math.max(Math.min(num, Number.MAX_SAFE_INTEGER), Number.MIN_SAFE_INTEGER));
2333 };
2334 var toSnakeCase = function toSnakeCase(str) {
2335 return str && str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(function (x) {
2336 return x.toLowerCase();
2337 }).join('_');
2338 };
2339 var toTitleCase = function toTitleCase(str) {
2340 return str.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(function (x) {
2341 return x.charAt(0).toUpperCase() + x.slice(1);
2342 }).join(' ');
2343 };
2344 var toggleClass = function toggleClass(el, className) {
2345 return el.classList.toggle(className);
2346 };
2347 var tomorrow = function tomorrow() {
2348 var long = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
2349 var t = new Date();
2350 t.setDate(t.getDate() + 1);
2351 var ret = "".concat(t.getFullYear(), "-").concat(String(t.getMonth() + 1).padStart(2, '0'), "-").concat(String(t.getDate()).padStart(2, '0'));
2352 return !long ? ret : "".concat(ret, "T00:00:00");
2353 };
2354 var transform = function transform(obj, fn, acc) {
2355 return Object.keys(obj).reduce(function (a, k) {
2356 return fn(a, obj[k], k, obj);
2357 }, acc);
2358 };
2359 var triggerEvent = function triggerEvent(el, eventType, detail) {
2360 return el.dispatchEvent(new CustomEvent(eventType, {
2361 detail: detail
2362 }));
2363 };
2364 var truncateString = function truncateString(str, num) {
2365 return str.length > num ? str.slice(0, num > 3 ? num - 3 : num) + '...' : str;
2366 };
2367 var truthCheckCollection = function truthCheckCollection(collection, pre) {
2368 return collection.every(function (obj) {
2369 return obj[pre];
2370 });
2371 };
2372 var unary = function unary(fn) {
2373 return function (val) {
2374 return fn(val);
2375 };
2376 };
2377 var uncurry = function uncurry(fn) {
2378 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
2379 return function () {
2380 var next = function next(acc) {
2381 return function (args) {
2382 return args.reduce(function (x, y) {
2383 return x(y);
2384 }, acc);
2385 };
2386 };
2387
2388 for (var _len52 = arguments.length, args = new Array(_len52), _key52 = 0; _key52 < _len52; _key52++) {
2389 args[_key52] = arguments[_key52];
2390 }
2391
2392 if (n > args.length) throw new RangeError('Arguments too few!');
2393 return next(fn)(args.slice(0, n));
2394 };
2395 };
2396 var unescapeHTML = function unescapeHTML(str) {
2397 return str.replace(/&amp;|&lt;|&gt;|&#39;|&quot;/g, function (tag) {
2398 return {
2399 '&amp;': '&',
2400 '&lt;': '<',
2401 '&gt;': '>',
2402 '&#39;': "'",
2403 '&quot;': '"'
2404 }[tag] || tag;
2405 });
2406 };
2407 var unflattenObject = function unflattenObject(obj) {
2408 return Object.keys(obj).reduce(function (acc, k) {
2409 if (k.indexOf('.') !== -1) {
2410 var keys = k.split('.');
2411 Object.assign(acc, JSON.parse('{' + keys.map(function (v, i) {
2412 return i !== keys.length - 1 ? "\"".concat(v, "\":{") : "\"".concat(v, "\":");
2413 }).join('') + obj[k] + '}'.repeat(keys.length)));
2414 } else acc[k] = obj[k];
2415
2416 return acc;
2417 }, {});
2418 };
2419 var unfold = function unfold(fn, seed) {
2420 var result = [],
2421 val = [null, seed];
2422
2423 while (val = fn(val[1])) {
2424 result.push(val[0]);
2425 }
2426
2427 return result;
2428 };
2429 var union = function union(a, b) {
2430 return Array.from(new Set(_toConsumableArray(a).concat(_toConsumableArray(b))));
2431 };
2432 var unionBy = function unionBy(a, b, fn) {
2433 var s = new Set(a.map(fn));
2434 return Array.from(new Set(_toConsumableArray(a).concat(_toConsumableArray(b.filter(function (x) {
2435 return !s.has(fn(x));
2436 })))));
2437 };
2438 var unionWith = function unionWith(a, b, comp) {
2439 return Array.from(new Set(_toConsumableArray(a).concat(_toConsumableArray(b.filter(function (x) {
2440 return a.findIndex(function (y) {
2441 return comp(x, y);
2442 }) === -1;
2443 })))));
2444 };
2445 var uniqueElements = function uniqueElements(arr) {
2446 return _toConsumableArray(new Set(arr));
2447 };
2448 var uniqueElementsBy = function uniqueElementsBy(arr, fn) {
2449 return arr.reduce(function (acc, v) {
2450 if (!acc.some(function (x) {
2451 return fn(v, x);
2452 })) acc.push(v);
2453 return acc;
2454 }, []);
2455 };
2456 var uniqueElementsByRight = function uniqueElementsByRight(arr, fn) {
2457 return arr.reduceRight(function (acc, v) {
2458 if (!acc.some(function (x) {
2459 return fn(v, x);
2460 })) acc.push(v);
2461 return acc;
2462 }, []);
2463 };
2464 var uniqueSymmetricDifference = function uniqueSymmetricDifference(a, b) {
2465 return _toConsumableArray(new Set(_toConsumableArray(a.filter(function (v) {
2466 return !b.includes(v);
2467 })).concat(_toConsumableArray(b.filter(function (v) {
2468 return !a.includes(v);
2469 })))));
2470 };
2471 var untildify = function untildify(str) {
2472 return str.replace(/^~($|\/|\\)/, "".concat(require('os').homedir(), "$1"));
2473 };
2474 var unzip = function unzip(arr) {
2475 return arr.reduce(function (acc, val) {
2476 return val.forEach(function (v, i) {
2477 return acc[i].push(v);
2478 }), acc;
2479 }, Array.from({
2480 length: Math.max.apply(Math, _toConsumableArray(arr.map(function (x) {
2481 return x.length;
2482 })))
2483 }).map(function (x) {
2484 return [];
2485 }));
2486 };
2487 var unzipWith = function unzipWith(arr, fn) {
2488 return arr.reduce(function (acc, val) {
2489 return val.forEach(function (v, i) {
2490 return acc[i].push(v);
2491 }), acc;
2492 }, Array.from({
2493 length: Math.max.apply(Math, _toConsumableArray(arr.map(function (x) {
2494 return x.length;
2495 })))
2496 }).map(function (x) {
2497 return [];
2498 })).map(function (val) {
2499 return fn.apply(void 0, _toConsumableArray(val));
2500 });
2501 };
2502 var validateNumber = function validateNumber(n) {
2503 return !isNaN(parseFloat(n)) && isFinite(n) && Number(n) == n;
2504 };
2505 var when = function when(pred, whenTrue) {
2506 return function (x) {
2507 return pred(x) ? whenTrue(x) : x;
2508 };
2509 };
2510 var without = function without(arr) {
2511 for (var _len53 = arguments.length, args = new Array(_len53 > 1 ? _len53 - 1 : 0), _key53 = 1; _key53 < _len53; _key53++) {
2512 args[_key53 - 1] = arguments[_key53];
2513 }
2514
2515 return arr.filter(function (v) {
2516 return !args.includes(v);
2517 });
2518 };
2519 var words = function words(str) {
2520 var pattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : /[^a-zA-Z-]+/;
2521 return str.split(pattern).filter(Boolean);
2522 };
2523 var xProd = function xProd(a, b) {
2524 return a.reduce(function (acc, x) {
2525 return acc.concat(b.map(function (y) {
2526 return [x, y];
2527 }));
2528 }, []);
2529 };
2530 var yesNo = function yesNo(val) {
2531 var def = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
2532 return /^(y|yes)$/i.test(val) ? true : /^(n|no)$/i.test(val) ? false : def;
2533 };
2534 var zip = function zip() {
2535 for (var _len54 = arguments.length, arrays = new Array(_len54), _key54 = 0; _key54 < _len54; _key54++) {
2536 arrays[_key54] = arguments[_key54];
2537 }
2538
2539 var maxLength = Math.max.apply(Math, _toConsumableArray(arrays.map(function (x) {
2540 return x.length;
2541 })));
2542 return Array.from({
2543 length: maxLength
2544 }).map(function (_, i) {
2545 return Array.from({
2546 length: arrays.length
2547 }, function (_, k) {
2548 return arrays[k][i];
2549 });
2550 });
2551 };
2552 var zipObject = function zipObject(props, values) {
2553 return props.reduce(function (obj, prop, index) {
2554 return obj[prop] = values[index], obj;
2555 }, {});
2556 };
2557 var zipWith = function zipWith() {
2558 for (var _len55 = arguments.length, array = new Array(_len55), _key55 = 0; _key55 < _len55; _key55++) {
2559 array[_key55] = arguments[_key55];
2560 }
2561
2562 var fn = typeof array[array.length - 1] === 'function' ? array.pop() : undefined;
2563 return Array.from({
2564 length: Math.max.apply(Math, _toConsumableArray(array.map(function (a) {
2565 return a.length;
2566 })))
2567 }, function (_, i) {
2568 return fn ? fn.apply(void 0, _toConsumableArray(array.map(function (a) {
2569 return a[i];
2570 }))) : array.map(function (a) {
2571 return a[i];
2572 });
2573 });
2574 };
2575
2576 exports.CSVToArray = CSVToArray;
2577 exports.CSVToJSON = CSVToJSON;
2578 exports.JSONToFile = JSONToFile;
2579 exports.JSONtoCSV = JSONtoCSV;
2580 exports.RGBToHex = RGBToHex;
2581 exports.URLJoin = URLJoin;
2582 exports.UUIDGeneratorBrowser = UUIDGeneratorBrowser;
2583 exports.UUIDGeneratorNode = UUIDGeneratorNode;
2584 exports.all = all;
2585 exports.allEqual = allEqual;
2586 exports.any = any;
2587 exports.approximatelyEqual = approximatelyEqual;
2588 exports.arrayToCSV = arrayToCSV;
2589 exports.arrayToHtmlList = arrayToHtmlList;
2590 exports.ary = ary;
2591 exports.atob = atob;
2592 exports.attempt = attempt;
2593 exports.average = average;
2594 exports.averageBy = averageBy;
2595 exports.bifurcate = bifurcate;
2596 exports.bifurcateBy = bifurcateBy;
2597 exports.bind = bind;
2598 exports.bindAll = bindAll;
2599 exports.bindKey = bindKey;
2600 exports.binomialCoefficient = binomialCoefficient;
2601 exports.bottomVisible = bottomVisible;
2602 exports.btoa = btoa;
2603 exports.byteSize = byteSize;
2604 exports.call = call;
2605 exports.capitalize = capitalize;
2606 exports.capitalizeEveryWord = capitalizeEveryWord;
2607 exports.castArray = castArray;
2608 exports.chainAsync = chainAsync;
2609 exports.chunk = chunk;
2610 exports.clampNumber = clampNumber;
2611 exports.cloneRegExp = cloneRegExp;
2612 exports.coalesce = coalesce;
2613 exports.coalesceFactory = coalesceFactory;
2614 exports.collectInto = collectInto;
2615 exports.colorize = colorize;
2616 exports.compact = compact;
2617 exports.compose = compose;
2618 exports.composeRight = composeRight;
2619 exports.converge = converge;
2620 exports.copyToClipboard = copyToClipboard;
2621 exports.countBy = countBy;
2622 exports.countOccurrences = countOccurrences;
2623 exports.counter = counter;
2624 exports.createElement = createElement;
2625 exports.createEventHub = createEventHub;
2626 exports.currentURL = currentURL;
2627 exports.curry = curry;
2628 exports.dayOfYear = dayOfYear;
2629 exports.debounce = debounce;
2630 exports.decapitalize = decapitalize;
2631 exports.deepClone = deepClone;
2632 exports.deepFlatten = deepFlatten;
2633 exports.deepFreeze = deepFreeze;
2634 exports.defaults = defaults;
2635 exports.defer = defer;
2636 exports.degreesToRads = degreesToRads;
2637 exports.delay = delay;
2638 exports.detectDeviceType = detectDeviceType;
2639 exports.difference = difference;
2640 exports.differenceBy = differenceBy;
2641 exports.differenceWith = differenceWith;
2642 exports.dig = dig;
2643 exports.digitize = digitize;
2644 exports.distance = distance;
2645 exports.drop = drop;
2646 exports.dropRight = dropRight;
2647 exports.dropRightWhile = dropRightWhile;
2648 exports.dropWhile = dropWhile;
2649 exports.elementContains = elementContains;
2650 exports.elementIsVisibleInViewport = elementIsVisibleInViewport;
2651 exports.elo = elo;
2652 exports.equals = equals;
2653 exports.escapeHTML = escapeHTML;
2654 exports.escapeRegExp = escapeRegExp;
2655 exports.everyNth = everyNth;
2656 exports.extendHex = extendHex;
2657 exports.factorial = factorial;
2658 exports.fibonacci = fibonacci;
2659 exports.filterNonUnique = filterNonUnique;
2660 exports.filterNonUniqueBy = filterNonUniqueBy;
2661 exports.findKey = findKey;
2662 exports.findLast = findLast;
2663 exports.findLastIndex = findLastIndex;
2664 exports.findLastKey = findLastKey;
2665 exports.flatten = flatten;
2666 exports.flattenObject = flattenObject;
2667 exports.flip = flip;
2668 exports.forEachRight = forEachRight;
2669 exports.forOwn = forOwn;
2670 exports.forOwnRight = forOwnRight;
2671 exports.formatDuration = formatDuration;
2672 exports.fromCamelCase = fromCamelCase;
2673 exports.functionName = functionName;
2674 exports.functions = functions;
2675 exports.gcd = gcd;
2676 exports.geometricProgression = geometricProgression;
2677 exports.get = get;
2678 exports.getColonTimeFromDate = getColonTimeFromDate;
2679 exports.getDaysDiffBetweenDates = getDaysDiffBetweenDates;
2680 exports.getImages = getImages;
2681 exports.getMeridiemSuffixOfInteger = getMeridiemSuffixOfInteger;
2682 exports.getScrollPosition = getScrollPosition;
2683 exports.getStyle = getStyle;
2684 exports.getType = getType;
2685 exports.getURLParameters = getURLParameters;
2686 exports.groupBy = groupBy;
2687 exports.hammingDistance = hammingDistance;
2688 exports.hasClass = hasClass;
2689 exports.hasFlags = hasFlags;
2690 exports.hashBrowser = hashBrowser;
2691 exports.hashNode = hashNode;
2692 exports.head = head;
2693 exports.hexToRGB = hexToRGB;
2694 exports.hide = hide;
2695 exports.httpGet = httpGet;
2696 exports.httpPost = httpPost;
2697 exports.httpsRedirect = httpsRedirect;
2698 exports.hz = hz;
2699 exports.inRange = inRange;
2700 exports.indentString = indentString;
2701 exports.indexOfAll = indexOfAll;
2702 exports.initial = initial;
2703 exports.initialize2DArray = initialize2DArray;
2704 exports.initializeArrayWithRange = initializeArrayWithRange;
2705 exports.initializeArrayWithRangeRight = initializeArrayWithRangeRight;
2706 exports.initializeArrayWithValues = initializeArrayWithValues;
2707 exports.initializeNDArray = initializeNDArray;
2708 exports.insertAfter = insertAfter;
2709 exports.insertBefore = insertBefore;
2710 exports.intersection = intersection;
2711 exports.intersectionBy = intersectionBy;
2712 exports.intersectionWith = intersectionWith;
2713 exports.invertKeyValues = invertKeyValues;
2714 exports.is = is;
2715 exports.isAbsoluteURL = isAbsoluteURL;
2716 exports.isAfterDate = isAfterDate;
2717 exports.isAnagram = isAnagram;
2718 exports.isArrayLike = isArrayLike;
2719 exports.isBeforeDate = isBeforeDate;
2720 exports.isBoolean = isBoolean;
2721 exports.isBrowser = isBrowser;
2722 exports.isBrowserTabFocused = isBrowserTabFocused;
2723 exports.isDivisible = isDivisible;
2724 exports.isDuplexStream = isDuplexStream;
2725 exports.isEmpty = isEmpty;
2726 exports.isEven = isEven;
2727 exports.isFunction = isFunction;
2728 exports.isLowerCase = isLowerCase;
2729 exports.isNegativeZero = isNegativeZero;
2730 exports.isNil = isNil;
2731 exports.isNull = isNull;
2732 exports.isNumber = isNumber;
2733 exports.isObject = isObject;
2734 exports.isObjectLike = isObjectLike;
2735 exports.isPlainObject = isPlainObject;
2736 exports.isPrime = isPrime;
2737 exports.isPrimitive = isPrimitive;
2738 exports.isPromiseLike = isPromiseLike;
2739 exports.isReadableStream = isReadableStream;
2740 exports.isSameDate = isSameDate;
2741 exports.isSorted = isSorted;
2742 exports.isStream = isStream;
2743 exports.isString = isString;
2744 exports.isSymbol = isSymbol;
2745 exports.isTravisCI = isTravisCI;
2746 exports.isUndefined = isUndefined;
2747 exports.isUpperCase = isUpperCase;
2748 exports.isValidJSON = isValidJSON;
2749 exports.isWritableStream = isWritableStream;
2750 exports.join = join;
2751 exports.last = last;
2752 exports.lcm = lcm;
2753 exports.longestItem = longestItem;
2754 exports.lowercaseKeys = lowercaseKeys;
2755 exports.luhnCheck = luhnCheck;
2756 exports.mapKeys = mapKeys;
2757 exports.mapObject = mapObject;
2758 exports.mapString = mapString;
2759 exports.mapValues = mapValues;
2760 exports.mask = mask;
2761 exports.matches = matches;
2762 exports.matchesWith = matchesWith;
2763 exports.maxBy = maxBy;
2764 exports.maxDate = maxDate;
2765 exports.maxN = maxN;
2766 exports.median = median;
2767 exports.memoize = memoize;
2768 exports.merge = merge;
2769 exports.minBy = minBy;
2770 exports.minDate = minDate;
2771 exports.minN = minN;
2772 exports.mostPerformant = mostPerformant;
2773 exports.negate = negate;
2774 exports.nest = nest;
2775 exports.nodeListToArray = nodeListToArray;
2776 exports.none = none;
2777 exports.nthArg = nthArg;
2778 exports.nthElement = nthElement;
2779 exports.objectFromPairs = objectFromPairs;
2780 exports.objectToPairs = objectToPairs;
2781 exports.observeMutations = observeMutations;
2782 exports.off = off;
2783 exports.offset = offset;
2784 exports.omit = omit;
2785 exports.omitBy = omitBy;
2786 exports.on = on;
2787 exports.onUserInputChange = onUserInputChange;
2788 exports.once = once;
2789 exports.orderBy = orderBy;
2790 exports.over = over;
2791 exports.overArgs = overArgs;
2792 exports.pad = pad;
2793 exports.palindrome = palindrome;
2794 exports.parseCookie = parseCookie;
2795 exports.partial = partial;
2796 exports.partialRight = partialRight;
2797 exports.partition = partition;
2798 exports.percentile = percentile;
2799 exports.permutations = permutations;
2800 exports.pick = pick;
2801 exports.pickBy = pickBy;
2802 exports.pipeAsyncFunctions = pipeAsyncFunctions;
2803 exports.pipeFunctions = pipeFunctions;
2804 exports.pluralize = pluralize;
2805 exports.powerset = powerset;
2806 exports.prefix = prefix;
2807 exports.prettyBytes = prettyBytes;
2808 exports.primes = primes;
2809 exports.promisify = promisify;
2810 exports.pull = pull;
2811 exports.pullAtIndex = pullAtIndex;
2812 exports.pullAtValue = pullAtValue;
2813 exports.pullBy = pullBy;
2814 exports.radsToDegrees = radsToDegrees;
2815 exports.randomHexColorCode = randomHexColorCode;
2816 exports.randomIntArrayInRange = randomIntArrayInRange;
2817 exports.randomIntegerInRange = randomIntegerInRange;
2818 exports.randomNumberInRange = randomNumberInRange;
2819 exports.readFileLines = readFileLines;
2820 exports.rearg = rearg;
2821 exports.recordAnimationFrames = recordAnimationFrames;
2822 exports.redirect = redirect;
2823 exports.reduceSuccessive = reduceSuccessive;
2824 exports.reduceWhich = reduceWhich;
2825 exports.reducedFilter = reducedFilter;
2826 exports.reject = reject;
2827 exports.remove = remove;
2828 exports.removeNonASCII = removeNonASCII;
2829 exports.renameKeys = renameKeys;
2830 exports.reverseString = reverseString;
2831 exports.round = round;
2832 exports.runAsync = runAsync;
2833 exports.runPromisesInSeries = runPromisesInSeries;
2834 exports.sample = sample;
2835 exports.sampleSize = sampleSize;
2836 exports.scrollToTop = scrollToTop;
2837 exports.sdbm = sdbm;
2838 exports.serializeCookie = serializeCookie;
2839 exports.setStyle = setStyle;
2840 exports.shallowClone = shallowClone;
2841 exports.shank = shank;
2842 exports.show = show;
2843 exports.shuffle = shuffle;
2844 exports.similarity = similarity;
2845 exports.size = size;
2846 exports.sleep = sleep;
2847 exports.smoothScroll = smoothScroll;
2848 exports.sortCharactersInString = sortCharactersInString;
2849 exports.sortedIndex = sortedIndex;
2850 exports.sortedIndexBy = sortedIndexBy;
2851 exports.sortedLastIndex = sortedLastIndex;
2852 exports.sortedLastIndexBy = sortedLastIndexBy;
2853 exports.splitLines = splitLines;
2854 exports.spreadOver = spreadOver;
2855 exports.stableSort = stableSort;
2856 exports.standardDeviation = standardDeviation;
2857 exports.stringPermutations = stringPermutations;
2858 exports.stripHTMLTags = stripHTMLTags;
2859 exports.sum = sum;
2860 exports.sumBy = sumBy;
2861 exports.sumPower = sumPower;
2862 exports.symmetricDifference = symmetricDifference;
2863 exports.symmetricDifferenceBy = symmetricDifferenceBy;
2864 exports.symmetricDifferenceWith = symmetricDifferenceWith;
2865 exports.tail = tail;
2866 exports.take = take;
2867 exports.takeRight = takeRight;
2868 exports.takeRightWhile = takeRightWhile;
2869 exports.takeWhile = takeWhile;
2870 exports.throttle = throttle;
2871 exports.timeTaken = timeTaken;
2872 exports.times = times;
2873 exports.toCamelCase = toCamelCase;
2874 exports.toCurrency = toCurrency;
2875 exports.toDecimalMark = toDecimalMark;
2876 exports.toHash = toHash;
2877 exports.toKebabCase = toKebabCase;
2878 exports.toOrdinalSuffix = toOrdinalSuffix;
2879 exports.toSafeInteger = toSafeInteger;
2880 exports.toSnakeCase = toSnakeCase;
2881 exports.toTitleCase = toTitleCase;
2882 exports.toggleClass = toggleClass;
2883 exports.tomorrow = tomorrow;
2884 exports.transform = transform;
2885 exports.triggerEvent = triggerEvent;
2886 exports.truncateString = truncateString;
2887 exports.truthCheckCollection = truthCheckCollection;
2888 exports.unary = unary;
2889 exports.uncurry = uncurry;
2890 exports.unescapeHTML = unescapeHTML;
2891 exports.unflattenObject = unflattenObject;
2892 exports.unfold = unfold;
2893 exports.union = union;
2894 exports.unionBy = unionBy;
2895 exports.unionWith = unionWith;
2896 exports.uniqueElements = uniqueElements;
2897 exports.uniqueElementsBy = uniqueElementsBy;
2898 exports.uniqueElementsByRight = uniqueElementsByRight;
2899 exports.uniqueSymmetricDifference = uniqueSymmetricDifference;
2900 exports.untildify = untildify;
2901 exports.unzip = unzip;
2902 exports.unzipWith = unzipWith;
2903 exports.validateNumber = validateNumber;
2904 exports.when = when;
2905 exports.without = without;
2906 exports.words = words;
2907 exports.xProd = xProd;
2908 exports.yesNo = yesNo;
2909 exports.zip = zip;
2910 exports.zipObject = zipObject;
2911 exports.zipWith = zipWith;
2912
2913 Object.defineProperty(exports, '__esModule', { value: true });
2914
2915})));