You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					686 lines
				
				15 KiB
			
		
		
			
		
	
	
					686 lines
				
				15 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								// Generated by LiveScript 1.4.0
							 | 
						||
| 
								 | 
							
								var each, map, compact, filter, reject, 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, slice$ = [].slice;
							 | 
						||
| 
								 | 
							
								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$;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								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, results, i$, len$, x, j$, len1$, ys;
							 | 
						||
| 
								 | 
							
								  yss = slice$.call(arguments, 1);
							 | 
						||
| 
								 | 
							
								  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, results, i$, len$, x, j$, len1$, ys;
							 | 
						||
| 
								 | 
							
								  yss = slice$.call(arguments, 1);
							 | 
						||
| 
								 | 
							
								  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, results, i$, len$, xs, j$, len1$, x;
							 | 
						||
| 
								 | 
							
								  xss = slice$.call(arguments);
							 | 
						||
| 
								 | 
							
								  results = [];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    xs = xss[i$];
							 | 
						||
| 
								 | 
							
								    for (j$ = 0, len1$ = xs.length; j$ < len1$; ++j$) {
							 | 
						||
| 
								 | 
							
								      x = xs[j$];
							 | 
						||
| 
								 | 
							
								      if (!in$(x, results)) {
							 | 
						||
| 
								 | 
							
								        results.push(x);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								countBy = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var results, i$, len$, x, key;
							 | 
						||
| 
								 | 
							
								  results = {};
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    key = f(x);
							 | 
						||
| 
								 | 
							
								    if (key in results) {
							 | 
						||
| 
								 | 
							
								      results[key] += 1;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      results[key] = 1;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								groupBy = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var results, i$, len$, x, key;
							 | 
						||
| 
								 | 
							
								  results = {};
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    key = f(x);
							 | 
						||
| 
								 | 
							
								    if (key in results) {
							 | 
						||
| 
								 | 
							
								      results[key].push(x);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      results[key] = [x];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								andList = function(xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (!x) {
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								orList = function(xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (x) {
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return false;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								any = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (f(x)) {
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return false;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								all = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (!f(x)) {
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return true;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								sort = function(xs){
							 | 
						||
| 
								 | 
							
								  return xs.concat().sort(function(x, y){
							 | 
						||
| 
								 | 
							
								    if (x > y) {
							 | 
						||
| 
								 | 
							
								      return 1;
							 | 
						||
| 
								 | 
							
								    } else if (x < y) {
							 | 
						||
| 
								 | 
							
								      return -1;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								sortWith = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  return xs.concat().sort(f);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								sortBy = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  return xs.concat().sort(function(x, y){
							 | 
						||
| 
								 | 
							
								    if (f(x) > f(y)) {
							 | 
						||
| 
								 | 
							
								      return 1;
							 | 
						||
| 
								 | 
							
								    } else if (f(x) < f(y)) {
							 | 
						||
| 
								 | 
							
								      return -1;
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								      return 0;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								sum = function(xs){
							 | 
						||
| 
								 | 
							
								  var result, i$, len$, x;
							 | 
						||
| 
								 | 
							
								  result = 0;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    result += x;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								product = function(xs){
							 | 
						||
| 
								 | 
							
								  var result, i$, len$, x;
							 | 
						||
| 
								 | 
							
								  result = 1;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    result *= x;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								mean = average = function(xs){
							 | 
						||
| 
								 | 
							
								  var sum, i$, len$, x;
							 | 
						||
| 
								 | 
							
								  sum = 0;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    sum += x;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return sum / xs.length;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								maximum = function(xs){
							 | 
						||
| 
								 | 
							
								  var max, i$, ref$, len$, x;
							 | 
						||
| 
								 | 
							
								  max = xs[0];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = ref$[i$];
							 | 
						||
| 
								 | 
							
								    if (x > max) {
							 | 
						||
| 
								 | 
							
								      max = x;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return max;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								minimum = function(xs){
							 | 
						||
| 
								 | 
							
								  var min, i$, ref$, len$, x;
							 | 
						||
| 
								 | 
							
								  min = xs[0];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = ref$[i$];
							 | 
						||
| 
								 | 
							
								    if (x < min) {
							 | 
						||
| 
								 | 
							
								      min = x;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return min;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								maximumBy = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var max, i$, ref$, len$, x;
							 | 
						||
| 
								 | 
							
								  max = xs[0];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = ref$[i$];
							 | 
						||
| 
								 | 
							
								    if (f(x) > f(max)) {
							 | 
						||
| 
								 | 
							
								      max = x;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return max;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								minimumBy = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var min, i$, ref$, len$, x;
							 | 
						||
| 
								 | 
							
								  min = xs[0];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    x = ref$[i$];
							 | 
						||
| 
								 | 
							
								    if (f(x) < f(min)) {
							 | 
						||
| 
								 | 
							
								      min = x;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return min;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								scan = scanl = curry$(function(f, memo, xs){
							 | 
						||
| 
								 | 
							
								  var last, x;
							 | 
						||
| 
								 | 
							
								  last = memo;
							 | 
						||
| 
								 | 
							
								  return [memo].concat((function(){
							 | 
						||
| 
								 | 
							
								    var i$, ref$, len$, results$ = [];
							 | 
						||
| 
								 | 
							
								    for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								      x = ref$[i$];
							 | 
						||
| 
								 | 
							
								      results$.push(last = f(last, x));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return results$;
							 | 
						||
| 
								 | 
							
								  }()));
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								scan1 = scanl1 = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  if (!xs.length) {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return scan(f, xs[0], xs.slice(1));
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								scanr = curry$(function(f, memo, xs){
							 | 
						||
| 
								 | 
							
								  xs = xs.concat().reverse();
							 | 
						||
| 
								 | 
							
								  return scan(f, memo, xs).reverse();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								scanr1 = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  if (!xs.length) {
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  xs = xs.concat().reverse();
							 | 
						||
| 
								 | 
							
								  return scan(f, xs[0], xs.slice(1)).reverse();
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								slice = curry$(function(x, y, xs){
							 | 
						||
| 
								 | 
							
								  return xs.slice(x, y);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								take = curry$(function(n, xs){
							 | 
						||
| 
								 | 
							
								  if (n <= 0) {
							 | 
						||
| 
								 | 
							
								    return xs.slice(0, 0);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return xs.slice(0, n);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								drop = curry$(function(n, xs){
							 | 
						||
| 
								 | 
							
								  if (n <= 0) {
							 | 
						||
| 
								 | 
							
								    return xs;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return xs.slice(n);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								splitAt = curry$(function(n, xs){
							 | 
						||
| 
								 | 
							
								  return [take(n, xs), drop(n, xs)];
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								takeWhile = curry$(function(p, xs){
							 | 
						||
| 
								 | 
							
								  var len, i;
							 | 
						||
| 
								 | 
							
								  len = xs.length;
							 | 
						||
| 
								 | 
							
								  if (!len) {
							 | 
						||
| 
								 | 
							
								    return xs;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  i = 0;
							 | 
						||
| 
								 | 
							
								  while (i < len && p(xs[i])) {
							 | 
						||
| 
								 | 
							
								    i += 1;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return xs.slice(0, i);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								dropWhile = curry$(function(p, xs){
							 | 
						||
| 
								 | 
							
								  var len, i;
							 | 
						||
| 
								 | 
							
								  len = xs.length;
							 | 
						||
| 
								 | 
							
								  if (!len) {
							 | 
						||
| 
								 | 
							
								    return xs;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  i = 0;
							 | 
						||
| 
								 | 
							
								  while (i < len && p(xs[i])) {
							 | 
						||
| 
								 | 
							
								    i += 1;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return xs.slice(i);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								span = curry$(function(p, xs){
							 | 
						||
| 
								 | 
							
								  return [takeWhile(p, xs), dropWhile(p, xs)];
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								breakList = curry$(function(p, xs){
							 | 
						||
| 
								 | 
							
								  return span(compose$(p, not$), xs);
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								zip = curry$(function(xs, ys){
							 | 
						||
| 
								 | 
							
								  var result, len, i$, len$, i, x;
							 | 
						||
| 
								 | 
							
								  result = [];
							 | 
						||
| 
								 | 
							
								  len = ys.length;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (i === len) {
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    result.push([x, ys[i]]);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								zipWith = curry$(function(f, xs, ys){
							 | 
						||
| 
								 | 
							
								  var result, len, i$, len$, i, x;
							 | 
						||
| 
								 | 
							
								  result = [];
							 | 
						||
| 
								 | 
							
								  len = ys.length;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (i === len) {
							 | 
						||
| 
								 | 
							
								      break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    result.push(f(x, ys[i]));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								zipAll = function(){
							 | 
						||
| 
								 | 
							
								  var xss, minLength, i$, len$, xs, ref$, i, lresult$, j$, results$ = [];
							 | 
						||
| 
								 | 
							
								  xss = slice$.call(arguments);
							 | 
						||
| 
								 | 
							
								  minLength = undefined;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    xs = xss[i$];
							 | 
						||
| 
								 | 
							
								    minLength <= (ref$ = xs.length) || (minLength = ref$);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (i$ = 0; i$ < minLength; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    lresult$ = [];
							 | 
						||
| 
								 | 
							
								    for (j$ = 0, len$ = xss.length; j$ < len$; ++j$) {
							 | 
						||
| 
								 | 
							
								      xs = xss[j$];
							 | 
						||
| 
								 | 
							
								      lresult$.push(xs[i]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    results$.push(lresult$);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results$;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								zipAllWith = function(f){
							 | 
						||
| 
								 | 
							
								  var xss, minLength, i$, len$, xs, ref$, i, results$ = [];
							 | 
						||
| 
								 | 
							
								  xss = slice$.call(arguments, 1);
							 | 
						||
| 
								 | 
							
								  minLength = undefined;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    xs = xss[i$];
							 | 
						||
| 
								 | 
							
								    minLength <= (ref$ = xs.length) || (minLength = ref$);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  for (i$ = 0; i$ < minLength; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    results$.push(f.apply(null, (fn$())));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results$;
							 | 
						||
| 
								 | 
							
								  function fn$(){
							 | 
						||
| 
								 | 
							
								    var i$, ref$, len$, results$ = [];
							 | 
						||
| 
								 | 
							
								    for (i$ = 0, len$ = (ref$ = xss).length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								      xs = ref$[i$];
							 | 
						||
| 
								 | 
							
								      results$.push(xs[i]);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return results$;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								at = curry$(function(n, xs){
							 | 
						||
| 
								 | 
							
								  if (n < 0) {
							 | 
						||
| 
								 | 
							
								    return xs[xs.length + n];
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    return xs[n];
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								elemIndex = curry$(function(el, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, i, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (x === el) {
							 | 
						||
| 
								 | 
							
								      return i;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								elemIndices = curry$(function(el, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, i, x, results$ = [];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (x === el) {
							 | 
						||
| 
								 | 
							
								      results$.push(i);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results$;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								findIndex = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, i, x;
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (f(x)) {
							 | 
						||
| 
								 | 
							
								      return i;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								findIndices = curry$(function(f, xs){
							 | 
						||
| 
								 | 
							
								  var i$, len$, i, x, results$ = [];
							 | 
						||
| 
								 | 
							
								  for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
							 | 
						||
| 
								 | 
							
								    i = i$;
							 | 
						||
| 
								 | 
							
								    x = xs[i$];
							 | 
						||
| 
								 | 
							
								    if (f(x)) {
							 | 
						||
| 
								 | 
							
								      results$.push(i);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return results$;
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  each: each,
							 | 
						||
| 
								 | 
							
								  map: map,
							 | 
						||
| 
								 | 
							
								  filter: filter,
							 | 
						||
| 
								 | 
							
								  compact: compact,
							 | 
						||
| 
								 | 
							
								  reject: reject,
							 | 
						||
| 
								 | 
							
								  partition: partition,
							 | 
						||
| 
								 | 
							
								  find: find,
							 | 
						||
| 
								 | 
							
								  head: head,
							 | 
						||
| 
								 | 
							
								  first: first,
							 | 
						||
| 
								 | 
							
								  tail: tail,
							 | 
						||
| 
								 | 
							
								  last: last,
							 | 
						||
| 
								 | 
							
								  initial: initial,
							 | 
						||
| 
								 | 
							
								  empty: empty,
							 | 
						||
| 
								 | 
							
								  reverse: reverse,
							 | 
						||
| 
								 | 
							
								  difference: difference,
							 | 
						||
| 
								 | 
							
								  intersection: intersection,
							 | 
						||
| 
								 | 
							
								  union: union,
							 | 
						||
| 
								 | 
							
								  countBy: countBy,
							 | 
						||
| 
								 | 
							
								  groupBy: groupBy,
							 | 
						||
| 
								 | 
							
								  fold: fold,
							 | 
						||
| 
								 | 
							
								  fold1: fold1,
							 | 
						||
| 
								 | 
							
								  foldl: foldl,
							 | 
						||
| 
								 | 
							
								  foldl1: foldl1,
							 | 
						||
| 
								 | 
							
								  foldr: foldr,
							 | 
						||
| 
								 | 
							
								  foldr1: foldr1,
							 | 
						||
| 
								 | 
							
								  unfoldr: unfoldr,
							 | 
						||
| 
								 | 
							
								  andList: andList,
							 | 
						||
| 
								 | 
							
								  orList: orList,
							 | 
						||
| 
								 | 
							
								  any: any,
							 | 
						||
| 
								 | 
							
								  all: all,
							 | 
						||
| 
								 | 
							
								  unique: unique,
							 | 
						||
| 
								 | 
							
								  uniqueBy: uniqueBy,
							 | 
						||
| 
								 | 
							
								  sort: sort,
							 | 
						||
| 
								 | 
							
								  sortWith: sortWith,
							 | 
						||
| 
								 | 
							
								  sortBy: sortBy,
							 | 
						||
| 
								 | 
							
								  sum: sum,
							 | 
						||
| 
								 | 
							
								  product: product,
							 | 
						||
| 
								 | 
							
								  mean: mean,
							 | 
						||
| 
								 | 
							
								  average: average,
							 | 
						||
| 
								 | 
							
								  concat: concat,
							 | 
						||
| 
								 | 
							
								  concatMap: concatMap,
							 | 
						||
| 
								 | 
							
								  flatten: flatten,
							 | 
						||
| 
								 | 
							
								  maximum: maximum,
							 | 
						||
| 
								 | 
							
								  minimum: minimum,
							 | 
						||
| 
								 | 
							
								  maximumBy: maximumBy,
							 | 
						||
| 
								 | 
							
								  minimumBy: minimumBy,
							 | 
						||
| 
								 | 
							
								  scan: scan,
							 | 
						||
| 
								 | 
							
								  scan1: scan1,
							 | 
						||
| 
								 | 
							
								  scanl: scanl,
							 | 
						||
| 
								 | 
							
								  scanl1: scanl1,
							 | 
						||
| 
								 | 
							
								  scanr: scanr,
							 | 
						||
| 
								 | 
							
								  scanr1: scanr1,
							 | 
						||
| 
								 | 
							
								  slice: slice,
							 | 
						||
| 
								 | 
							
								  take: take,
							 | 
						||
| 
								 | 
							
								  drop: drop,
							 | 
						||
| 
								 | 
							
								  splitAt: splitAt,
							 | 
						||
| 
								 | 
							
								  takeWhile: takeWhile,
							 | 
						||
| 
								 | 
							
								  dropWhile: dropWhile,
							 | 
						||
| 
								 | 
							
								  span: span,
							 | 
						||
| 
								 | 
							
								  breakList: breakList,
							 | 
						||
| 
								 | 
							
								  zip: zip,
							 | 
						||
| 
								 | 
							
								  zipWith: zipWith,
							 | 
						||
| 
								 | 
							
								  zipAll: zipAll,
							 | 
						||
| 
								 | 
							
								  zipAllWith: zipAllWith,
							 | 
						||
| 
								 | 
							
								  at: at,
							 | 
						||
| 
								 | 
							
								  elemIndex: elemIndex,
							 | 
						||
| 
								 | 
							
								  elemIndices: elemIndices,
							 | 
						||
| 
								 | 
							
								  findIndex: findIndex,
							 | 
						||
| 
								 | 
							
								  findIndices: findIndices
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								function curry$(f, bound){
							 | 
						||
| 
								 | 
							
								  var context,
							 | 
						||
| 
								 | 
							
								  _curry = function(args) {
							 | 
						||
| 
								 | 
							
								    return f.length > 1 ? function(){
							 | 
						||
| 
								 | 
							
								      var params = args ? args.concat() : [];
							 | 
						||
| 
								 | 
							
								      context = bound ? context || this : this;
							 | 
						||
| 
								 | 
							
								      return params.push.apply(params, arguments) <
							 | 
						||
| 
								 | 
							
								          f.length && arguments.length ?
							 | 
						||
| 
								 | 
							
								        _curry.call(context, params) : f.apply(context, params);
							 | 
						||
| 
								 | 
							
								    } : f;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								  return _curry();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function in$(x, xs){
							 | 
						||
| 
								 | 
							
								  var i = -1, l = xs.length >>> 0;
							 | 
						||
| 
								 | 
							
								  while (++i < l) if (x === xs[i]) return true;
							 | 
						||
| 
								 | 
							
								  return false;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function compose$() {
							 | 
						||
| 
								 | 
							
								  var functions = arguments;
							 | 
						||
| 
								 | 
							
								  return function() {
							 | 
						||
| 
								 | 
							
								    var i, result;
							 | 
						||
| 
								 | 
							
								    result = functions[0].apply(this, arguments);
							 | 
						||
| 
								 | 
							
								    for (i = 1; i < functions.length; ++i) {
							 | 
						||
| 
								 | 
							
								      result = functions[i](result);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return result;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function not$(x){ return !x; }
							 |