// Generated by LiveScript 1.6.0 var each, map, compact, filter, reject, remove, partition, find, head, first, tail, last, initial, empty, reverse, unique, uniqueBy, fold, foldl, fold1, foldl1, foldr, foldr1, unfoldr, concat, concatMap, flatten, difference, intersection, union, countBy, groupBy, andList, orList, any, all, sort, sortWith, sortBy, sum, product, mean, average, maximum, minimum, maximumBy, minimumBy, scan, scanl, scan1, scanl1, scanr, scanr1, slice, take, drop, splitAt, takeWhile, dropWhile, span, breakList, zip, zipWith, zipAll, zipAllWith, at, elemIndex, elemIndices, findIndex, findIndices, toString$ = {}.toString; each = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; f(x); } return xs; }); map = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; results$.push(f(x)); } return results$; }); compact = function(xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (x) { results$.push(x); } } return results$; }; filter = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (f(x)) { results$.push(x); } } return results$; }); reject = curry$(function(f, xs){ var i$, len$, x, results$ = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!f(x)) { results$.push(x); } } return results$; }); remove = curry$(function(el, xs){ var i, x$; i = elemIndex(el, xs); x$ = xs.slice(); if (i != null) { x$.splice(i, 1); } return x$; }); partition = curry$(function(f, xs){ var passed, failed, i$, len$, x; passed = []; failed = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; (f(x) ? passed : failed).push(x); } return [passed, failed]; }); find = curry$(function(f, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (f(x)) { return x; } } }); head = first = function(xs){ return xs[0]; }; tail = function(xs){ if (!xs.length) { return; } return xs.slice(1); }; last = function(xs){ return xs[xs.length - 1]; }; initial = function(xs){ if (!xs.length) { return; } return xs.slice(0, -1); }; empty = function(xs){ return !xs.length; }; reverse = function(xs){ return xs.concat().reverse(); }; unique = function(xs){ var result, i$, len$, x; result = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; if (!in$(x, result)) { result.push(x); } } return result; }; uniqueBy = curry$(function(f, xs){ var seen, i$, len$, x, val, results$ = []; seen = []; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; val = f(x); if (in$(val, seen)) { continue; } seen.push(val); results$.push(x); } return results$; }); fold = foldl = curry$(function(f, memo, xs){ var i$, len$, x; for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; memo = f(memo, x); } return memo; }); fold1 = foldl1 = curry$(function(f, xs){ return fold(f, xs[0], xs.slice(1)); }); foldr = curry$(function(f, memo, xs){ var i$, x; for (i$ = xs.length - 1; i$ >= 0; --i$) { x = xs[i$]; memo = f(x, memo); } return memo; }); foldr1 = curry$(function(f, xs){ return foldr(f, xs[xs.length - 1], xs.slice(0, -1)); }); unfoldr = curry$(function(f, b){ var result, x, that; result = []; x = b; while ((that = f(x)) != null) { result.push(that[0]); x = that[1]; } return result; }); concat = function(xss){ return [].concat.apply([], xss); }; concatMap = curry$(function(f, xs){ var x; return [].concat.apply([], (function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) { x = ref$[i$]; results$.push(f(x)); } return results$; }())); }); flatten = function(xs){ var x; return [].concat.apply([], (function(){ var i$, ref$, len$, results$ = []; for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) { x = ref$[i$]; if (toString$.call(x).slice(8, -1) === 'Array') { results$.push(flatten(x)); } else { results$.push(x); } } return results$; }())); }; difference = function(xs){ var yss, res$, i$, to$, results, len$, x, j$, len1$, ys; res$ = []; for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } yss = res$; results = []; outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) { ys = yss[j$]; if (in$(x, ys)) { continue outer; } } results.push(x); } return results; }; intersection = function(xs){ var yss, res$, i$, to$, results, len$, x, j$, len1$, ys; res$ = []; for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } yss = res$; results = []; outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) { x = xs[i$]; for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) { ys = yss[j$]; if (!in$(x, ys)) { continue outer; } } results.push(x); } return results; }; union = function(){ var xss, res$, i$, to$, results, len$, xs, j$, len1$, x; res$ = []; for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) { res$.push(arguments[i$]); } xss = res$; results = []; for (i$ = 0, len$ = xss.l