Index: imaps-frontend/node_modules/clean-css/lib/utils/clone-array.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/clone-array.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/clone-array.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,11 @@
+function cloneArray(array) {
+  var cloned = array.slice(0);
+
+  for (var i = 0, l = cloned.length; i < l; i++) {
+    if (Array.isArray(cloned[i])) { cloned[i] = cloneArray(cloned[i]); }
+  }
+
+  return cloned;
+}
+
+module.exports = cloneArray;
Index: imaps-frontend/node_modules/clean-css/lib/utils/format-position.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/format-position.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/format-position.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,11 @@
+function formatPosition(metadata) {
+  var line = metadata[0];
+  var column = metadata[1];
+  var source = metadata[2];
+
+  return source
+    ? source + ':' + line + ':' + column
+    : line + ':' + column;
+}
+
+module.exports = formatPosition;
Index: imaps-frontend/node_modules/clean-css/lib/utils/has-protocol.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/has-protocol.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/has-protocol.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+var NO_PROTOCOL_RESOURCE_PATTERN = /^\/\//;
+
+function hasProtocol(uri) {
+  return !NO_PROTOCOL_RESOURCE_PATTERN.test(uri);
+}
+
+module.exports = hasProtocol;
Index: imaps-frontend/node_modules/clean-css/lib/utils/is-data-uri-resource.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/is-data-uri-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/is-data-uri-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+var DATA_URI_PATTERN = /^data:(\S{0,31}?)?(;charset=(?:(?!;charset=)[^;])+)?(;[^,]+?)?,(.+)/;
+
+function isDataUriResource(uri) {
+  return DATA_URI_PATTERN.test(uri);
+}
+
+module.exports = isDataUriResource;
Index: imaps-frontend/node_modules/clean-css/lib/utils/is-http-resource.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/is-http-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/is-http-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+var HTTP_RESOURCE_PATTERN = /^http:\/\//;
+
+function isHttpResource(uri) {
+  return HTTP_RESOURCE_PATTERN.test(uri);
+}
+
+module.exports = isHttpResource;
Index: imaps-frontend/node_modules/clean-css/lib/utils/is-https-resource.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/is-https-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/is-https-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+var HTTPS_RESOURCE_PATTERN = /^https:\/\//;
+
+function isHttpsResource(uri) {
+  return HTTPS_RESOURCE_PATTERN.test(uri);
+}
+
+module.exports = isHttpsResource;
Index: imaps-frontend/node_modules/clean-css/lib/utils/is-import.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/is-import.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/is-import.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+var IMPORT_PREFIX_PATTERN = /^@import/i;
+
+function isImport(value) {
+  return IMPORT_PREFIX_PATTERN.test(value);
+}
+
+module.exports = isImport;
Index: imaps-frontend/node_modules/clean-css/lib/utils/is-remote-resource.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/is-remote-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/is-remote-resource.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+var REMOTE_RESOURCE_PATTERN = /^(\w+:\/\/|\/\/)/;
+var FILE_RESOURCE_PATTERN = /^file:\/\//;
+
+function isRemoteResource(uri) {
+  return REMOTE_RESOURCE_PATTERN.test(uri) && !FILE_RESOURCE_PATTERN.test(uri);
+}
+
+module.exports = isRemoteResource;
Index: imaps-frontend/node_modules/clean-css/lib/utils/natural-compare.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/natural-compare.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/natural-compare.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,31 @@
+// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956
+
+var NUMBER_PATTERN = /([0-9]+)/;
+
+function naturalCompare(value1, value2) {
+  var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);
+  var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);
+  var key1;
+  var key2;
+  var compareFirst = Math.min(keys1.length, keys2.length);
+  var i, l;
+
+  for (i = 0, l = compareFirst; i < l; i++) {
+    key1 = keys1[i];
+    key2 = keys2[i];
+
+    if (key1 != key2) {
+      return key1 > key2 ? 1 : -1;
+    }
+  }
+
+  return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);
+}
+
+function tryParseInt(value) {
+  return ('' + parseInt(value)) == value
+    ? parseInt(value)
+    : value;
+}
+
+module.exports = naturalCompare;
Index: imaps-frontend/node_modules/clean-css/lib/utils/override.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/override.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/override.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,34 @@
+function override(source1, source2) {
+  var target = {};
+  var key1;
+  var key2;
+  var item;
+
+  for (key1 in source1) {
+    item = source1[key1];
+
+    if (Array.isArray(item)) {
+      target[key1] = item.slice(0);
+    } else if (typeof item == 'object' && item !== null) {
+      target[key1] = override(item, {});
+    } else {
+      target[key1] = item;
+    }
+  }
+
+  for (key2 in source2) {
+    item = source2[key2];
+
+    if (key2 in target && Array.isArray(item)) {
+      target[key2] = item.slice(0);
+    } else if (key2 in target && typeof item == 'object' && item !== null) {
+      target[key2] = override(target[key2], item);
+    } else {
+      target[key2] = item;
+    }
+  }
+
+  return target;
+}
+
+module.exports = override;
Index: imaps-frontend/node_modules/clean-css/lib/utils/split.js
===================================================================
--- imaps-frontend/node_modules/clean-css/lib/utils/split.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/clean-css/lib/utils/split.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,62 @@
+var Marker = require('../tokenizer/marker');
+
+function is(value, separator, isSeparatorRegex) {
+  return isSeparatorRegex
+    ? separator.test(value)
+    : value === separator;
+}
+
+function split(value, separator) {
+  var openLevel = Marker.OPEN_ROUND_BRACKET;
+  var closeLevel = Marker.CLOSE_ROUND_BRACKET;
+  var level = 0;
+  var cursor = 0;
+  var lastStart = 0;
+  var lastValue;
+  var lastCharacter;
+  var len = value.length;
+  var parts = [];
+  var isSeparatorRegex = typeof (separator) == 'object' && 'exec' in separator;
+
+  if (!isSeparatorRegex && value.indexOf(separator) == -1) {
+    return [value];
+  }
+
+  if (value.indexOf(openLevel) == -1) {
+    return value.split(separator);
+  }
+
+  while (cursor < len) {
+    if (value[cursor] == openLevel) {
+      level++;
+    } else if (value[cursor] == closeLevel) {
+      level--;
+    }
+
+    if (level === 0 && cursor > 0 && cursor + 1 < len && is(value[cursor], separator, isSeparatorRegex)) {
+      parts.push(value.substring(lastStart, cursor));
+
+      if (isSeparatorRegex && separator.exec(value[cursor]).length > 1) {
+        parts.push(value[cursor]);
+      }
+
+      lastStart = cursor + 1;
+    }
+
+    cursor++;
+  }
+
+  if (lastStart < cursor + 1) {
+    lastValue = value.substring(lastStart);
+    lastCharacter = lastValue[lastValue.length - 1];
+    if (is(lastCharacter, separator, isSeparatorRegex)) {
+      lastValue = lastValue.substring(0, lastValue.length - 1);
+    }
+
+    parts.push(lastValue);
+  }
+
+  return parts;
+}
+
+module.exports = split;
