UNPKG

799 kBSource Map (JSON)View Raw
1{"version":3,"file":"dep-cb9bf5e2.js","sources":["../../../../../node_modules/clean-css/lib/optimizer/level-0/optimize.js","../../../../../node_modules/clean-css/lib/utils/natural-compare.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/sort-selectors.js","../../../../../node_modules/clean-css/lib/utils/override.js","../../../../../node_modules/clean-css/lib/options/format.js","../../../../../node_modules/clean-css/lib/tokenizer/marker.js","../../../../../node_modules/clean-css/lib/utils/format-position.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/tidy-rules.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/tidy-block.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/tidy-at-rule.js","../../../../../node_modules/clean-css/lib/optimizer/hack.js","../../../../../node_modules/clean-css/lib/optimizer/remove-unused.js","../../../../../node_modules/clean-css/lib/optimizer/restore-from-optimizing.js","../../../../../node_modules/clean-css/lib/tokenizer/token.js","../../../../../node_modules/clean-css/lib/optimizer/wrap-for-optimizing.js","../../../../../node_modules/clean-css/lib/optimizer/invalid-property-error.js","../../../../../node_modules/clean-css/lib/optimizer/configuration/break-up.js","../../../../../node_modules/clean-css/lib/optimizer/vendor-prefixes.js","../../../../../node_modules/clean-css/lib/optimizer/configuration/properties/understandable.js","../../../../../node_modules/clean-css/lib/optimizer/configuration/can-override.js","../../../../../node_modules/clean-css/lib/optimizer/clone.js","../../../../../node_modules/clean-css/lib/optimizer/configuration/restore.js","../../../../../node_modules/clean-css/lib/options/rounding-precision.js","../../../../../node_modules/clean-css/lib/options/optimization-level.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/background.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/box-shadow.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/border-radius.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/filter.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/font-weight.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/margin.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/outline.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers/padding.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/property-optimizers.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-hex.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-hsl.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color/shorten-rgb.js","../../../../../node_modules/clean-css/lib/utils/split.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/color.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/degrees.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/starts-as-url.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/fraction.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/precision.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/text-quotes.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/time.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/unit.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-prefix.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-quotes.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/url-whitespace.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/whitespace.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/value-optimizers.js","../../../../../node_modules/clean-css/lib/optimizer/configuration.js","../../../../../node_modules/clean-css/lib/writer/helpers.js","../../../../../node_modules/clean-css/lib/writer/one-time.js","../../../../../node_modules/clean-css/lib/optimizer/level-1/optimize.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/is-mergeable.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/every-values-pair.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/has-inherit.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/has-same-values.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/populate-components.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/restore-with-components.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/merge-into-shorthands.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/has-unset.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/find-component-in.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/is-component-of.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/is-mergeable-shorthand.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/overrides-non-component-shorthand.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/override-properties.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/properties/optimize.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/merge-adjacent.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/rules-overlap.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/specificity.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/specificities-overlap.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/reorderable.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/extract-properties.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/merge-media-queries.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/merge-non-adjacent-by-body.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/merge-non-adjacent-by-selector.js","../../../../../node_modules/clean-css/lib/utils/clone-array.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/reduce-non-adjacent.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/remove-duplicate-font-at-rules.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/remove-duplicate-media-queries.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/remove-duplicates.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/remove-unused-at-rules.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/tidy-rule-duplicates.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/restructure.js","../../../../../node_modules/clean-css/lib/optimizer/level-2/optimize.js","../../../../../node_modules/clean-css/lib/optimizer/validator.js","../../../../../node_modules/clean-css/lib/options/compatibility.js","../../../../../node_modules/clean-css/lib/utils/is-http-resource.js","../../../../../node_modules/clean-css/lib/utils/is-https-resource.js","../../../../../node_modules/clean-css/lib/reader/load-remote-resource.js","../../../../../node_modules/clean-css/lib/options/fetch.js","../../../../../node_modules/clean-css/lib/options/inline.js","../../../../../node_modules/clean-css/lib/options/inline-request.js","../../../../../node_modules/clean-css/lib/options/inline-timeout.js","../../../../../node_modules/clean-css/lib/options/plugins.js","../../../../../node_modules/clean-css/lib/options/rebase.js","../../../../../node_modules/clean-css/lib/options/rebase-to.js","../../../../../node_modules/clean-css/lib/reader/input-source-map-tracker.js","../../../../../node_modules/clean-css/lib/utils/is-remote-resource.js","../../../../../node_modules/clean-css/lib/utils/has-protocol.js","../../../../../node_modules/clean-css/lib/reader/is-allowed-resource.js","../../../../../node_modules/clean-css/lib/reader/match-data-uri.js","../../../../../node_modules/clean-css/lib/reader/rebase-local-map.js","../../../../../node_modules/clean-css/lib/reader/rebase-remote-map.js","../../../../../node_modules/clean-css/lib/utils/is-data-uri-resource.js","../../../../../node_modules/clean-css/lib/reader/apply-source-maps.js","../../../../../node_modules/clean-css/lib/reader/extract-import-url-and-media.js","../../../../../node_modules/clean-css/lib/reader/load-original-sources.js","../../../../../node_modules/clean-css/lib/reader/normalize-path.js","../../../../../node_modules/clean-css/lib/reader/restore-import.js","../../../../../node_modules/clean-css/lib/reader/rewrite-url.js","../../../../../node_modules/clean-css/lib/utils/is-import.js","../../../../../node_modules/clean-css/lib/reader/rebase.js","../../../../../node_modules/clean-css/lib/tokenizer/tokenize.js","../../../../../node_modules/clean-css/lib/reader/read-sources.js","../../../../../node_modules/clean-css/lib/writer/simple.js","../../../../../node_modules/clean-css/lib/writer/source-maps.js","../../../../../node_modules/clean-css/lib/clean.js","../../../../../node_modules/clean-css/index.js"],"sourcesContent":["function level0Optimize(tokens) {\n // noop as level 0 means no optimizations!\n return tokens;\n}\n\nmodule.exports = level0Optimize;\n","// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956\n\nvar NUMBER_PATTERN = /([0-9]+)/;\n\nfunction naturalCompare(value1, value2) {\n var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);\n var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);\n var key1;\n var key2;\n var compareFirst = Math.min(keys1.length, keys2.length);\n var i, l;\n\n for (i = 0, l = compareFirst; i < l; i++) {\n key1 = keys1[i];\n key2 = keys2[i];\n\n if (key1 != key2) {\n return key1 > key2 ? 1 : -1;\n }\n }\n\n return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);\n}\n\nfunction tryParseInt(value) {\n return ('' + parseInt(value)) == value ?\n parseInt(value) :\n value;\n}\n\nmodule.exports = naturalCompare;\n","var naturalCompare = require('../../utils/natural-compare');\n\nfunction naturalSorter(scope1, scope2) {\n return naturalCompare(scope1[1], scope2[1]);\n}\n\nfunction standardSorter(scope1, scope2) {\n return scope1[1] > scope2[1] ? 1 : -1;\n}\n\nfunction sortSelectors(selectors, method) {\n switch (method) {\n case 'natural':\n return selectors.sort(naturalSorter);\n case 'standard':\n return selectors.sort(standardSorter);\n case 'none':\n case false:\n return selectors;\n }\n}\n\nmodule.exports = sortSelectors;\n","function override(source1, source2) {\n var target = {};\n var key1;\n var key2;\n var item;\n\n for (key1 in source1) {\n item = source1[key1];\n\n if (Array.isArray(item)) {\n target[key1] = item.slice(0);\n } else if (typeof item == 'object' && item !== null) {\n target[key1] = override(item, {});\n } else {\n target[key1] = item;\n }\n }\n\n for (key2 in source2) {\n item = source2[key2];\n\n if (key2 in target && Array.isArray(item)) {\n target[key2] = item.slice(0);\n } else if (key2 in target && typeof item == 'object' && item !== null) {\n target[key2] = override(target[key2], item);\n } else {\n target[key2] = item;\n }\n }\n\n return target;\n}\n\nmodule.exports = override;\n","var systemLineBreak = require('os').EOL;\n\nvar override = require('../utils/override');\n\nvar Breaks = {\n AfterAtRule: 'afterAtRule',\n AfterBlockBegins: 'afterBlockBegins',\n AfterBlockEnds: 'afterBlockEnds',\n AfterComment: 'afterComment',\n AfterProperty: 'afterProperty',\n AfterRuleBegins: 'afterRuleBegins',\n AfterRuleEnds: 'afterRuleEnds',\n BeforeBlockEnds: 'beforeBlockEnds',\n BetweenSelectors: 'betweenSelectors'\n};\n\nvar BreakWith = {\n CarriageReturnLineFeed: '\\r\\n',\n LineFeed: '\\n',\n System: systemLineBreak\n};\n\nvar IndentWith = {\n Space: ' ',\n Tab: '\\t'\n};\n\nvar Spaces = {\n AroundSelectorRelation: 'aroundSelectorRelation',\n BeforeBlockBegins: 'beforeBlockBegins',\n BeforeValue: 'beforeValue'\n};\n\nvar DEFAULTS = {\n breaks: breaks(false),\n breakWith: BreakWith.System,\n indentBy: 0,\n indentWith: IndentWith.Space,\n spaces: spaces(false),\n wrapAt: false,\n semicolonAfterLastProperty: false\n};\n\nvar BEAUTIFY_ALIAS = 'beautify';\nvar KEEP_BREAKS_ALIAS = 'keep-breaks';\n\nvar OPTION_SEPARATOR = ';';\nvar OPTION_NAME_VALUE_SEPARATOR = ':';\nvar HASH_VALUES_OPTION_SEPARATOR = ',';\nvar HASH_VALUES_NAME_VALUE_SEPARATOR = '=';\n\nvar FALSE_KEYWORD_1 = 'false';\nvar FALSE_KEYWORD_2 = 'off';\nvar TRUE_KEYWORD_1 = 'true';\nvar TRUE_KEYWORD_2 = 'on';\n\nfunction breaks(value) {\n var breakOptions = {};\n\n breakOptions[Breaks.AfterAtRule] = value;\n breakOptions[Breaks.AfterBlockBegins] = value;\n breakOptions[Breaks.AfterBlockEnds] = value;\n breakOptions[Breaks.AfterComment] = value;\n breakOptions[Breaks.AfterProperty] = value;\n breakOptions[Breaks.AfterRuleBegins] = value;\n breakOptions[Breaks.AfterRuleEnds] = value;\n breakOptions[Breaks.BeforeBlockEnds] = value;\n breakOptions[Breaks.BetweenSelectors] = value;\n\n return breakOptions;\n}\n\nfunction spaces(value) {\n var spaceOptions = {};\n\n spaceOptions[Spaces.AroundSelectorRelation] = value;\n spaceOptions[Spaces.BeforeBlockBegins] = value;\n spaceOptions[Spaces.BeforeValue] = value;\n\n return spaceOptions;\n}\n\nfunction formatFrom(source) {\n if (source === undefined || source === false) {\n return false;\n }\n\n if (typeof source == 'object' && 'breakWith' in source) {\n source = override(source, { breakWith: mapBreakWith(source.breakWith) });\n }\n\n if (typeof source == 'object' && 'indentBy' in source) {\n source = override(source, { indentBy: parseInt(source.indentBy) });\n }\n\n if (typeof source == 'object' && 'indentWith' in source) {\n source = override(source, { indentWith: mapIndentWith(source.indentWith) });\n }\n\n if (typeof source == 'object') {\n return remapBreaks(override(DEFAULTS, source));\n }\n\n if (typeof source == 'string' && source == BEAUTIFY_ALIAS) {\n return remapBreaks(\n override(DEFAULTS, {\n breaks: breaks(true),\n indentBy: 2,\n spaces: spaces(true)\n })\n );\n }\n\n if (typeof source == 'string' && source == KEEP_BREAKS_ALIAS) {\n return remapBreaks(\n override(DEFAULTS, {\n breaks: {\n afterAtRule: true,\n afterBlockBegins: true,\n afterBlockEnds: true,\n afterComment: true,\n afterRuleEnds: true,\n beforeBlockEnds: true\n }\n })\n );\n }\n\n if (typeof source == 'string') {\n return remapBreaks(override(DEFAULTS, toHash(source)));\n }\n\n return DEFAULTS;\n}\n\nfunction toHash(string) {\n return string\n .split(OPTION_SEPARATOR)\n .reduce(function (accumulator, directive) {\n var parts = directive.split(OPTION_NAME_VALUE_SEPARATOR);\n var name = parts[0];\n var value = parts[1];\n\n if (name == 'breaks' || name == 'spaces') {\n accumulator[name] = hashValuesToHash(value);\n } else if (name == 'indentBy' || name == 'wrapAt') {\n accumulator[name] = parseInt(value);\n } else if (name == 'indentWith') {\n accumulator[name] = mapIndentWith(value);\n } else if (name == 'breakWith') {\n accumulator[name] = mapBreakWith(value);\n }\n\n return accumulator;\n }, {});\n}\n\nfunction hashValuesToHash(string) {\n return string\n .split(HASH_VALUES_OPTION_SEPARATOR)\n .reduce(function (accumulator, directive) {\n var parts = directive.split(HASH_VALUES_NAME_VALUE_SEPARATOR);\n var name = parts[0];\n var value = parts[1];\n\n accumulator[name] = normalizeValue(value);\n\n return accumulator;\n }, {});\n}\n\n\nfunction normalizeValue(value) {\n switch (value) {\n case FALSE_KEYWORD_1:\n case FALSE_KEYWORD_2:\n return false;\n case TRUE_KEYWORD_1:\n case TRUE_KEYWORD_2:\n return true;\n default:\n return value;\n }\n}\n\nfunction mapBreakWith(value) {\n switch (value) {\n case 'windows':\n case 'crlf':\n case BreakWith.CarriageReturnLineFeed:\n return BreakWith.CarriageReturnLineFeed;\n case 'unix':\n case 'lf':\n case BreakWith.LineFeed:\n return BreakWith.LineFeed;\n default:\n return systemLineBreak;\n }\n}\n\nfunction mapIndentWith(value) {\n switch (value) {\n case 'space':\n return IndentWith.Space;\n case 'tab':\n return IndentWith.Tab;\n default:\n return value;\n }\n}\n\nfunction remapBreaks(source) {\n for (var key in Breaks) {\n var breakName = Breaks[key];\n var breakValue = source.breaks[breakName];\n\n if (breakValue === true) {\n source.breaks[breakName] = source.breakWith;\n } else if (breakValue === false) {\n source.breaks[breakName] = '';\n } else {\n source.breaks[breakName] = source.breakWith.repeat(parseInt(breakValue));\n }\n }\n\n return source;\n}\n\nmodule.exports = {\n Breaks: Breaks,\n Spaces: Spaces,\n formatFrom: formatFrom\n};\n","var Marker = {\n ASTERISK: '*',\n AT: '@',\n BACK_SLASH: '\\\\',\n CARRIAGE_RETURN: '\\r',\n CLOSE_CURLY_BRACKET: '}',\n CLOSE_ROUND_BRACKET: ')',\n CLOSE_SQUARE_BRACKET: ']',\n COLON: ':',\n COMMA: ',',\n DOUBLE_QUOTE: '\"',\n EXCLAMATION: '!',\n FORWARD_SLASH: '/',\n INTERNAL: '-clean-css-',\n NEW_LINE_NIX: '\\n',\n OPEN_CURLY_BRACKET: '{',\n OPEN_ROUND_BRACKET: '(',\n OPEN_SQUARE_BRACKET: '[',\n SEMICOLON: ';',\n SINGLE_QUOTE: '\\'',\n SPACE: ' ',\n TAB: '\\t',\n UNDERSCORE: '_'\n};\n\nmodule.exports = Marker;\n","function formatPosition(metadata) {\n var line = metadata[0];\n var column = metadata[1];\n var source = metadata[2];\n\n return source ?\n source + ':' + line + ':' + column :\n line + ':' + column;\n}\n\nmodule.exports = formatPosition;\n","var Spaces = require('../../options/format').Spaces;\nvar Marker = require('../../tokenizer/marker');\nvar formatPosition = require('../../utils/format-position');\n\nvar CASE_ATTRIBUTE_PATTERN = /[\\s\"'][iI]\\s*\\]/;\nvar CASE_RESTORE_PATTERN = /([\\d\\w])([iI])\\]/g;\nvar DOUBLE_QUOTE_CASE_PATTERN = /=\"([a-zA-Z][a-zA-Z\\d\\-_]+)\"([iI])/g;\nvar DOUBLE_QUOTE_PATTERN = /=\"([a-zA-Z][a-zA-Z\\d\\-_]+)\"(\\s|\\])/g;\nvar HTML_COMMENT_PATTERN = /^(?:(?:<!--|-->)\\s*)+/;\nvar SINGLE_QUOTE_CASE_PATTERN = /='([a-zA-Z][a-zA-Z\\d\\-_]+)'([iI])/g;\nvar SINGLE_QUOTE_PATTERN = /='([a-zA-Z][a-zA-Z\\d\\-_]+)'(\\s|\\])/g;\nvar RELATION_PATTERN = /[>\\+~]/;\nvar WHITESPACE_PATTERN = /\\s/;\n\nvar ASTERISK_PLUS_HTML_HACK = '*+html ';\nvar ASTERISK_FIRST_CHILD_PLUS_HTML_HACK = '*:first-child+html ';\nvar LESS_THAN = '<';\n\nvar PSEUDO_CLASSES_WITH_SELECTORS = [\n ':current',\n ':future',\n ':has',\n ':host',\n ':host-context',\n ':is',\n ':not',\n ':past',\n ':where'\n];\n\nfunction hasInvalidCharacters(value) {\n var isEscaped;\n var isInvalid = false;\n var character;\n var isQuote = false;\n var i, l;\n\n for (i = 0, l = value.length; i < l; i++) {\n character = value[i];\n\n if (isEscaped) {\n // continue as always\n } else if (character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) {\n isQuote = !isQuote;\n } else if (!isQuote && (character == Marker.CLOSE_CURLY_BRACKET || character == Marker.EXCLAMATION || character == LESS_THAN || character == Marker.SEMICOLON)) {\n isInvalid = true;\n break;\n } else if (!isQuote && i === 0 && RELATION_PATTERN.test(character)) {\n isInvalid = true;\n break;\n }\n\n isEscaped = character == Marker.BACK_SLASH;\n }\n\n return isInvalid;\n}\n\nfunction removeWhitespace(value, format) {\n var stripped = [];\n var character;\n var isNewLineNix;\n var isNewLineWin;\n var isEscaped;\n var wasEscaped;\n var isQuoted;\n var isSingleQuoted;\n var isDoubleQuoted;\n var isAttribute;\n var isRelation;\n var isWhitespace;\n var isSpaceAwarePseudoClass;\n var roundBracketLevel = 0;\n var wasComma = false;\n var wasRelation = false;\n var wasWhitespace = false;\n var withCaseAttribute = CASE_ATTRIBUTE_PATTERN.test(value);\n var spaceAroundRelation = format && format.spaces[Spaces.AroundSelectorRelation];\n var i, l;\n\n for (i = 0, l = value.length; i < l; i++) {\n character = value[i];\n\n isNewLineNix = character == Marker.NEW_LINE_NIX;\n isNewLineWin = character == Marker.NEW_LINE_NIX && value[i - 1] == Marker.CARRIAGE_RETURN;\n isQuoted = isSingleQuoted || isDoubleQuoted;\n isRelation = !isAttribute && !isEscaped && roundBracketLevel === 0 && RELATION_PATTERN.test(character);\n isWhitespace = WHITESPACE_PATTERN.test(character);\n isSpaceAwarePseudoClass = roundBracketLevel == 1 && character == Marker.CLOSE_ROUND_BRACKET ?\n false :\n isSpaceAwarePseudoClass || (roundBracketLevel === 0 && character == Marker.COLON && isPseudoClassWithSelectors(value, i));\n\n if (wasEscaped && isQuoted && isNewLineWin) {\n // swallow escaped new windows lines in comments\n stripped.pop();\n stripped.pop();\n } else if (isEscaped && isQuoted && isNewLineNix) {\n // swallow escaped new *nix lines in comments\n stripped.pop();\n } else if (isEscaped) {\n stripped.push(character);\n } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuoted) {\n stripped.push(character);\n isAttribute = true;\n } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuoted) {\n stripped.push(character);\n isAttribute = false;\n } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted) {\n stripped.push(character);\n roundBracketLevel++;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted) {\n stripped.push(character);\n roundBracketLevel--;\n } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {\n stripped.push(character);\n isSingleQuoted = true;\n } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {\n stripped.push(character);\n isDoubleQuoted = true;\n } else if (character == Marker.SINGLE_QUOTE && isQuoted) {\n stripped.push(character);\n isSingleQuoted = false;\n } else if (character == Marker.DOUBLE_QUOTE && isQuoted) {\n stripped.push(character);\n isDoubleQuoted = false;\n } else if (isWhitespace && wasRelation && !spaceAroundRelation) {\n continue;\n } else if (!isWhitespace && wasRelation && spaceAroundRelation) {\n stripped.push(Marker.SPACE);\n stripped.push(character);\n } else if (isWhitespace && !wasWhitespace && wasComma && roundBracketLevel > 0 && isSpaceAwarePseudoClass) {\n // skip space\n } else if (isWhitespace && !wasWhitespace && roundBracketLevel > 0 && isSpaceAwarePseudoClass) {\n stripped.push(character);\n } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) {\n // skip space\n } else if (isWhitespace && wasWhitespace && !isQuoted) {\n // skip extra space\n } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) {\n // skip newline\n } else if (isRelation && wasWhitespace && !spaceAroundRelation) {\n stripped.pop();\n stripped.push(character);\n } else if (isRelation && !wasWhitespace && spaceAroundRelation) {\n stripped.push(Marker.SPACE);\n stripped.push(character);\n } else if (isWhitespace) {\n stripped.push(Marker.SPACE);\n } else {\n stripped.push(character);\n }\n\n wasEscaped = isEscaped;\n isEscaped = character == Marker.BACK_SLASH;\n wasRelation = isRelation;\n wasWhitespace = isWhitespace;\n wasComma = character == Marker.COMMA;\n }\n\n return withCaseAttribute ?\n stripped.join('').replace(CASE_RESTORE_PATTERN, '$1 $2]') :\n stripped.join('');\n}\n\nfunction isPseudoClassWithSelectors(value, colonPosition) {\n var pseudoClass = value.substring(colonPosition, value.indexOf(Marker.OPEN_ROUND_BRACKET, colonPosition));\n\n return PSEUDO_CLASSES_WITH_SELECTORS.indexOf(pseudoClass) > -1;\n}\n\nfunction removeQuotes(value) {\n if (value.indexOf('\\'') == -1 && value.indexOf('\"') == -1) {\n return value;\n }\n\n return value\n .replace(SINGLE_QUOTE_CASE_PATTERN, '=$1 $2')\n .replace(SINGLE_QUOTE_PATTERN, '=$1$2')\n .replace(DOUBLE_QUOTE_CASE_PATTERN, '=$1 $2')\n .replace(DOUBLE_QUOTE_PATTERN, '=$1$2');\n}\n\nfunction tidyRules(rules, removeUnsupported, adjacentSpace, format, warnings) {\n var list = [];\n var repeated = [];\n\n function removeHTMLComment(rule, match) {\n warnings.push('HTML comment \\'' + match + '\\' at ' + formatPosition(rule[2][0]) + '. Removing.');\n return '';\n }\n\n for (var i = 0, l = rules.length; i < l; i++) {\n var rule = rules[i];\n var reduced = rule[1];\n\n reduced = reduced.replace(HTML_COMMENT_PATTERN, removeHTMLComment.bind(null, rule));\n\n if (hasInvalidCharacters(reduced)) {\n warnings.push('Invalid selector \\'' + rule[1] + '\\' at ' + formatPosition(rule[2][0]) + '. Ignoring.');\n continue;\n }\n\n reduced = removeWhitespace(reduced, format);\n reduced = removeQuotes(reduced);\n\n if (adjacentSpace && reduced.indexOf('nav') > 0) {\n reduced = reduced.replace(/\\+nav(\\S|$)/, '+ nav$1');\n }\n\n if (removeUnsupported && reduced.indexOf(ASTERISK_PLUS_HTML_HACK) > -1) {\n continue;\n }\n\n if (removeUnsupported && reduced.indexOf(ASTERISK_FIRST_CHILD_PLUS_HTML_HACK) > -1) {\n continue;\n }\n\n if (reduced.indexOf('*') > -1) {\n reduced = reduced\n .replace(/\\*([:#\\.\\[])/g, '$1')\n .replace(/^(\\:first\\-child)?\\+html/, '*$1+html');\n }\n\n if (repeated.indexOf(reduced) > -1) {\n continue;\n }\n\n rule[1] = reduced;\n repeated.push(reduced);\n list.push(rule);\n }\n\n if (list.length == 1 && list[0][1].length === 0) {\n warnings.push('Empty selector \\'' + list[0][1] + '\\' at ' + formatPosition(list[0][2][0]) + '. Ignoring.');\n list = [];\n }\n\n return list;\n}\n\nmodule.exports = tidyRules;\n","var SUPPORTED_COMPACT_BLOCK_MATCHER = /^@media\\W/;\nvar SUPPORTED_QUOTE_REMOVAL_MATCHER = /^@(?:keyframes|-moz-keyframes|-o-keyframes|-webkit-keyframes)\\W/;\n\nfunction tidyBlock(values, spaceAfterClosingBrace) {\n var withoutSpaceAfterClosingBrace;\n var withoutQuotes;\n var i;\n\n for (i = values.length - 1; i >= 0; i--) {\n withoutSpaceAfterClosingBrace = !spaceAfterClosingBrace && SUPPORTED_COMPACT_BLOCK_MATCHER.test(values[i][1]);\n withoutQuotes = SUPPORTED_QUOTE_REMOVAL_MATCHER.test(values[i][1]);\n\n values[i][1] = values[i][1]\n .replace(/\\n|\\r\\n/g, ' ')\n .replace(/\\s+/g, ' ')\n .replace(/(,|:|\\() /g, '$1')\n .replace(/ \\)/g, ')');\n\n if (withoutQuotes) {\n values[i][1] = values[i][1]\n .replace(/'([a-zA-Z][a-zA-Z\\d\\-_]+)'/, '$1')\n .replace(/\"([a-zA-Z][a-zA-Z\\d\\-_]+)\"/, '$1');\n }\n\n if (withoutSpaceAfterClosingBrace) {\n values[i][1] = values[i][1]\n .replace(/\\) /g, ')');\n }\n }\n\n return values;\n}\n\nmodule.exports = tidyBlock;\n","function tidyAtRule(value) {\n return value\n .replace(/\\s+/g, ' ')\n .replace(/url\\(\\s+/g, 'url(')\n .replace(/\\s+\\)/g, ')')\n .trim();\n}\n\nmodule.exports = tidyAtRule;\n","var Hack = {\n ASTERISK: 'asterisk',\n BANG: 'bang',\n BACKSLASH: 'backslash',\n UNDERSCORE: 'underscore'\n};\n\nmodule.exports = Hack;\n","function removeUnused(properties) {\n for (var i = properties.length - 1; i >= 0; i--) {\n var property = properties[i];\n\n if (property.unused) {\n property.all.splice(property.position, 1);\n }\n }\n}\n\nmodule.exports = removeUnused;\n","var Hack = require('./hack');\n\nvar Marker = require('../tokenizer/marker');\n\nvar ASTERISK_HACK = '*';\nvar BACKSLASH_HACK = '\\\\';\nvar IMPORTANT_TOKEN = '!important';\nvar UNDERSCORE_HACK = '_';\nvar BANG_HACK = '!ie';\n\nfunction restoreFromOptimizing(properties, restoreCallback) {\n var property;\n var restored;\n var current;\n var i;\n\n for (i = properties.length - 1; i >= 0; i--) {\n property = properties[i];\n\n if (property.dynamic && property.important) {\n restoreImportant(property);\n continue;\n }\n\n if (property.dynamic) {\n continue;\n }\n\n if (property.unused) {\n continue;\n }\n\n if (!property.dirty && !property.important && !property.hack) {\n continue;\n }\n\n if (property.optimizable && restoreCallback) {\n restored = restoreCallback(property);\n property.value = restored;\n } else {\n restored = property.value;\n }\n\n if (property.important) {\n restoreImportant(property);\n }\n\n if (property.hack) {\n restoreHack(property);\n }\n\n if ('all' in property) {\n current = property.all[property.position];\n current[1][1] = property.name;\n\n current.splice(2, current.length - 1);\n Array.prototype.push.apply(current, restored);\n }\n }\n}\n\nfunction restoreImportant(property) {\n property.value[property.value.length - 1][1] += IMPORTANT_TOKEN;\n}\n\nfunction restoreHack(property) {\n if (property.hack[0] == Hack.UNDERSCORE) {\n property.name = UNDERSCORE_HACK + property.name;\n } else if (property.hack[0] == Hack.ASTERISK) {\n property.name = ASTERISK_HACK + property.name;\n } else if (property.hack[0] == Hack.BACKSLASH) {\n property.value[property.value.length - 1][1] += BACKSLASH_HACK + property.hack[1];\n } else if (property.hack[0] == Hack.BANG) {\n property.value[property.value.length - 1][1] += Marker.SPACE + BANG_HACK;\n }\n}\n\nmodule.exports = restoreFromOptimizing;\n","var Token = {\n AT_RULE: 'at-rule', // e.g. `@import`, `@charset`\n AT_RULE_BLOCK: 'at-rule-block', // e.g. `@font-face{...}`\n AT_RULE_BLOCK_SCOPE: 'at-rule-block-scope', // e.g. `@font-face`\n COMMENT: 'comment', // e.g. `/* comment */`\n NESTED_BLOCK: 'nested-block', // e.g. `@media screen{...}`, `@keyframes animation {...}`\n NESTED_BLOCK_SCOPE: 'nested-block-scope', // e.g. `@media`, `@keyframes`\n PROPERTY: 'property', // e.g. `color:red`\n PROPERTY_BLOCK: 'property-block', // e.g. `--var:{color:red}`\n PROPERTY_NAME: 'property-name', // e.g. `color`\n PROPERTY_VALUE: 'property-value', // e.g. `red`\n RAW: 'raw', // e.g. anything between /* clean-css ignore:start */ and /* clean-css ignore:end */ comments\n RULE: 'rule', // e.g `div > a{...}`\n RULE_SCOPE: 'rule-scope' // e.g `div > a`\n};\n\nmodule.exports = Token;\n","var Hack = require('./hack');\n\nvar Marker = require('../tokenizer/marker');\nvar Token = require('../tokenizer/token');\n\nvar Match = {\n ASTERISK: '*',\n BACKSLASH: '\\\\',\n BANG: '!',\n BANG_SUFFIX_PATTERN: /!\\w+$/,\n IMPORTANT_TOKEN: '!important',\n IMPORTANT_TOKEN_PATTERN: new RegExp('!important$', 'i'),\n IMPORTANT_WORD: 'important',\n IMPORTANT_WORD_PATTERN: new RegExp('important$', 'i'),\n SUFFIX_BANG_PATTERN: /!$/,\n UNDERSCORE: '_',\n VARIABLE_REFERENCE_PATTERN: /var\\(--.+\\)$/\n};\n\nfunction wrapAll(properties, skipProperties) {\n var wrapped = [];\n var single;\n var property;\n var i;\n\n for (i = properties.length - 1; i >= 0; i--) {\n property = properties[i];\n\n if (property[0] != Token.PROPERTY) {\n continue;\n }\n\n if (skipProperties && skipProperties.indexOf(property[1][1]) > -1) {\n continue;\n }\n\n single = wrapSingle(property);\n single.all = properties;\n single.position = i;\n wrapped.unshift(single);\n }\n\n return wrapped;\n}\n\nfunction someVariableReferences(property) {\n var i, l;\n var value;\n\n // skipping `property` and property name tokens\n for (i = 2, l = property.length; i < l; i++) {\n value = property[i];\n\n if (value[0] != Token.PROPERTY_VALUE) {\n continue;\n }\n\n if (isVariableReference(value[1])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isVariableReference(value) {\n return Match.VARIABLE_REFERENCE_PATTERN.test(value);\n}\n\nfunction isMultiplex(property) {\n var value;\n var i, l;\n\n for (i = 3, l = property.length; i < l; i++) {\n value = property[i];\n\n if (value[0] == Token.PROPERTY_VALUE && (value[1] == Marker.COMMA || value[1] == Marker.FORWARD_SLASH)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hackFrom(property) {\n var match = false;\n var name = property[1][1];\n var lastValue = property[property.length - 1];\n\n if (name[0] == Match.UNDERSCORE) {\n match = [Hack.UNDERSCORE];\n } else if (name[0] == Match.ASTERISK) {\n match = [Hack.ASTERISK];\n } else if (lastValue[1][0] == Match.BANG && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN)) {\n match = [Hack.BANG];\n } else if (lastValue[1].indexOf(Match.BANG) > 0 && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN) && Match.BANG_SUFFIX_PATTERN.test(lastValue[1])) {\n match = [Hack.BANG];\n } else if (lastValue[1].indexOf(Match.BACKSLASH) > 0 && lastValue[1].indexOf(Match.BACKSLASH) == lastValue[1].length - Match.BACKSLASH.length - 1) {\n match = [Hack.BACKSLASH, lastValue[1].substring(lastValue[1].indexOf(Match.BACKSLASH) + 1)];\n } else if (lastValue[1].indexOf(Match.BACKSLASH) === 0 && lastValue[1].length == 2) {\n match = [Hack.BACKSLASH, lastValue[1].substring(1)];\n }\n\n return match;\n}\n\nfunction isImportant(property) {\n if (property.length < 3)\n return false;\n\n var lastValue = property[property.length - 1];\n if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {\n return true;\n } else if (Match.IMPORTANT_WORD_PATTERN.test(lastValue[1]) && Match.SUFFIX_BANG_PATTERN.test(property[property.length - 2][1])) {\n return true;\n }\n\n return false;\n}\n\nfunction stripImportant(property) {\n var lastValue = property[property.length - 1];\n var oneButLastValue = property[property.length - 2];\n\n if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) {\n lastValue[1] = lastValue[1].replace(Match.IMPORTANT_TOKEN_PATTERN, '');\n } else {\n lastValue[1] = lastValue[1].replace(Match.IMPORTANT_WORD_PATTERN, '');\n oneButLastValue[1] = oneButLastValue[1].replace(Match.SUFFIX_BANG_PATTERN, '');\n }\n\n if (lastValue[1].length === 0) {\n property.pop();\n }\n\n if (oneButLastValue[1].length === 0) {\n property.pop();\n }\n}\n\nfunction stripPrefixHack(property) {\n property[1][1] = property[1][1].substring(1);\n}\n\nfunction stripSuffixHack(property, hackFrom) {\n var lastValue = property[property.length - 1];\n lastValue[1] = lastValue[1]\n .substring(0, lastValue[1].indexOf(hackFrom[0] == Hack.BACKSLASH ? Match.BACKSLASH : Match.BANG))\n .trim();\n\n if (lastValue[1].length === 0) {\n property.pop();\n }\n}\n\nfunction wrapSingle(property) {\n var importantProperty = isImportant(property);\n if (importantProperty) {\n stripImportant(property);\n }\n\n var whichHack = hackFrom(property);\n if (whichHack[0] == Hack.ASTERISK || whichHack[0] == Hack.UNDERSCORE) {\n stripPrefixHack(property);\n } else if (whichHack[0] == Hack.BACKSLASH || whichHack[0] == Hack.BANG) {\n stripSuffixHack(property, whichHack);\n }\n\n return {\n block: property[2] && property[2][0] == Token.PROPERTY_BLOCK,\n components: [],\n dirty: false,\n dynamic: someVariableReferences(property),\n hack: whichHack,\n important: importantProperty,\n name: property[1][1],\n multiplex: property.length > 3 ? isMultiplex(property) : false,\n optimizable: true,\n position: 0,\n shorthand: false,\n unused: false,\n value: property.slice(2)\n };\n}\n\nmodule.exports = {\n all: wrapAll,\n single: wrapSingle\n};\n","function InvalidPropertyError(message) {\n this.name = 'InvalidPropertyError';\n this.message = message;\n this.stack = (new Error()).stack;\n}\n\nInvalidPropertyError.prototype = Object.create(Error.prototype);\nInvalidPropertyError.prototype.constructor = InvalidPropertyError;\n\nmodule.exports = InvalidPropertyError;\n","var InvalidPropertyError = require('../invalid-property-error');\n\nvar wrapSingle = require('../wrap-for-optimizing').single;\n\nvar Token = require('../../tokenizer/token');\nvar Marker = require('../../tokenizer/marker');\n\nvar formatPosition = require('../../utils/format-position');\n\nfunction _anyIsInherit(values) {\n var i, l;\n\n for (i = 0, l = values.length; i < l; i++) {\n if (values[i][1] == 'inherit') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction _colorFilter(validator) {\n return function (value) {\n return value[1] == 'invert' || validator.isColor(value[1]) || validator.isPrefixed(value[1]);\n };\n}\n\nfunction _styleFilter(validator) {\n return function (value) {\n return value[1] != 'inherit' && validator.isStyleKeyword(value[1]) && !validator.isColorFunction(value[1]);\n };\n}\n\nfunction _wrapDefault(name, property, configuration) {\n var descriptor = configuration[name];\n if (descriptor.doubleValues && descriptor.defaultValue.length == 2) {\n return wrapSingle([\n Token.PROPERTY,\n [Token.PROPERTY_NAME, name],\n [Token.PROPERTY_VALUE, descriptor.defaultValue[0]],\n [Token.PROPERTY_VALUE, descriptor.defaultValue[1]]\n ]);\n } else if (descriptor.doubleValues && descriptor.defaultValue.length == 1) {\n return wrapSingle([\n Token.PROPERTY,\n [Token.PROPERTY_NAME, name],\n [Token.PROPERTY_VALUE, descriptor.defaultValue[0]]\n ]);\n } else {\n return wrapSingle([\n Token.PROPERTY,\n [Token.PROPERTY_NAME, name],\n [Token.PROPERTY_VALUE, descriptor.defaultValue]\n ]);\n }\n}\n\nfunction _widthFilter(validator) {\n return function (value) {\n return value[1] != 'inherit' &&\n (validator.isWidth(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) &&\n !validator.isStyleKeyword(value[1]) &&\n !validator.isColorFunction(value[1]);\n };\n}\n\nfunction animation(property, configuration, validator) {\n var duration = _wrapDefault(property.name + '-duration', property, configuration);\n var timing = _wrapDefault(property.name + '-timing-function', property, configuration);\n var delay = _wrapDefault(property.name + '-delay', property, configuration);\n var iteration = _wrapDefault(property.name + '-iteration-count', property, configuration);\n var direction = _wrapDefault(property.name + '-direction', property, configuration);\n var fill = _wrapDefault(property.name + '-fill-mode', property, configuration);\n var play = _wrapDefault(property.name + '-play-state', property, configuration);\n var name = _wrapDefault(property.name + '-name', property, configuration);\n var components = [duration, timing, delay, iteration, direction, fill, play, name];\n var values = property.value;\n var value;\n var durationSet = false;\n var timingSet = false;\n var delaySet = false;\n var iterationSet = false;\n var directionSet = false;\n var fillSet = false;\n var playSet = false;\n var nameSet = false;\n var i;\n var l;\n\n if (property.value.length == 1 && property.value[0][1] == 'inherit') {\n duration.value = timing.value = delay.value = iteration.value = direction.value = fill.value = play.value = name.value = property.value;\n return components;\n }\n\n if (values.length > 1 && _anyIsInherit(values)) {\n throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n for (i = 0, l = values.length; i < l; i++) {\n value = values[i];\n\n if (validator.isTime(value[1]) && !durationSet) {\n duration.value = [value];\n durationSet = true;\n } else if (validator.isTime(value[1]) && !delaySet) {\n delay.value = [value];\n delaySet = true;\n } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {\n timing.value = [value];\n timingSet = true;\n } else if ((validator.isAnimationIterationCountKeyword(value[1]) || validator.isPositiveNumber(value[1])) && !iterationSet) {\n iteration.value = [value];\n iterationSet = true;\n } else if (validator.isAnimationDirectionKeyword(value[1]) && !directionSet) {\n direction.value = [value];\n directionSet = true;\n } else if (validator.isAnimationFillModeKeyword(value[1]) && !fillSet) {\n fill.value = [value];\n fillSet = true;\n } else if (validator.isAnimationPlayStateKeyword(value[1]) && !playSet) {\n play.value = [value];\n playSet = true;\n } else if ((validator.isAnimationNameKeyword(value[1]) || validator.isIdentifier(value[1])) && !nameSet) {\n name.value = [value];\n nameSet = true;\n } else {\n throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');\n }\n }\n\n return components;\n}\n\nfunction background(property, configuration, validator) {\n var image = _wrapDefault('background-image', property, configuration);\n var position = _wrapDefault('background-position', property, configuration);\n var size = _wrapDefault('background-size', property, configuration);\n var repeat = _wrapDefault('background-repeat', property, configuration);\n var attachment = _wrapDefault('background-attachment', property, configuration);\n var origin = _wrapDefault('background-origin', property, configuration);\n var clip = _wrapDefault('background-clip', property, configuration);\n var color = _wrapDefault('background-color', property, configuration);\n var components = [image, position, size, repeat, attachment, origin, clip, color];\n var values = property.value;\n\n var positionSet = false;\n var clipSet = false;\n var originSet = false;\n var repeatSet = false;\n\n var anyValueSet = false;\n\n if (property.value.length == 1 && property.value[0][1] == 'inherit') {\n // NOTE: 'inherit' is not a valid value for background-attachment\n color.value = image.value = repeat.value = position.value = size.value = origin.value = clip.value = property.value;\n return components;\n }\n\n if (property.value.length == 1 && property.value[0][1] == '0 0') {\n return components;\n }\n\n for (var i = values.length - 1; i >= 0; i--) {\n var value = values[i];\n\n if (validator.isBackgroundAttachmentKeyword(value[1])) {\n attachment.value = [value];\n anyValueSet = true;\n } else if (validator.isBackgroundClipKeyword(value[1]) || validator.isBackgroundOriginKeyword(value[1])) {\n if (clipSet) {\n origin.value = [value];\n originSet = true;\n } else {\n clip.value = [value];\n clipSet = true;\n }\n anyValueSet = true;\n } else if (validator.isBackgroundRepeatKeyword(value[1])) {\n if (repeatSet) {\n repeat.value.unshift(value);\n } else {\n repeat.value = [value];\n repeatSet = true;\n }\n anyValueSet = true;\n } else if (validator.isBackgroundPositionKeyword(value[1]) || validator.isBackgroundSizeKeyword(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) {\n if (i > 0) {\n var previousValue = values[i - 1];\n\n if (previousValue[1] == Marker.FORWARD_SLASH) {\n size.value = [value];\n } else if (i > 1 && values[i - 2][1] == Marker.FORWARD_SLASH) {\n size.value = [previousValue, value];\n i -= 2;\n } else {\n if (!positionSet)\n position.value = [];\n\n position.value.unshift(value);\n positionSet = true;\n }\n } else {\n if (!positionSet)\n position.value = [];\n\n position.value.unshift(value);\n positionSet = true;\n }\n anyValueSet = true;\n } else if ((color.value[0][1] == configuration[color.name].defaultValue || color.value[0][1] == 'none') && (validator.isColor(value[1]) || validator.isPrefixed(value[1]))) {\n color.value = [value];\n anyValueSet = true;\n } else if (validator.isUrl(value[1]) || validator.isFunction(value[1])) {\n image.value = [value];\n anyValueSet = true;\n }\n }\n\n if (clipSet && !originSet)\n origin.value = clip.value.slice(0);\n\n if (!anyValueSet) {\n throw new InvalidPropertyError('Invalid background value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n return components;\n}\n\nfunction borderRadius(property, configuration) {\n var values = property.value;\n var splitAt = -1;\n\n for (var i = 0, l = values.length; i < l; i++) {\n if (values[i][1] == Marker.FORWARD_SLASH) {\n splitAt = i;\n break;\n }\n }\n\n if (splitAt === 0 || splitAt === values.length - 1) {\n throw new InvalidPropertyError('Invalid border-radius value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n var target = _wrapDefault(property.name, property, configuration);\n target.value = splitAt > -1 ?\n values.slice(0, splitAt) :\n values.slice(0);\n target.components = fourValues(target, configuration);\n\n var remainder = _wrapDefault(property.name, property, configuration);\n remainder.value = splitAt > -1 ?\n values.slice(splitAt + 1) :\n values.slice(0);\n remainder.components = fourValues(remainder, configuration);\n\n for (var j = 0; j < 4; j++) {\n target.components[j].multiplex = true;\n target.components[j].value = target.components[j].value.concat(remainder.components[j].value);\n }\n\n return target.components;\n}\n\nfunction font(property, configuration, validator) {\n var style = _wrapDefault('font-style', property, configuration);\n var variant = _wrapDefault('font-variant', property, configuration);\n var weight = _wrapDefault('font-weight', property, configuration);\n var stretch = _wrapDefault('font-stretch', property, configuration);\n var size = _wrapDefault('font-size', property, configuration);\n var height = _wrapDefault('line-height', property, configuration);\n var family = _wrapDefault('font-family', property, configuration);\n var components = [style, variant, weight, stretch, size, height, family];\n var values = property.value;\n var fuzzyMatched = 4; // style, variant, weight, and stretch\n var index = 0;\n var isStretchSet = false;\n var isStretchValid;\n var isStyleSet = false;\n var isStyleValid;\n var isVariantSet = false;\n var isVariantValid;\n var isWeightSet = false;\n var isWeightValid;\n var isSizeSet = false;\n var appendableFamilyName = false;\n\n if (!values[index]) {\n throw new InvalidPropertyError('Missing font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');\n }\n\n if (values.length == 1 && values[0][1] == 'inherit') {\n style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;\n return components;\n }\n\n if (values.length == 1 && (validator.isFontKeyword(values[0][1]) || validator.isGlobal(values[0][1]) || validator.isPrefixed(values[0][1]))) {\n values[0][1] = Marker.INTERNAL + values[0][1];\n style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values;\n return components;\n }\n\n if (values.length < 2 || !_anyIsFontSize(values, validator) || !_anyIsFontFamily(values, validator)) {\n throw new InvalidPropertyError('Invalid font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.');\n }\n\n if (values.length > 1 && _anyIsInherit(values)) {\n throw new InvalidPropertyError('Invalid font values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n // fuzzy match style, variant, weight, and stretch on first elements\n while (index < fuzzyMatched) {\n isStretchValid = validator.isFontStretchKeyword(values[index][1]) || validator.isGlobal(values[index][1]);\n isStyleValid = validator.isFontStyleKeyword(values[index][1]) || validator.isGlobal(values[index][1]);\n isVariantValid = validator.isFontVariantKeyword(values[index][1]) || validator.isGlobal(values[index][1]);\n isWeightValid = validator.isFontWeightKeyword(values[index][1]) || validator.isGlobal(values[index][1]);\n\n if (isStyleValid && !isStyleSet) {\n style.value = [values[index]];\n isStyleSet = true;\n } else if (isVariantValid && !isVariantSet) {\n variant.value = [values[index]];\n isVariantSet = true;\n } else if (isWeightValid && !isWeightSet) {\n weight.value = [values[index]];\n isWeightSet = true;\n } else if (isStretchValid && !isStretchSet) {\n stretch.value = [values[index]];\n isStretchSet = true;\n } else if (isStyleValid && isStyleSet || isVariantValid && isVariantSet || isWeightValid && isWeightSet || isStretchValid && isStretchSet) {\n throw new InvalidPropertyError('Invalid font style / variant / weight / stretch value at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n } else {\n break;\n }\n\n index++;\n }\n\n // now comes font-size ...\n if (validator.isFontSizeKeyword(values[index][1]) || validator.isUnit(values[index][1]) && !validator.isDynamicUnit(values[index][1])) {\n size.value = [values[index]];\n isSizeSet = true;\n index++;\n } else {\n throw new InvalidPropertyError('Missing font size at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n if (!values[index]) {\n throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n // ... and perhaps line-height\n if (isSizeSet && values[index] && values[index][1] == Marker.FORWARD_SLASH && values[index + 1] && (validator.isLineHeightKeyword(values[index + 1][1]) || validator.isUnit(values[index + 1][1]) || validator.isNumber(values[index + 1][1]))) {\n height.value = [values[index + 1]];\n index++;\n index++;\n }\n\n // ... and whatever comes next is font-family\n family.value = [];\n\n while (values[index]) {\n if (values[index][1] == Marker.COMMA) {\n appendableFamilyName = false;\n } else {\n if (appendableFamilyName) {\n family.value[family.value.length - 1][1] += Marker.SPACE + values[index][1];\n } else {\n family.value.push(values[index]);\n }\n\n appendableFamilyName = true;\n }\n\n index++;\n }\n\n if (family.value.length === 0) {\n throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n return components;\n}\n\nfunction _anyIsFontSize(values, validator) {\n var value;\n var i, l;\n\n for (i = 0, l = values.length; i < l; i++) {\n value = values[i];\n\n if (validator.isFontSizeKeyword(value[1]) || validator.isUnit(value[1]) && !validator.isDynamicUnit(value[1]) || validator.isFunction(value[1])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction _anyIsFontFamily(values, validator) {\n var value;\n var i, l;\n\n for (i = 0, l = values.length; i < l; i++) {\n value = values[i];\n\n if (validator.isIdentifier(value[1]) || validator.isQuotedText(value[1])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction fourValues(property, configuration) {\n var componentNames = configuration[property.name].components;\n var components = [];\n var value = property.value;\n\n if (value.length < 1)\n return [];\n\n if (value.length < 2)\n value[1] = value[0].slice(0);\n if (value.length < 3)\n value[2] = value[0].slice(0);\n if (value.length < 4)\n value[3] = value[1].slice(0);\n\n for (var i = componentNames.length - 1; i >= 0; i--) {\n var component = wrapSingle([\n Token.PROPERTY,\n [Token.PROPERTY_NAME, componentNames[i]]\n ]);\n component.value = [value[i]];\n components.unshift(component);\n }\n\n return components;\n}\n\nfunction multiplex(splitWith) {\n return function (property, configuration, validator) {\n var splitsAt = [];\n var values = property.value;\n var i, j, l, m;\n\n // find split commas\n for (i = 0, l = values.length; i < l; i++) {\n if (values[i][1] == ',')\n splitsAt.push(i);\n }\n\n if (splitsAt.length === 0)\n return splitWith(property, configuration, validator);\n\n var splitComponents = [];\n\n // split over commas, and into components\n for (i = 0, l = splitsAt.length; i <= l; i++) {\n var from = i === 0 ? 0 : splitsAt[i - 1] + 1;\n var to = i < l ? splitsAt[i] : values.length;\n\n var _property = _wrapDefault(property.name, property, configuration);\n _property.value = values.slice(from, to);\n\n if (_property.value.length > 0) {\n splitComponents.push(splitWith(_property, configuration, validator));\n }\n }\n\n var components = splitComponents[0];\n\n // group component values from each split\n for (i = 0, l = components.length; i < l; i++) {\n components[i].multiplex = true;\n\n for (j = 1, m = splitComponents.length; j < m; j++) {\n components[i].value.push([Token.PROPERTY_VALUE, Marker.COMMA]);\n Array.prototype.push.apply(components[i].value, splitComponents[j][i].value);\n }\n }\n\n return components;\n };\n}\n\nfunction listStyle(property, configuration, validator) {\n var type = _wrapDefault('list-style-type', property, configuration);\n var position = _wrapDefault('list-style-position', property, configuration);\n var image = _wrapDefault('list-style-image', property, configuration);\n var components = [type, position, image];\n\n if (property.value.length == 1 && property.value[0][1] == 'inherit') {\n type.value = position.value = image.value = [property.value[0]];\n return components;\n }\n\n var values = property.value.slice(0);\n var total = values.length;\n var index = 0;\n\n // `image` first...\n for (index = 0, total = values.length; index < total; index++) {\n if (validator.isUrl(values[index][1]) || values[index][1] == '0') {\n image.value = [values[index]];\n values.splice(index, 1);\n break;\n }\n }\n\n // ... then `position`\n for (index = 0, total = values.length; index < total; index++) {\n if (validator.isListStylePositionKeyword(values[index][1])) {\n position.value = [values[index]];\n values.splice(index, 1);\n break;\n }\n }\n\n // ... and what's left is a `type`\n if (values.length > 0 && (validator.isListStyleTypeKeyword(values[0][1]) || validator.isIdentifier(values[0][1]))) {\n type.value = [values[0]];\n }\n\n return components;\n}\n\nfunction transition(property, configuration, validator) {\n var prop = _wrapDefault(property.name + '-property', property, configuration);\n var duration = _wrapDefault(property.name + '-duration', property, configuration);\n var timing = _wrapDefault(property.name + '-timing-function', property, configuration);\n var delay = _wrapDefault(property.name + '-delay', property, configuration);\n var components = [prop, duration, timing, delay];\n var values = property.value;\n var value;\n var durationSet = false;\n var delaySet = false;\n var propSet = false;\n var timingSet = false;\n var i;\n var l;\n\n if (property.value.length == 1 && property.value[0][1] == 'inherit') {\n prop.value = duration.value = timing.value = delay.value = property.value;\n return components;\n }\n\n if (values.length > 1 && _anyIsInherit(values)) {\n throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.');\n }\n\n for (i = 0, l = values.length; i < l; i++) {\n value = values[i];\n\n if (validator.isTime(value[1]) && !durationSet) {\n duration.value = [value];\n durationSet = true;\n } else if (validator.isTime(value[1]) && !delaySet) {\n delay.value = [value];\n delaySet = true;\n } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) {\n timing.value = [value];\n timingSet = true;\n } else if (validator.isIdentifier(value[1]) && !propSet) {\n prop.value = [value];\n propSet = true;\n } else {\n throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.');\n }\n }\n\n return components;\n}\n\nfunction widthStyleColor(property, configuration, validator) {\n var descriptor = configuration[property.name];\n var components = [\n _wrapDefault(descriptor.components[0], property, configuration),\n _wrapDefault(descriptor.components[1], property, configuration),\n _wrapDefault(descriptor.components[2], property, configuration)\n ];\n var color, style, width;\n\n for (var i = 0; i < 3; i++) {\n var component = components[i];\n\n if (component.name.indexOf('color') > 0)\n color = component;\n else if (component.name.indexOf('style') > 0)\n style = component;\n else\n width = component;\n }\n\n if ((property.value.length == 1 && property.value[0][1] == 'inherit') ||\n (property.value.length == 3 && property.value[0][1] == 'inherit' && property.value[1][1] == 'inherit' && property.value[2][1] == 'inherit')) {\n color.value = style.value = width.value = [property.value[0]];\n return components;\n }\n\n var values = property.value.slice(0);\n var match, matches;\n\n // NOTE: usually users don't follow the required order of parts in this shorthand,\n // so we'll try to parse it caring as little about order as possible\n\n if (values.length > 0) {\n matches = values.filter(_widthFilter(validator));\n match = matches.length > 1 && (matches[0][1] == 'none' || matches[0][1] == 'auto') ? matches[1] : matches[0];\n if (match) {\n width.value = [match];\n values.splice(values.indexOf(match), 1);\n }\n }\n\n if (values.length > 0) {\n match = values.filter(_styleFilter(validator))[0];\n if (match) {\n style.value = [match];\n values.splice(values.indexOf(match), 1);\n }\n }\n\n if (values.length > 0) {\n match = values.filter(_colorFilter(validator))[0];\n if (match) {\n color.value = [match];\n values.splice(values.indexOf(match), 1);\n }\n }\n\n return components;\n}\n\nmodule.exports = {\n animation: animation,\n background: background,\n border: widthStyleColor,\n borderRadius: borderRadius,\n font: font,\n fourValues: fourValues,\n listStyle: listStyle,\n multiplex: multiplex,\n outline: widthStyleColor,\n transition: transition\n};\n","var VENDOR_PREFIX_PATTERN = /(?:^|\\W)(\\-\\w+\\-)/g;\n\nfunction unique(value) {\n var prefixes = [];\n var match;\n\n while ((match = VENDOR_PREFIX_PATTERN.exec(value)) !== null) {\n if (prefixes.indexOf(match[0]) == -1) {\n prefixes.push(match[0]);\n }\n }\n\n return prefixes;\n}\n\nfunction same(value1, value2) {\n return unique(value1).sort().join(',') == unique(value2).sort().join(',');\n}\n\nmodule.exports = {\n unique: unique,\n same: same\n};\n","var sameVendorPrefixes = require('../../vendor-prefixes').same;\n\nfunction understandable(validator, value1, value2, _position, isPaired) {\n if (!sameVendorPrefixes(value1, value2)) {\n return false;\n }\n\n if (isPaired && validator.isVariable(value1) !== validator.isVariable(value2)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = understandable;\n","var understandable = require('./properties/understandable');\n\nfunction animationIterationCount(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2);\n}\n\nfunction animationName(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2);\n}\n\nfunction areSameFunction(validator, value1, value2) {\n if (!validator.isFunction(value1) || !validator.isFunction(value2)) {\n return false;\n }\n\n var function1Name = value1.substring(0, value1.indexOf('('));\n var function2Name = value2.substring(0, value2.indexOf('('));\n\n var function1Value = value1.substring(function1Name.length + 1, value1.length - 1);\n var function2Value = value2.substring(function2Name.length + 1, value2.length - 1);\n\n if (validator.isFunction(function1Value) || validator.isFunction(function2Value)) {\n return function1Name === function2Name && areSameFunction(validator, function1Value, function2Value);\n } else {\n return function1Name === function2Name;\n }\n}\n\nfunction backgroundPosition(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) {\n return true;\n }\n\n return unit(validator, value1, value2);\n}\n\nfunction backgroundSize(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) {\n return true;\n }\n\n return unit(validator, value1, value2);\n}\n\nfunction color(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) {\n return false;\n } else if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) {\n return false;\n } else if (!validator.colorHexAlpha && (validator.isHexAlphaColor(value1) || validator.isHexAlphaColor(value2))) {\n return false;\n } else if (validator.isColor(value1) && validator.isColor(value2)) {\n return true;\n }\n\n return sameFunctionOrValue(validator, value1, value2);\n}\n\nfunction components(overrideCheckers) {\n return function (validator, value1, value2, position) {\n return overrideCheckers[position](validator, value1, value2);\n };\n}\n\nfunction fontFamily(validator, value1, value2) {\n return understandable(validator, value1, value2, 0, true);\n}\n\nfunction image(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (validator.isImage(value2)) {\n return true;\n } else if (validator.isImage(value1)) {\n return false;\n }\n\n return sameFunctionOrValue(validator, value1, value2);\n}\n\nfunction keyword(propertyName) {\n return function(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isKeyword(propertyName)(value2);\n };\n}\n\nfunction keywordWithGlobal(propertyName) {\n return function(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2);\n };\n}\n\nfunction propertyName(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isIdentifier(value2);\n}\n\nfunction sameFunctionOrValue(validator, value1, value2) {\n return areSameFunction(validator, value1, value2) ?\n true :\n value1 === value2;\n}\n\nfunction textShadow(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2);\n}\n\nfunction time(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (validator.isTime(value1) && !validator.isTime(value2)) {\n return false;\n } else if (validator.isTime(value2)) {\n return true;\n } else if (validator.isTime(value1)) {\n return false;\n } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {\n return true;\n }\n\n return sameFunctionOrValue(validator, value1, value2);\n}\n\nfunction timingFunction(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isTimingFunction(value2) || validator.isGlobal(value2);\n}\n\nfunction unit(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if (validator.isUnit(value1) && !validator.isUnit(value2)) {\n return false;\n } else if (validator.isUnit(value2)) {\n return true;\n } else if (validator.isUnit(value1)) {\n return false;\n } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {\n return true;\n }\n\n return sameFunctionOrValue(validator, value1, value2);\n}\n\nfunction unitOrKeywordWithGlobal(propertyName) {\n var byKeyword = keywordWithGlobal(propertyName);\n\n return function(validator, value1, value2) {\n return unit(validator, value1, value2) || byKeyword(validator, value1, value2);\n };\n}\n\nfunction unitOrNumber(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !(validator.isUnit(value2) || validator.isNumber(value2))) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n } else if ((validator.isUnit(value1) || validator.isNumber(value1)) && !(validator.isUnit(value2) || validator.isNumber(value2))) {\n return false;\n } else if (validator.isUnit(value2) || validator.isNumber(value2)) {\n return true;\n } else if (validator.isUnit(value1) || validator.isNumber(value1)) {\n return false;\n } else if (validator.isFunction(value1) && !validator.isPrefixed(value1) && validator.isFunction(value2) && !validator.isPrefixed(value2)) {\n return true;\n }\n\n return sameFunctionOrValue(validator, value1, value2);\n}\n\nfunction zIndex(validator, value1, value2) {\n if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) {\n return false;\n } else if (validator.isVariable(value1) && validator.isVariable(value2)) {\n return true;\n }\n\n return validator.isZIndex(value2);\n}\n\nmodule.exports = {\n generic: {\n color: color,\n components: components,\n image: image,\n propertyName: propertyName,\n time: time,\n timingFunction: timingFunction,\n unit: unit,\n unitOrNumber: unitOrNumber\n },\n property: {\n animationDirection: keywordWithGlobal('animation-direction'),\n animationFillMode: keyword('animation-fill-mode'),\n animationIterationCount: animationIterationCount,\n animationName: animationName,\n animationPlayState: keywordWithGlobal('animation-play-state'),\n backgroundAttachment: keyword('background-attachment'),\n backgroundClip: keywordWithGlobal('background-clip'),\n backgroundOrigin: keyword('background-origin'),\n backgroundPosition: backgroundPosition,\n backgroundRepeat: keyword('background-repeat'),\n backgroundSize: backgroundSize,\n bottom: unitOrKeywordWithGlobal('bottom'),\n borderCollapse: keyword('border-collapse'),\n borderStyle: keywordWithGlobal('*-style'),\n clear: keywordWithGlobal('clear'),\n cursor: keywordWithGlobal('cursor'),\n display: keywordWithGlobal('display'),\n float: keywordWithGlobal('float'),\n left: unitOrKeywordWithGlobal('left'),\n fontFamily: fontFamily,\n fontStretch: keywordWithGlobal('font-stretch'),\n fontStyle: keywordWithGlobal('font-style'),\n fontVariant: keywordWithGlobal('font-variant'),\n fontWeight: keywordWithGlobal('font-weight'),\n listStyleType: keywordWithGlobal('list-style-type'),\n listStylePosition: keywordWithGlobal('list-style-position'),\n outlineStyle: keywordWithGlobal('*-style'),\n overflow: keywordWithGlobal('overflow'),\n position: keywordWithGlobal('position'),\n right: unitOrKeywordWithGlobal('right'),\n textAlign: keywordWithGlobal('text-align'),\n textDecoration: keywordWithGlobal('text-decoration'),\n textOverflow: keywordWithGlobal('text-overflow'),\n textShadow: textShadow,\n top: unitOrKeywordWithGlobal('top'),\n transform: sameFunctionOrValue,\n verticalAlign: unitOrKeywordWithGlobal('vertical-align'),\n visibility: keywordWithGlobal('visibility'),\n whiteSpace: keywordWithGlobal('white-space'),\n zIndex: zIndex\n }\n};\n","var wrapSingle = require('./wrap-for-optimizing').single;\n\nvar Token = require('../tokenizer/token');\n\nfunction deep(property) {\n var cloned = shallow(property);\n for (var i = property.components.length - 1; i >= 0; i--) {\n var component = shallow(property.components[i]);\n component.value = property.components[i].value.slice(0);\n cloned.components.unshift(component);\n }\n\n cloned.dirty = true;\n cloned.value = property.value.slice(0);\n\n return cloned;\n}\n\nfunction shallow(property) {\n var cloned = wrapSingle([\n Token.PROPERTY,\n [Token.PROPERTY_NAME, property.name]\n ]);\n cloned.important = property.important;\n cloned.hack = property.hack;\n cloned.unused = false;\n return cloned;\n}\n\nmodule.exports = {\n deep: deep,\n shallow: shallow\n};\n","var shallowClone = require('../clone').shallow;\n\nvar Token = require('../../tokenizer/token');\nvar Marker = require('../../tokenizer/marker');\n\nfunction isInheritOnly(values) {\n for (var i = 0, l = values.length; i < l; i++) {\n var value = values[i][1];\n\n if (value != 'inherit' && value != Marker.COMMA && value != Marker.FORWARD_SLASH)\n return false;\n }\n\n return true;\n}\n\nfunction background(property, configuration, lastInMultiplex) {\n var components = property.components;\n var restored = [];\n var needsOne, needsBoth;\n\n function restoreValue(component) {\n Array.prototype.unshift.apply(restored, component.value);\n }\n\n function isDefaultValue(component) {\n var descriptor = configuration[component.name];\n\n if (descriptor.doubleValues && descriptor.defaultValue.length == 1) {\n return component.value[0][1] == descriptor.defaultValue[0] && (component.value[1] ? component.value[1][1] == descriptor.defaultValue[0] : true);\n } else if (descriptor.doubleValues && descriptor.defaultValue.length != 1) {\n return component.value[0][1] == descriptor.defaultValue[0] && (component.value[1] ? component.value[1][1] : component.value[0][1]) == descriptor.defaultValue[1];\n } else {\n return component.value[0][1] == descriptor.defaultValue;\n }\n }\n\n for (var i = components.length - 1; i >= 0; i--) {\n var component = components[i];\n var isDefault = isDefaultValue(component);\n\n if (component.name == 'background-clip') {\n var originComponent = components[i - 1];\n var isOriginDefault = isDefaultValue(originComponent);\n\n needsOne = component.value[0][1] == originComponent.value[0][1];\n\n needsBoth = !needsOne && (\n (isOriginDefault && !isDefault) ||\n (!isOriginDefault && !isDefault) ||\n (!isOriginDefault && isDefault && component.value[0][1] != originComponent.value[0][1]));\n\n if (needsOne) {\n restoreValue(originComponent);\n } else if (needsBoth) {\n restoreValue(component);\n restoreValue(originComponent);\n }\n\n i--;\n } else if (component.name == 'background-size') {\n var positionComponent = components[i - 1];\n var isPositionDefault = isDefaultValue(positionComponent);\n\n needsOne = !isPositionDefault && isDefault;\n\n needsBoth = !needsOne &&\n (isPositionDefault && !isDefault || !isPositionDefault && !isDefault);\n\n if (needsOne) {\n restoreValue(positionComponent);\n } else if (needsBoth) {\n restoreValue(component);\n restored.unshift([Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]);\n restoreValue(positionComponent);\n } else if (positionComponent.value.length == 1) {\n restoreValue(positionComponent);\n }\n\n i--;\n } else {\n if (isDefault || configuration[component.name].multiplexLastOnly && !lastInMultiplex)\n continue;\n\n restoreValue(component);\n }\n }\n\n if (restored.length === 0 && property.value.length == 1 && property.value[0][1] == '0')\n restored.push(property.value[0]);\n\n if (restored.length === 0)\n restored.push([Token.PROPERTY_VALUE, configuration[property.name].defaultValue]);\n\n if (isInheritOnly(restored))\n return [restored[0]];\n\n return restored;\n}\n\nfunction borderRadius(property, configuration) {\n if (property.multiplex) {\n var horizontal = shallowClone(property);\n var vertical = shallowClone(property);\n\n for (var i = 0; i < 4; i++) {\n var component = property.components[i];\n\n var horizontalComponent = shallowClone(property);\n horizontalComponent.value = [component.value[0]];\n horizontal.components.push(horizontalComponent);\n\n var verticalComponent = shallowClone(property);\n // FIXME: only shorthand compactor (see breakup#borderRadius) knows that border radius\n // longhands have two values, whereas tokenizer does not care about populating 2nd value\n // if it's missing, hence this fallback\n verticalComponent.value = [component.value[1] || component.value[0]];\n vertical.components.push(verticalComponent);\n }\n\n var horizontalValues = fourValues(horizontal, configuration);\n var verticalValues = fourValues(vertical, configuration);\n\n if (horizontalValues.length == verticalValues.length &&\n horizontalValues[0][1] == verticalValues[0][1] &&\n (horizontalValues.length > 1 ? horizontalValues[1][1] == verticalValues[1][1] : true) &&\n (horizontalValues.length > 2 ? horizontalValues[2][1] == verticalValues[2][1] : true) &&\n (horizontalValues.length > 3 ? horizontalValues[3][1] == verticalValues[3][1] : true)) {\n return horizontalValues;\n } else {\n return horizontalValues.concat([[Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]]).concat(verticalValues);\n }\n } else {\n return fourValues(property, configuration);\n }\n}\n\nfunction font(property, configuration) {\n var components = property.components;\n var restored = [];\n var component;\n var componentIndex = 0;\n var fontFamilyIndex = 0;\n\n if (property.value[0][1].indexOf(Marker.INTERNAL) === 0) {\n property.value[0][1] = property.value[0][1].substring(Marker.INTERNAL.length);\n return property.value;\n }\n\n // first four components are optional\n while (componentIndex < 4) {\n component = components[componentIndex];\n\n if (component.value[0][1] != configuration[component.name].defaultValue) {\n Array.prototype.push.apply(restored, component.value);\n }\n\n componentIndex++;\n }\n\n // then comes font-size\n Array.prototype.push.apply(restored, components[componentIndex].value);\n componentIndex++;\n\n // then may come line-height\n if (components[componentIndex].value[0][1] != configuration[components[componentIndex].name].defaultValue) {\n Array.prototype.push.apply(restored, [[Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]]);\n Array.prototype.push.apply(restored, components[componentIndex].value);\n }\n\n componentIndex++;\n\n // then comes font-family\n while (components[componentIndex].value[fontFamilyIndex]) {\n restored.push(components[componentIndex].value[fontFamilyIndex]);\n\n if (components[componentIndex].value[fontFamilyIndex + 1]) {\n restored.push([Token.PROPERTY_VALUE, Marker.COMMA]);\n }\n\n fontFamilyIndex++;\n }\n\n if (isInheritOnly(restored)) {\n return [restored[0]];\n }\n\n return restored;\n}\n\nfunction fourValues(property) {\n var components = property.components;\n var value1 = components[0].value[0];\n var value2 = components[1].value[0];\n var value3 = components[2].value[0];\n var value4 = components[3].value[0];\n\n if (value1[1] == value2[1] && value1[1] == value3[1] && value1[1] == value4[1]) {\n return [value1];\n } else if (value1[1] == value3[1] && value2[1] == value4[1]) {\n return [value1, value2];\n } else if (value2[1] == value4[1]) {\n return [value1, value2, value3];\n } else {\n return [value1, value2, value3, value4];\n }\n}\n\nfunction multiplex(restoreWith) {\n return function (property, configuration) {\n if (!property.multiplex)\n return restoreWith(property, configuration, true);\n\n var multiplexSize = 0;\n var restored = [];\n var componentMultiplexSoFar = {};\n var i, l;\n\n // At this point we don't know what's the multiplex size, e.g. how many background layers are there\n for (i = 0, l = property.components[0].value.length; i < l; i++) {\n if (property.components[0].value[i][1] == Marker.COMMA)\n multiplexSize++;\n }\n\n for (i = 0; i <= multiplexSize; i++) {\n var _property = shallowClone(property);\n\n // We split multiplex into parts and restore them one by one\n for (var j = 0, m = property.components.length; j < m; j++) {\n var componentToClone = property.components[j];\n var _component = shallowClone(componentToClone);\n _property.components.push(_component);\n\n // The trick is some properties has more than one value, so we iterate over values looking for\n // a multiplex separator - a comma\n for (var k = componentMultiplexSoFar[_component.name] || 0, n = componentToClone.value.length; k < n; k++) {\n if (componentToClone.value[k][1] == Marker.COMMA) {\n componentMultiplexSoFar[_component.name] = k + 1;\n break;\n }\n\n _component.value.push(componentToClone.value[k]);\n }\n }\n\n // No we can restore shorthand value\n var lastInMultiplex = i == multiplexSize;\n var _restored = restoreWith(_property, configuration, lastInMultiplex);\n Array.prototype.push.apply(restored, _restored);\n\n if (i < multiplexSize)\n restored.push([Token.PROPERTY_VALUE, Marker.COMMA]);\n }\n\n return restored;\n };\n}\n\nfunction withoutDefaults(property, configuration) {\n var components = property.components;\n var restored = [];\n\n for (var i = components.length - 1; i >= 0; i--) {\n var component = components[i];\n var descriptor = configuration[component.name];\n\n if (component.value[0][1] != descriptor.defaultValue || ('keepUnlessDefault' in descriptor) && !isDefault(components, configuration, descriptor.keepUnlessDefault)) {\n restored.unshift(component.value[0]);\n }\n }\n\n if (restored.length === 0)\n restored.push([Token.PROPERTY_VALUE, configuration[property.name].defaultValue]);\n\n if (isInheritOnly(restored))\n return [restored[0]];\n\n return restored;\n}\n\nfunction isDefault(components, configuration, propertyName) {\n var component;\n var i, l;\n\n for (i = 0, l = components.length; i < l; i++) {\n component = components[i];\n\n if (component.name == propertyName && component.value[0][1] == configuration[propertyName].defaultValue) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = {\n background: background,\n borderRadius: borderRadius,\n font: font,\n fourValues: fourValues,\n multiplex: multiplex,\n withoutDefaults: withoutDefaults\n};\n","var override = require('../utils/override');\n\nvar INTEGER_PATTERN = /^\\d+$/;\n\nvar ALL_UNITS = ['*', 'all'];\nvar DEFAULT_PRECISION = 'off'; // all precision changes are disabled\nvar DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3\nvar DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5\n\nfunction roundingPrecisionFrom(source) {\n return override(defaults(DEFAULT_PRECISION), buildPrecisionFrom(source));\n}\n\nfunction defaults(value) {\n return {\n 'ch': value,\n 'cm': value,\n 'em': value,\n 'ex': value,\n 'in': value,\n 'mm': value,\n 'pc': value,\n 'pt': value,\n 'px': value,\n 'q': value,\n 'rem': value,\n 'vh': value,\n 'vmax': value,\n 'vmin': value,\n 'vw': value,\n '%': value\n };\n}\n\nfunction buildPrecisionFrom(source) {\n if (source === null || source === undefined) {\n return {};\n }\n\n if (typeof source == 'boolean') {\n return {};\n }\n\n if (typeof source == 'number' && source == -1) {\n return defaults(DEFAULT_PRECISION);\n }\n\n if (typeof source == 'number') {\n return defaults(source);\n }\n\n if (typeof source == 'string' && INTEGER_PATTERN.test(source)) {\n return defaults(parseInt(source));\n }\n\n if (typeof source == 'string' && source == DEFAULT_PRECISION) {\n return defaults(DEFAULT_PRECISION);\n }\n\n if (typeof source == 'object') {\n return source;\n }\n\n return source\n .split(DIRECTIVES_SEPARATOR)\n .reduce(function (accumulator, directive) {\n var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR);\n var name = directiveParts[0];\n var value = parseInt(directiveParts[1]);\n\n if (isNaN(value) || value == -1) {\n value = DEFAULT_PRECISION;\n }\n\n if (ALL_UNITS.indexOf(name) > -1) {\n accumulator = override(accumulator, defaults(value));\n } else {\n accumulator[name] = value;\n }\n\n return accumulator;\n }, {});\n}\n\nmodule.exports = {\n DEFAULT: DEFAULT_PRECISION,\n roundingPrecisionFrom: roundingPrecisionFrom\n};\n","var roundingPrecisionFrom = require('./rounding-precision').roundingPrecisionFrom;\n\nvar override = require('../utils/override');\n\nvar OptimizationLevel = {\n Zero: '0',\n One: '1',\n Two: '2'\n};\n\nvar DEFAULTS = {};\n\nDEFAULTS[OptimizationLevel.Zero] = {};\nDEFAULTS[OptimizationLevel.One] = {\n cleanupCharsets: true,\n normalizeUrls: true,\n optimizeBackground: true,\n optimizeBorderRadius: true,\n optimizeFilter: true,\n optimizeFontWeight: true,\n optimizeOutline: true,\n removeEmpty: true,\n removeNegativePaddings: true,\n removeQuotes: true,\n removeWhitespace: true,\n replaceMultipleZeros: true,\n replaceTimeUnits: true,\n replaceZeroUnits: true,\n roundingPrecision: roundingPrecisionFrom(undefined),\n selectorsSortingMethod: 'standard',\n specialComments: 'all',\n tidyAtRules: true,\n tidyBlockScopes: true,\n tidySelectors: true\n};\nDEFAULTS[OptimizationLevel.Two] = {\n mergeAdjacentRules: true,\n mergeIntoShorthands: true,\n mergeMedia: true,\n mergeNonAdjacentRules: true,\n mergeSemantically: false,\n overrideProperties: true,\n removeEmpty: true,\n reduceNonAdjacentRules: true,\n removeDuplicateFontRules: true,\n removeDuplicateMediaBlocks: true,\n removeDuplicateRules: true,\n removeUnusedAtRules: false,\n restructureRules: false,\n skipProperties: []\n};\n\nvar ALL_KEYWORD_1 = '*';\nvar ALL_KEYWORD_2 = 'all';\nvar FALSE_KEYWORD_1 = 'false';\nvar FALSE_KEYWORD_2 = 'off';\nvar TRUE_KEYWORD_1 = 'true';\nvar TRUE_KEYWORD_2 = 'on';\n\nvar LIST_VALUE_SEPARATOR = ',';\nvar OPTION_SEPARATOR = ';';\nvar OPTION_VALUE_SEPARATOR = ':';\n\nfunction optimizationLevelFrom(source) {\n var level = override(DEFAULTS, {});\n var Zero = OptimizationLevel.Zero;\n var One = OptimizationLevel.One;\n var Two = OptimizationLevel.Two;\n\n if (undefined === source) {\n delete level[Two];\n return level;\n }\n\n if (typeof source == 'string') {\n source = parseInt(source);\n }\n\n if (typeof source == 'number' && source === parseInt(Two)) {\n return level;\n }\n\n if (typeof source == 'number' && source === parseInt(One)) {\n delete level[Two];\n return level;\n }\n\n if (typeof source == 'number' && source === parseInt(Zero)) {\n delete level[Two];\n delete level[One];\n return level;\n }\n\n if (typeof source == 'object') {\n source = covertValuesToHashes(source);\n }\n\n if (One in source && 'roundingPrecision' in source[One]) {\n source[One].roundingPrecision = roundingPrecisionFrom(source[One].roundingPrecision);\n }\n\n if (Two in source && 'skipProperties' in source[Two] && typeof(source[Two].skipProperties) == 'string') {\n source[Two].skipProperties = source[Two].skipProperties.split(LIST_VALUE_SEPARATOR);\n }\n\n if (Zero in source || One in source || Two in source) {\n level[Zero] = override(level[Zero], source[Zero]);\n }\n\n if (One in source && ALL_KEYWORD_1 in source[One]) {\n level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_1])));\n delete source[One][ALL_KEYWORD_1];\n }\n\n if (One in source && ALL_KEYWORD_2 in source[One]) {\n level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_2])));\n delete source[One][ALL_KEYWORD_2];\n }\n\n if (One in source || Two in source) {\n level[One] = override(level[One], source[One]);\n } else {\n delete level[One];\n }\n\n if (Two in source && ALL_KEYWORD_1 in source[Two]) {\n level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_1])));\n delete source[Two][ALL_KEYWORD_1];\n }\n\n if (Two in source && ALL_KEYWORD_2 in source[Two]) {\n level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_2])));\n delete source[Two][ALL_KEYWORD_2];\n }\n\n if (Two in source) {\n level[Two] = override(level[Two], source[Two]);\n } else {\n delete level[Two];\n }\n\n return level;\n}\n\nfunction defaults(level, value) {\n var options = override(DEFAULTS[level], {});\n var key;\n\n for (key in options) {\n if (typeof options[key] == 'boolean') {\n options[key] = value;\n }\n }\n\n return options;\n}\n\nfunction normalizeValue(value) {\n switch (value) {\n case FALSE_KEYWORD_1:\n case FALSE_KEYWORD_2:\n return false;\n case TRUE_KEYWORD_1:\n case TRUE_KEYWORD_2:\n return true;\n default:\n return value;\n }\n}\n\nfunction covertValuesToHashes(source) {\n var clonedSource = override(source, {});\n var level;\n var i;\n\n for (i = 0; i <= 2; i++) {\n level = '' + i;\n\n if (level in clonedSource && (clonedSource[level] === undefined || clonedSource[level] === false)) {\n delete clonedSource[level];\n }\n\n if (level in clonedSource && clonedSource[level] === true) {\n clonedSource[level] = {};\n }\n\n if (level in clonedSource && typeof clonedSource[level] == 'string') {\n clonedSource[level] = covertToHash(clonedSource[level], level);\n }\n }\n\n return clonedSource;\n}\n\nfunction covertToHash(asString, level) {\n return asString\n .split(OPTION_SEPARATOR)\n .reduce(function (accumulator, directive) {\n var parts = directive.split(OPTION_VALUE_SEPARATOR);\n var name = parts[0];\n var value = parts[1];\n var normalizedValue = normalizeValue(value);\n\n if (ALL_KEYWORD_1 == name || ALL_KEYWORD_2 == name) {\n accumulator = override(accumulator, defaults(level, normalizedValue));\n } else {\n accumulator[name] = normalizedValue;\n }\n\n return accumulator;\n }, {});\n}\n\nmodule.exports = {\n OptimizationLevel: OptimizationLevel,\n optimizationLevelFrom: optimizationLevelFrom,\n};\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar plugin = {\n level1: {\n property: function background(_rule, property, options) {\n var values = property.value;\n\n if (!options.level[OptimizationLevel.One].optimizeBackground) {\n return;\n }\n\n if (values.length == 1 && values[0][1] == 'none') {\n values[0][1] = '0 0';\n }\n\n if (values.length == 1 && values[0][1] == 'transparent') {\n values[0][1] = '0 0';\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","var plugin = {\n level1: {\n property: function boxShadow(_rule, property) {\n var values = property.value;\n\n // remove multiple zeros\n if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') {\n property.value.splice(2);\n property.dirty = true;\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar plugin = {\n level1: {\n property: function borderRadius(_rule, property, options) {\n var values = property.value;\n\n if (!options.level[OptimizationLevel.One].optimizeBorderRadius) {\n return;\n }\n\n if (values.length == 3 && values[1][1] == '/' && values[0][1] == values[2][1]) {\n property.value.splice(1);\n property.dirty = true;\n } else if (values.length == 5 && values[2][1] == '/' && values[0][1] == values[3][1] && values[1][1] == values[4][1]) {\n property.value.splice(2);\n property.dirty = true;\n } else if (values.length == 7 && values[3][1] == '/' && values[0][1] == values[4][1] && values[1][1] == values[5][1] && values[2][1] == values[6][1]) {\n property.value.splice(3);\n property.dirty = true;\n } else if (values.length == 9 && values[4][1] == '/' && values[0][1] == values[5][1] && values[1][1] == values[6][1] && values[2][1] == values[7][1] && values[3][1] == values[8][1]) {\n property.value.splice(4);\n property.dirty = true;\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar ALPHA_OR_CHROMA_FILTER_PATTERN = /progid:DXImageTransform\\.Microsoft\\.(Alpha|Chroma)(\\W)/;\nvar NO_SPACE_AFTER_COMMA_PATTERN = /,(\\S)/g;\nvar WHITESPACE_AROUND_EQUALS_PATTERN = / ?= ?/g;\n\nvar plugin = {\n level1: {\n property: function filter(_rule, property, options) {\n if (!options.compatibility.properties.ieFilters) {\n return;\n }\n\n if (!options.level[OptimizationLevel.One].optimizeFilter) {\n return;\n }\n\n if (property.value.length == 1) {\n property.value[0][1] = property.value[0][1].replace(ALPHA_OR_CHROMA_FILTER_PATTERN, function (match, filter, suffix) {\n return filter.toLowerCase() + suffix;\n });\n }\n\n property.value[0][1] = property.value[0][1]\n .replace(NO_SPACE_AFTER_COMMA_PATTERN, ', $1')\n .replace(WHITESPACE_AROUND_EQUALS_PATTERN, '=');\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar plugin = {\n level1: {\n property: function fontWeight(_rule, property, options) {\n var value = property.value[0][1];\n\n if (!options.level[OptimizationLevel.One].optimizeFontWeight) {\n return;\n }\n\n if (value == 'normal') {\n value = '400';\n } else if (value == 'bold') {\n value = '700';\n }\n\n property.value[0][1] = value;\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar plugin = {\n level1: {\n property: function margin(_rule, property, options) {\n var values = property.value;\n\n if (!options.level[OptimizationLevel.One].replaceMultipleZeros) {\n return;\n }\n\n // remove multiple zeros\n if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') {\n property.value.splice(1);\n property.dirty = true;\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar plugin = {\n level1: {\n property: function outline(_rule, property, options) {\n var values = property.value;\n\n if (!options.level[OptimizationLevel.One].optimizeOutline) {\n return;\n }\n\n if (values.length == 1 && values[0][1] == 'none') {\n values[0][1] = '0';\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nfunction isNegative(value) {\n return value && value[1][0] == '-' && parseFloat(value[1]) < 0;\n}\n\nvar plugin = {\n level1: {\n property: function padding(_rule, property, options) {\n var values = property.value;\n\n // remove multiple zeros\n if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') {\n property.value.splice(1);\n property.dirty = true;\n }\n\n // remove negative paddings\n if (options.level[OptimizationLevel.One].removeNegativePaddings && (isNegative(property.value[0]) || isNegative(property.value[1]) || isNegative(property.value[2]) || isNegative(property.value[3]))) {\n property.unused = true;\n }\n }\n }\n};\n\nmodule.exports = plugin;\n","module.exports = {\n background: require('./property-optimizers/background').level1.property,\n boxShadow: require('./property-optimizers/box-shadow').level1.property,\n borderRadius: require('./property-optimizers/border-radius').level1.property,\n filter: require('./property-optimizers/filter').level1.property,\n fontWeight: require('./property-optimizers/font-weight').level1.property,\n margin: require('./property-optimizers/margin').level1.property,\n outline: require('./property-optimizers/outline').level1.property,\n padding: require('./property-optimizers/padding').level1.property\n};\n","var COLORS = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#0ff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000',\n blanchedalmond: '#ffebcd',\n blue: '#00f',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#0ff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#f0f',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#0f0',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#f00',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#fff',\n whitesmoke: '#f5f5f5',\n yellow: '#ff0',\n yellowgreen: '#9acd32'\n};\n\nvar toHex = {};\nvar toName = {};\n\nfor (var name in COLORS) {\n var hex = COLORS[name];\n\n if (name.length < hex.length) {\n toName[hex] = name;\n } else {\n toHex[name] = hex;\n }\n}\n\nvar toHexPattern = new RegExp('(^| |,|\\\\))(' + Object.keys(toHex).join('|') + ')( |,|\\\\)|$)', 'ig');\nvar toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig');\n\nfunction hexConverter(match, prefix, colorValue, suffix) {\n return prefix + toHex[colorValue.toLowerCase()] + suffix;\n}\n\nfunction nameConverter(match, colorValue, suffix) {\n return toName[colorValue.toLowerCase()] + suffix;\n}\n\nfunction shortenHex(value) {\n var hasHex = value.indexOf('#') > -1;\n var shortened = value.replace(toHexPattern, hexConverter);\n\n if (shortened != value) {\n shortened = shortened.replace(toHexPattern, hexConverter);\n }\n\n return hasHex ?\n shortened.replace(toNamePattern, nameConverter) :\n shortened;\n}\n\nmodule.exports = shortenHex;\n","// HSL to RGB converter. Both methods adapted from:\n// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n\n // normalize hue orientation b/w 0 and 360 degrees\n h = h % 360;\n if (h < 0)\n h += 360;\n h = ~~h / 360;\n\n if (s < 0)\n s = 0;\n else if (s > 100)\n s = 100;\n s = ~~s / 100;\n\n if (l < 0)\n l = 0;\n else if (l > 100)\n l = 100;\n l = ~~l / 100;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ?\n l * (1 + s) :\n l + s - l * s;\n var p = 2 * l - q;\n r = hueToRgb(p, q, h + 1/3);\n g = hueToRgb(p, q, h);\n b = hueToRgb(p, q, h - 1/3);\n }\n\n return [~~(r * 255), ~~(g * 255), ~~(b * 255)];\n}\n\nfunction hueToRgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n}\n\nfunction shortenHsl(hue, saturation, lightness) {\n var asRgb = hslToRgb(hue, saturation, lightness);\n var redAsHex = asRgb[0].toString(16);\n var greenAsHex = asRgb[1].toString(16);\n var blueAsHex = asRgb[2].toString(16);\n\n return '#' +\n ((redAsHex.length == 1 ? '0' : '') + redAsHex) +\n ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) +\n ((blueAsHex.length == 1 ? '0' : '') + blueAsHex);\n}\n\nmodule.exports = shortenHsl;\n","function shortenRgb(red, green, blue) {\n var normalizedRed = Math.max(0, Math.min(parseInt(red), 255));\n var normalizedGreen = Math.max(0, Math.min(parseInt(green), 255));\n var normalizedBlue = Math.max(0, Math.min(parseInt(blue), 255));\n\n // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console\n return '#' + ('00000' + (normalizedRed << 16 | normalizedGreen << 8 | normalizedBlue).toString(16)).slice(-6);\n}\n\nmodule.exports = shortenRgb;\n","var Marker = require('../tokenizer/marker');\n\nfunction is(value, separator, isSeparatorRegex) {\n return isSeparatorRegex ?\n separator.test(value) :\n value === separator;\n}\n\nfunction split(value, separator) {\n var openLevel = Marker.OPEN_ROUND_BRACKET;\n var closeLevel = Marker.CLOSE_ROUND_BRACKET;\n var level = 0;\n var cursor = 0;\n var lastStart = 0;\n var lastValue;\n var lastCharacter;\n var len = value.length;\n var parts = [];\n var isSeparatorRegex = typeof(separator) == 'object' && 'exec' in separator;\n\n if (!isSeparatorRegex && value.indexOf(separator) == -1) {\n return [value];\n }\n\n if (value.indexOf(openLevel) == -1) {\n return value.split(separator);\n }\n\n while (cursor < len) {\n if (value[cursor] == openLevel) {\n level++;\n } else if (value[cursor] == closeLevel) {\n level--;\n }\n\n if (level === 0 && cursor > 0 && cursor + 1 < len && is(value[cursor], separator, isSeparatorRegex)) {\n parts.push(value.substring(lastStart, cursor));\n\n if (isSeparatorRegex && separator.exec(value[cursor]).length > 1) {\n parts.push(value[cursor]);\n }\n\n lastStart = cursor + 1;\n }\n\n cursor++;\n }\n\n if (lastStart < cursor + 1) {\n lastValue = value.substring(lastStart);\n lastCharacter = lastValue[lastValue.length - 1];\n if (is(lastCharacter, separator, isSeparatorRegex)) {\n lastValue = lastValue.substring(0, lastValue.length - 1);\n }\n\n parts.push(lastValue);\n }\n\n return parts;\n}\n\nmodule.exports = split;\n","var shortenHex = require('./color/shorten-hex');\nvar shortenHsl = require('./color/shorten-hsl');\nvar shortenRgb = require('./color/shorten-rgb');\n\nvar split = require('../../../utils/split');\n\nvar ANY_COLOR_FUNCTION_PATTERN = /(rgb|rgba|hsl|hsla)\\(([^\\(\\)]+)\\)/gi;\nvar COLOR_PREFIX_PATTERN = /#|rgb|hsl/gi;\nvar HEX_LONG_PATTERN = /(^|[^='\"])#([0-9a-f]{6})/gi;\nvar HEX_SHORT_PATTERN = /(^|[^='\"])#([0-9a-f]{3})/gi;\nvar HEX_VALUE_PATTERN = /[0-9a-f]/i;\nvar HSL_PATTERN = /hsl\\((-?\\d+),(-?\\d+)%?,(-?\\d+)%?\\)/gi;\nvar RGBA_HSLA_PATTERN = /(rgb|hsl)a?\\((\\-?\\d+),(\\-?\\d+\\%?),(\\-?\\d+\\%?),(0*[1-9]+[0-9]*(\\.?\\d*)?)\\)/gi;\nvar RGB_PATTERN = /rgb\\((\\-?\\d+),(\\-?\\d+),(\\-?\\d+)\\)/gi;\nvar TRANSPARENT_FUNCTION_PATTERN = /(?:rgba|hsla)\\(0,0%?,0%?,0\\)/g;\n\nvar plugin = {\n level1: {\n value: function color(name, value, options) {\n if (!options.compatibility.properties.colors) {\n return value;\n }\n\n if (!value.match(COLOR_PREFIX_PATTERN)) {\n return shortenHex(value);\n }\n\n value = value\n .replace(RGBA_HSLA_PATTERN, function (match, colorFn, p1, p2, p3, alpha) {\n return (parseInt(alpha, 10) >= 1 ? colorFn + '(' + [p1,p2,p3].join(',') + ')' : match);\n })\n .replace(RGB_PATTERN, function (match, red, green, blue) {\n return shortenRgb(red, green, blue);\n })\n .replace(HSL_PATTERN, function (match, hue, saturation, lightness) {\n return shortenHsl(hue, saturation, lightness);\n })\n .replace(HEX_LONG_PATTERN, function (match, prefix, color, at, inputValue) {\n var suffix = inputValue[at + match.length];\n\n if (suffix && HEX_VALUE_PATTERN.test(suffix)) {\n return match;\n } else if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) {\n return (prefix + '#' + color[0] + color[2] + color[4]).toLowerCase();\n } else {\n return (prefix + '#' + color).toLowerCase();\n }\n })\n .replace(HEX_SHORT_PATTERN, function (match, prefix, color) {\n return prefix + '#' + color.toLowerCase();\n })\n .replace(ANY_COLOR_FUNCTION_PATTERN, function (match, colorFunction, colorDef) {\n var tokens = colorDef.split(',');\n var colorFnLowercase = colorFunction && colorFunction.toLowerCase();\n var applies = (colorFnLowercase == 'hsl' && tokens.length == 3) ||\n (colorFnLowercase == 'hsla' && tokens.length == 4) ||\n (colorFnLowercase == 'rgb' && tokens.length === 3 && colorDef.indexOf('%') > 0) ||\n (colorFnLowercase == 'rgba' && tokens.length == 4 && colorDef.indexOf('%') > 0);\n\n if (!applies) {\n return match;\n }\n\n if (tokens[1].indexOf('%') == -1) {\n tokens[1] += '%';\n }\n\n if (tokens[2].indexOf('%') == -1) {\n tokens[2] += '%';\n }\n\n return colorFunction + '(' + tokens.join(',') + ')';\n });\n\n if (options.compatibility.colors.opacity && name.indexOf('background') == -1) {\n value = value.replace(TRANSPARENT_FUNCTION_PATTERN, function (match) {\n if (split(value, ',').pop().indexOf('gradient(') > -1) {\n return match;\n }\n\n return 'transparent';\n });\n }\n\n return shortenHex(value);\n }\n }\n};\n\nmodule.exports = plugin;\n","var ZERO_DEG_PATTERN = /\\(0deg\\)/g;\n\nvar plugin = {\n level1: {\n value: function degrees(_name, value, options) {\n if (!options.compatibility.properties.zeroUnits) {\n return value;\n }\n\n if (value.indexOf('0deg') == -1) {\n return value;\n }\n\n return value.replace(ZERO_DEG_PATTERN, '(0)');\n }\n }\n};\n\nmodule.exports = plugin;\n","var URL_PREFIX_PATTERN = /^url\\(/i;\n\nfunction startsAsUrl(value) {\n return URL_PREFIX_PATTERN.test(value);\n}\n\nmodule.exports = startsAsUrl;\n","var startsAsUrl = require('./starts-as-url');\n\nvar OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar DOT_ZERO_PATTERN = /(^|\\D)\\.0+(\\D|$)/g;\nvar FRACTION_PATTERN = /\\.([1-9]*)0+(\\D|$)/g;\nvar LEADING_ZERO_FRACTION_PATTERN = /(^|\\D)0\\.(\\d)/g;\nvar MINUS_ZERO_FRACTION_PATTERN = /([^\\w\\d\\-]|^)\\-0([^\\.]|$)/g;\nvar ZERO_PREFIXED_UNIT_PATTERN = /(^|\\s)0+([1-9])/g;\n\nvar plugin = {\n level1: {\n value: function fraction(name, value, options) {\n if (!options.level[OptimizationLevel.One].replaceZeroUnits) {\n return value;\n }\n\n if (startsAsUrl(value)) {\n return value;\n }\n\n if (value.indexOf('0') == -1) {\n return value;\n }\n\n if (value.indexOf('-') > -1) {\n value = value\n .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2')\n .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2');\n }\n\n return value\n .replace(ZERO_PREFIXED_UNIT_PATTERN, '$1$2')\n .replace(DOT_ZERO_PATTERN, '$10$2')\n .replace(FRACTION_PATTERN, function (match, nonZeroPart, suffix) {\n return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix;\n })\n .replace(LEADING_ZERO_FRACTION_PATTERN, '$1.$2');\n }\n }\n};\n\nmodule.exports = plugin;\n","var plugin = {\n level1: {\n value: function precision(_name, value, options) {\n if (!options.precision.enabled || value.indexOf('.') === -1) {\n return value;\n }\n\n return value\n .replace(options.precision.decimalPointMatcher, '$1$2$3')\n .replace(options.precision.zeroMatcher, function (match, integerPart, fractionPart, unit) {\n var multiplier = options.precision.units[unit].multiplier;\n var parsedInteger = parseInt(integerPart);\n var integer = isNaN(parsedInteger) ? 0 : parsedInteger;\n var fraction = parseFloat(fractionPart);\n\n return Math.round((integer + fraction) * multiplier) / multiplier + unit;\n });\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar LOCAL_PREFIX_PATTERN = /^local\\(/i;\nvar QUOTED_PATTERN = /^('.*'|\".*\")$/;\nvar QUOTED_BUT_SAFE_PATTERN = /^['\"][a-zA-Z][a-zA-Z\\d\\-_]+['\"]$/;\n\nvar plugin = {\n level1: {\n value: function textQuotes(_name, value, options) {\n if (!options.level[OptimizationLevel.One].removeQuotes) {\n return value;\n }\n\n if (!QUOTED_PATTERN.test(value) && !LOCAL_PREFIX_PATTERN.test(value)) {\n return value;\n }\n\n return QUOTED_BUT_SAFE_PATTERN.test(value) ?\n value.substring(1, value.length - 1) :\n value;\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar TIME_VALUE = /^(\\-?[\\d\\.]+)(m?s)$/;\n\nvar plugin = {\n level1: {\n value: function time(name, value, options) {\n if (!options.level[OptimizationLevel.One].replaceTimeUnits) {\n return value;\n }\n\n if (!TIME_VALUE.test(value)) {\n return value;\n }\n\n return value.replace(TIME_VALUE, function (match, val, unit) {\n var newValue;\n\n if (unit == 'ms') {\n newValue = parseInt(val) / 1000 + 's';\n } else if (unit == 's') {\n newValue = parseFloat(val) * 1000 + 'ms';\n }\n\n return newValue.length < match.length ? newValue : match;\n });\n }\n }\n};\n\nmodule.exports = plugin;\n","var WHOLE_PIXEL_VALUE = /(?:^|\\s|\\()(-?\\d+)px/;\n\nvar plugin = {\n level1: {\n value: function unit(_name, value, options) {\n if (!WHOLE_PIXEL_VALUE.test(value)) {\n return value;\n }\n\n return value.replace(WHOLE_PIXEL_VALUE, function (match, val) {\n var newValue;\n var intVal = parseInt(val);\n\n if (intVal === 0) {\n return match;\n }\n\n if (options.compatibility.properties.shorterLengthUnits && options.compatibility.units.pt && intVal * 3 % 4 === 0) {\n newValue = intVal * 3 / 4 + 'pt';\n }\n\n if (options.compatibility.properties.shorterLengthUnits && options.compatibility.units.pc && intVal % 16 === 0) {\n newValue = intVal / 16 + 'pc';\n }\n\n if (options.compatibility.properties.shorterLengthUnits && options.compatibility.units.in && intVal % 96 === 0) {\n newValue = intVal / 96 + 'in';\n }\n\n if (newValue) {\n newValue = match.substring(0, match.indexOf(val)) + newValue;\n }\n\n return newValue && newValue.length < match.length ? newValue : match;\n });\n }\n }\n};\n\nmodule.exports = plugin;\n","var startsAsUrl = require('./starts-as-url');\n\nvar OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar URL_PREFIX_PATTERN = /^url\\(/i;\n\nvar plugin = {\n level1: {\n value: function urlPrefix(_name, value, options) {\n if (!options.level[OptimizationLevel.One].normalizeUrls) {\n return value;\n }\n\n if (!startsAsUrl(value)) {\n return value;\n }\n\n return value.replace(URL_PREFIX_PATTERN, 'url(');\n }\n }\n};\n\nmodule.exports = plugin;\n","var QUOTED_URL_PATTERN = /^url\\(['\"].+['\"]\\)$/;\nvar QUOTED_URL_WITH_WHITESPACE_PATTERN = /^url\\(['\"].*[\\*\\s\\(\\)'\"].*['\"]\\)$/;\nvar QUOTES_PATTERN = /[\"']/g;\nvar URL_DATA_PATTERN = /^url\\(['\"]data:[^;]+;charset/;\n\nvar plugin = {\n level1: {\n value: function urlQuotes(_name, value, options) {\n if (options.compatibility.properties.urlQuotes) {\n return value;\n }\n\n return QUOTED_URL_PATTERN.test(value) && !QUOTED_URL_WITH_WHITESPACE_PATTERN.test(value) && !URL_DATA_PATTERN.test(value) ?\n value.replace(QUOTES_PATTERN, '') :\n value;\n }\n }\n};\n\nmodule.exports = plugin;\n","var startsAsUrl = require('./starts-as-url');\n\nvar WHITESPACE_PATTERN = /\\\\?\\n|\\\\?\\r\\n/g;\nvar WHITESPACE_PREFIX_PATTERN = /(\\()\\s+/g;\nvar WHITESPACE_SUFFIX_PATTERN = /\\s+(\\))/g;\n\nvar plugin = {\n level1: {\n value: function urlWhitespace(_name, value) {\n if (!startsAsUrl(value)) {\n return value;\n }\n\n return value\n .replace(WHITESPACE_PATTERN, '')\n .replace(WHITESPACE_PREFIX_PATTERN, '$1')\n .replace(WHITESPACE_SUFFIX_PATTERN, '$1');\n }\n }\n};\n\nmodule.exports = plugin;\n","var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nvar Marker = require('../../../tokenizer/marker');\n\nvar CALC_DIVISION_WHITESPACE_PATTERN = /\\) ?\\/ ?/g;\nvar COMMA_AND_SPACE_PATTERN = /, /g;\nvar MULTI_WHITESPACE_PATTERN = /\\s+/g;\nvar FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN = /\\s+(;?\\))/g;\nvar FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN = /(\\(;?)\\s+/g;\n\nvar plugin = {\n level1: {\n value: function whitespace(name, value, options) {\n if (!options.level[OptimizationLevel.One].removeWhitespace) {\n return value;\n }\n\n if (value.indexOf(' ') == -1 || value.indexOf('expression') === 0) {\n return value;\n }\n\n if (value.indexOf(Marker.SINGLE_QUOTE) > -1 || value.indexOf(Marker.DOUBLE_QUOTE) > -1) {\n return value;\n }\n\n value = value.replace(MULTI_WHITESPACE_PATTERN, ' ');\n\n if (value.indexOf('calc') > -1) {\n value = value.replace(CALC_DIVISION_WHITESPACE_PATTERN, ')/ ');\n }\n\n return value\n .replace(FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN, '$1')\n .replace(FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN, '$1')\n .replace(COMMA_AND_SPACE_PATTERN, ',');\n }\n }\n};\n\nmodule.exports = plugin;\n","var split = require('../../../utils/split');\n\nvar ANY_FUNCTION_PATTERN = /^(\\-(?:moz|ms|o|webkit)\\-[a-z\\-]+|[a-z\\-]+)\\((.+)\\)$/;\nvar SKIP_FUNCTION_PATTERN = /^(?:\\-moz\\-calc|\\-webkit\\-calc|calc|rgb|hsl|rgba|hsla|min|max|clamp|expression)\\(/;\nvar TOKEN_SEPARATOR_PATTERN = /([\\s,\\/])/;\n\nfunction removeRecursively(value, options) {\n var functionTokens;\n var tokens;\n\n if (SKIP_FUNCTION_PATTERN.test(value)) {\n return value;\n }\n\n functionTokens = ANY_FUNCTION_PATTERN.exec(value);\n\n if (!functionTokens) {\n return removeZeros(value, options);\n }\n\n tokens = split(functionTokens[2], TOKEN_SEPARATOR_PATTERN)\n .map(function (token) { return removeRecursively(token, options); });\n\n return functionTokens[1] + '(' + tokens.join('') + ')';\n}\n\nfunction removeZeros(value, options) {\n return value\n .replace(options.unitsRegexp, '$1' + '0' + '$2')\n .replace(options.unitsRegexp, '$1' + '0' + '$2');\n}\n\nvar plugin = {\n level1: {\n value: function zero(name, value, options) {\n if (!options.compatibility.properties.zeroUnits) {\n return value;\n }\n\n if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) {\n return value;\n }\n\n return removeRecursively(value, options);\n }\n }\n};\n\nmodule.exports = plugin;\n","module.exports = {\n color: require('./value-optimizers/color').level1.value,\n degrees: require('./value-optimizers/degrees').level1.value,\n fraction: require('./value-optimizers/fraction').level1.value,\n precision: require('./value-optimizers/precision').level1.value,\n textQuotes: require('./value-optimizers/text-quotes').level1.value,\n time: require('./value-optimizers/time').level1.value,\n unit: require('./value-optimizers/unit').level1.value,\n urlPrefix: require('./value-optimizers/url-prefix').level1.value,\n urlQuotes: require('./value-optimizers/url-quotes').level1.value,\n urlWhiteSpace: require('./value-optimizers/url-whitespace').level1.value,\n whiteSpace: require('./value-optimizers/whitespace').level1.value,\n zero: require('./value-optimizers/zero').level1.value\n};\n","// Contains the interpretation of CSS properties, as used by the property optimizer\n\nvar breakUp = require('./configuration/break-up');\nvar canOverride = require('./configuration/can-override');\nvar restore = require('./configuration/restore');\n\nvar propertyOptimizers = require('./level-1/property-optimizers');\nvar valueOptimizers = require('./level-1/value-optimizers');\n\nvar override = require('../utils/override');\n\n// Properties to process\n// Extend this object in order to add support for more properties in the optimizer.\n//\n// Each key in this object represents a CSS property and should be an object.\n// Such an object contains properties that describe how the represented CSS property should be handled.\n// Possible options:\n//\n// * components: array (Only specify for shorthand properties.)\n// Contains the names of the granular properties this shorthand compacts.\n//\n// * canOverride: function\n// Returns whether two tokens of this property can be merged with each other.\n// This property has no meaning for shorthands.\n//\n// * defaultValue: string\n// Specifies the default value of the property according to the CSS standard.\n// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components.\n//\n// * shortestValue: string\n// Specifies the shortest possible value the property can possibly have.\n// (Falls back to defaultValue if unspecified.)\n//\n// * breakUp: function (Only specify for shorthand properties.)\n// Breaks the shorthand up to its components.\n//\n// * restore: function (Only specify for shorthand properties.)\n// Puts the shorthand together from its components.\n//\nvar configuration = {\n 'animation': {\n canOverride: canOverride.generic.components([\n canOverride.generic.time,\n canOverride.generic.timingFunction,\n canOverride.generic.time,\n canOverride.property.animationIterationCount,\n canOverride.property.animationDirection,\n canOverride.property.animationFillMode,\n canOverride.property.animationPlayState,\n canOverride.property.animationName\n ]),\n components: [\n 'animation-duration',\n 'animation-timing-function',\n 'animation-delay',\n 'animation-iteration-count',\n 'animation-direction',\n 'animation-fill-mode',\n 'animation-play-state',\n 'animation-name'\n ],\n breakUp: breakUp.multiplex(breakUp.animation),\n defaultValue: 'none',\n restore: restore.multiplex(restore.withoutDefaults),\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.textQuotes,\n valueOptimizers.time,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-delay': {\n canOverride: canOverride.generic.time,\n componentOf: [\n 'animation'\n ],\n defaultValue: '0s',\n intoMultiplexMode: 'real',\n valueOptimizers: [\n valueOptimizers.time,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-direction': {\n canOverride: canOverride.property.animationDirection,\n componentOf: [\n 'animation'\n ],\n defaultValue: 'normal',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-duration': {\n canOverride: canOverride.generic.time,\n componentOf: [\n 'animation'\n ],\n defaultValue: '0s',\n intoMultiplexMode: 'real',\n keepUnlessDefault: 'animation-delay',\n valueOptimizers: [\n valueOptimizers.time,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-fill-mode': {\n canOverride: canOverride.property.animationFillMode,\n componentOf: [\n 'animation'\n ],\n defaultValue: 'none',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-iteration-count': {\n canOverride: canOverride.property.animationIterationCount,\n componentOf: [\n 'animation'\n ],\n defaultValue: '1',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-name': {\n canOverride: canOverride.property.animationName,\n componentOf: [\n 'animation'\n ],\n defaultValue: 'none',\n intoMultiplexMode: 'real',\n valueOptimizers: [\n valueOptimizers.textQuotes\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-play-state': {\n canOverride: canOverride.property.animationPlayState,\n componentOf: [\n 'animation'\n ],\n defaultValue: 'running',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'animation-timing-function': {\n canOverride: canOverride.generic.timingFunction,\n componentOf: [\n 'animation'\n ],\n defaultValue: 'ease',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-o-',\n '-webkit-'\n ]\n },\n 'background': {\n canOverride: canOverride.generic.components([\n canOverride.generic.image,\n canOverride.property.backgroundPosition,\n canOverride.property.backgroundSize,\n canOverride.property.backgroundRepeat,\n canOverride.property.backgroundAttachment,\n canOverride.property.backgroundOrigin,\n canOverride.property.backgroundClip,\n canOverride.generic.color\n ]),\n components: [\n 'background-image',\n 'background-position',\n 'background-size',\n 'background-repeat',\n 'background-attachment',\n 'background-origin',\n 'background-clip',\n 'background-color'\n ],\n breakUp: breakUp.multiplex(breakUp.background),\n defaultValue: '0 0',\n propertyOptimizer: propertyOptimizers.background,\n restore: restore.multiplex(restore.background),\n shortestValue: '0',\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.urlWhiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.zero,\n valueOptimizers.color,\n valueOptimizers.urlPrefix,\n valueOptimizers.urlQuotes\n ]\n },\n 'background-attachment': {\n canOverride: canOverride.property.backgroundAttachment,\n componentOf: [\n 'background'\n ],\n defaultValue: 'scroll',\n intoMultiplexMode: 'real'\n },\n 'background-clip': {\n canOverride: canOverride.property.backgroundClip,\n componentOf: [\n 'background'\n ],\n defaultValue: 'border-box',\n intoMultiplexMode: 'real',\n shortestValue: 'border-box'\n },\n 'background-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'background'\n ],\n defaultValue: 'transparent',\n intoMultiplexMode: 'real', // otherwise real color will turn into default since color appears in last multiplex only\n multiplexLastOnly: true,\n nonMergeableValue: 'none',\n shortestValue: 'red',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'background-image': {\n canOverride: canOverride.generic.image,\n componentOf: [\n 'background'\n ],\n defaultValue: 'none',\n intoMultiplexMode: 'default',\n valueOptimizers: [\n valueOptimizers.urlWhiteSpace,\n valueOptimizers.urlPrefix,\n valueOptimizers.urlQuotes,\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero,\n valueOptimizers.color\n ]\n },\n 'background-origin': {\n canOverride: canOverride.property.backgroundOrigin,\n componentOf: [\n 'background'\n ],\n defaultValue: 'padding-box',\n intoMultiplexMode: 'real',\n shortestValue: 'border-box'\n },\n 'background-position': {\n canOverride: canOverride.property.backgroundPosition,\n componentOf: [\n 'background'\n ],\n defaultValue: ['0', '0'],\n doubleValues: true,\n intoMultiplexMode: 'real',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'background-repeat': {\n canOverride: canOverride.property.backgroundRepeat,\n componentOf: [\n 'background'\n ],\n defaultValue: ['repeat'],\n doubleValues: true,\n intoMultiplexMode: 'real'\n },\n 'background-size': {\n canOverride: canOverride.property.backgroundSize,\n componentOf: [\n 'background'\n ],\n defaultValue: ['auto'],\n doubleValues: true,\n intoMultiplexMode: 'real',\n shortestValue: '0 0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'bottom': {\n canOverride: canOverride.property.bottom,\n defaultValue: 'auto',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'border': {\n breakUp: breakUp.border,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.property.borderStyle,\n canOverride.generic.color\n ]),\n components: [\n 'border-width',\n 'border-style',\n 'border-color'\n ],\n defaultValue: 'none',\n overridesShorthands: [\n 'border-bottom',\n 'border-left',\n 'border-right',\n 'border-top'\n ],\n restore: restore.withoutDefaults,\n shorthand: true,\n shorthandComponents: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.zero,\n valueOptimizers.color\n ]\n },\n 'border-bottom': {\n breakUp: breakUp.border,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.property.borderStyle,\n canOverride.generic.color\n ]),\n components: [\n 'border-bottom-width',\n 'border-bottom-style',\n 'border-bottom-color'\n ],\n defaultValue: 'none',\n restore: restore.withoutDefaults,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.zero,\n valueOptimizers.color\n ]\n },\n 'border-bottom-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'border-bottom',\n 'border-color'\n ],\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-bottom-left-radius': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-radius'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.borderRadius,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-'\n ]\n },\n 'border-bottom-right-radius': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-radius'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.borderRadius,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-'\n ]\n },\n 'border-bottom-style': {\n canOverride: canOverride.property.borderStyle,\n componentOf: [\n 'border-bottom',\n 'border-style'\n ],\n defaultValue: 'none'\n },\n 'border-bottom-width': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-bottom',\n 'border-width'\n ],\n defaultValue: 'medium',\n oppositeTo: 'border-top-width',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'border-collapse': {\n canOverride: canOverride.property.borderCollapse,\n defaultValue: 'separate'\n },\n 'border-color': {\n breakUp: breakUp.fourValues,\n canOverride: canOverride.generic.components([\n canOverride.generic.color,\n canOverride.generic.color,\n canOverride.generic.color,\n canOverride.generic.color\n ]),\n componentOf: [\n 'border'\n ],\n components: [\n 'border-top-color',\n 'border-right-color',\n 'border-bottom-color',\n 'border-left-color'\n ],\n defaultValue: 'none',\n restore: restore.fourValues,\n shortestValue: 'red',\n shorthand: true,\n singleTypeComponents: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-left': {\n breakUp: breakUp.border,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.property.borderStyle,\n canOverride.generic.color\n ]),\n components: [\n 'border-left-width',\n 'border-left-style',\n 'border-left-color'\n ],\n defaultValue: 'none',\n restore: restore.withoutDefaults,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.zero,\n valueOptimizers.color\n ]\n },\n 'border-left-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'border-color',\n 'border-left'\n ],\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-left-style': {\n canOverride: canOverride.property.borderStyle,\n componentOf: [\n 'border-left',\n 'border-style'\n ],\n defaultValue: 'none'\n },\n 'border-left-width': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-left',\n 'border-width'\n ],\n defaultValue: 'medium',\n oppositeTo: 'border-right-width',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'border-radius': {\n breakUp: breakUp.borderRadius,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit\n ]),\n components: [\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.borderRadius,\n restore: restore.borderRadius,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-'\n ]\n },\n 'border-right': {\n breakUp: breakUp.border,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.property.borderStyle,\n canOverride.generic.color\n ]),\n components: [\n 'border-right-width',\n 'border-right-style',\n 'border-right-color'\n ],\n defaultValue: 'none',\n restore: restore.withoutDefaults,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-right-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'border-color',\n 'border-right'\n ],\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-right-style': {\n canOverride: canOverride.property.borderStyle,\n componentOf: [\n 'border-right',\n 'border-style'\n ],\n defaultValue: 'none'\n },\n 'border-right-width': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-right',\n 'border-width'\n ],\n defaultValue: 'medium',\n oppositeTo: 'border-left-width',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'border-style': {\n breakUp: breakUp.fourValues,\n canOverride: canOverride.generic.components([\n canOverride.property.borderStyle,\n canOverride.property.borderStyle,\n canOverride.property.borderStyle,\n canOverride.property.borderStyle\n ]),\n componentOf: [\n 'border'\n ],\n components: [\n 'border-top-style',\n 'border-right-style',\n 'border-bottom-style',\n 'border-left-style'\n ],\n defaultValue: 'none',\n restore: restore.fourValues,\n shorthand: true,\n singleTypeComponents: true\n },\n 'border-top': {\n breakUp: breakUp.border,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.property.borderStyle,\n canOverride.generic.color\n ]),\n components: [\n 'border-top-width',\n 'border-top-style',\n 'border-top-color'\n ],\n defaultValue: 'none',\n restore: restore.withoutDefaults,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.zero,\n valueOptimizers.color,\n valueOptimizers.unit\n ]\n },\n 'border-top-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'border-color',\n 'border-top'\n ],\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'border-top-left-radius': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-radius'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.borderRadius,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-'\n ]\n },\n 'border-top-right-radius': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-radius'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.borderRadius,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-o-'\n ]\n },\n 'border-top-style': {\n canOverride: canOverride.property.borderStyle,\n componentOf: [\n 'border-style',\n 'border-top'\n ],\n defaultValue: 'none'\n },\n 'border-top-width': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'border-top',\n 'border-width'\n ],\n defaultValue: 'medium',\n oppositeTo: 'border-bottom-width',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'border-width': {\n breakUp: breakUp.fourValues,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit\n ]),\n componentOf: [\n 'border'\n ],\n components: [\n 'border-top-width',\n 'border-right-width',\n 'border-bottom-width',\n 'border-left-width'\n ],\n defaultValue: 'medium',\n restore: restore.fourValues,\n shortestValue: '0',\n shorthand: true,\n singleTypeComponents: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'box-shadow': {\n propertyOptimizer: propertyOptimizers.boxShadow,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero,\n valueOptimizers.color\n ],\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'clear': {\n canOverride: canOverride.property.clear,\n defaultValue: 'none'\n },\n 'clip': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'color': {\n canOverride: canOverride.generic.color,\n defaultValue: 'transparent',\n shortestValue: 'red',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'column-gap': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'cursor': {\n canOverride: canOverride.property.cursor,\n defaultValue: 'auto'\n },\n 'display': {\n canOverride: canOverride.property.display,\n },\n 'filter': {\n propertyOptimizer: propertyOptimizers.filter,\n valueOptimizers: [\n valueOptimizers.fraction\n ]\n },\n 'float': {\n canOverride: canOverride.property.float,\n defaultValue: 'none'\n },\n 'font': {\n breakUp: breakUp.font,\n canOverride: canOverride.generic.components([\n canOverride.property.fontStyle,\n canOverride.property.fontVariant,\n canOverride.property.fontWeight,\n canOverride.property.fontStretch,\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.property.fontFamily\n ]),\n components: [\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'font-stretch',\n 'font-size',\n 'line-height',\n 'font-family'\n ],\n restore: restore.font,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.textQuotes\n ]\n },\n 'font-family': {\n canOverride: canOverride.property.fontFamily,\n defaultValue: 'user|agent|specific',\n valueOptimizers: [\n valueOptimizers.textQuotes\n ]\n },\n 'font-size': {\n canOverride: canOverride.generic.unit,\n defaultValue: 'medium',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.fraction\n ]\n },\n 'font-stretch': {\n canOverride: canOverride.property.fontStretch,\n defaultValue: 'normal'\n },\n 'font-style': {\n canOverride: canOverride.property.fontStyle,\n defaultValue: 'normal'\n },\n 'font-variant': {\n canOverride: canOverride.property.fontVariant,\n defaultValue: 'normal'\n },\n 'font-weight': {\n canOverride: canOverride.property.fontWeight,\n defaultValue: 'normal',\n propertyOptimizer: propertyOptimizers.fontWeight,\n shortestValue: '400'\n },\n 'gap': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'height': {\n canOverride: canOverride.generic.unit,\n defaultValue: 'auto',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'left': {\n canOverride: canOverride.property.left,\n defaultValue: 'auto',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'letter-spacing': {\n valueOptimizers: [\n valueOptimizers.fraction,\n valueOptimizers.zero\n ]\n },\n 'line-height': {\n canOverride: canOverride.generic.unitOrNumber,\n defaultValue: 'normal',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.fraction,\n valueOptimizers.zero\n ]\n },\n 'list-style': {\n canOverride: canOverride.generic.components([\n canOverride.property.listStyleType,\n canOverride.property.listStylePosition,\n canOverride.property.listStyleImage\n ]),\n components: [\n 'list-style-type',\n 'list-style-position',\n 'list-style-image'\n ],\n breakUp: breakUp.listStyle,\n restore: restore.withoutDefaults,\n defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for <ol>\n shortestValue: 'none',\n shorthand: true\n },\n 'list-style-image' : {\n canOverride: canOverride.generic.image,\n componentOf: [\n 'list-style'\n ],\n defaultValue: 'none'\n },\n 'list-style-position' : {\n canOverride: canOverride.property.listStylePosition,\n componentOf: [\n 'list-style'\n ],\n defaultValue: 'outside',\n shortestValue: 'inside'\n },\n 'list-style-type' : {\n canOverride: canOverride.property.listStyleType,\n componentOf: [\n 'list-style'\n ],\n // NOTE: we can't tell the real default value here, it's 'disc' for <ul> and 'decimal' for <ol>\n // this is a hack, but it doesn't matter because this value will be either overridden or\n // it will disappear at the final step anyway\n defaultValue: 'decimal|disc',\n shortestValue: 'none'\n },\n 'margin': {\n breakUp: breakUp.fourValues,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit\n ]),\n components: [\n 'margin-top',\n 'margin-right',\n 'margin-bottom',\n 'margin-left'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.margin,\n restore: restore.fourValues,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-bottom': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'margin'\n ],\n defaultValue: '0',\n oppositeTo: 'margin-top',\n propertyOptimizer: propertyOptimizers.margin,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-inline-end': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-inline-start': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-left': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'margin'\n ],\n defaultValue: '0',\n oppositeTo: 'margin-right',\n propertyOptimizer: propertyOptimizers.margin,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-right': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'margin'\n ],\n defaultValue: '0',\n oppositeTo: 'margin-left',\n propertyOptimizer: propertyOptimizers.margin,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'margin-top': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'margin'\n ],\n defaultValue: '0',\n oppositeTo: 'margin-bottom',\n propertyOptimizer: propertyOptimizers.margin,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'max-height': {\n canOverride: canOverride.generic.unit,\n defaultValue: 'none',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'max-width': {\n canOverride: canOverride.generic.unit,\n defaultValue: 'none',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'min-height': {\n canOverride: canOverride.generic.unit,\n defaultValue: '0',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'min-width': {\n canOverride: canOverride.generic.unit,\n defaultValue: '0',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'opacity': {\n valueOptimizers: [\n valueOptimizers.fraction,\n valueOptimizers.precision\n ]\n },\n 'outline': {\n canOverride: canOverride.generic.components([\n canOverride.generic.color,\n canOverride.property.outlineStyle,\n canOverride.generic.unit\n ]),\n components: [\n 'outline-color',\n 'outline-style',\n 'outline-width'\n ],\n breakUp: breakUp.outline,\n restore: restore.withoutDefaults,\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.outline,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'outline-color': {\n canOverride: canOverride.generic.color,\n componentOf: [\n 'outline'\n ],\n defaultValue: 'invert',\n shortestValue: 'red',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.color\n ]\n },\n 'outline-style': {\n canOverride: canOverride.property.outlineStyle,\n componentOf: [\n 'outline'\n ],\n defaultValue: 'none'\n },\n 'outline-width': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'outline'\n ],\n defaultValue: 'medium',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'overflow': {\n canOverride: canOverride.property.overflow,\n defaultValue: 'visible'\n },\n 'overflow-x': {\n canOverride: canOverride.property.overflow,\n defaultValue: 'visible'\n },\n 'overflow-y': {\n canOverride: canOverride.property.overflow,\n defaultValue: 'visible'\n },\n 'padding': {\n breakUp: breakUp.fourValues,\n canOverride: canOverride.generic.components([\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit,\n canOverride.generic.unit\n ]),\n components: [\n 'padding-top',\n 'padding-right',\n 'padding-bottom',\n 'padding-left'\n ],\n defaultValue: '0',\n propertyOptimizer: propertyOptimizers.padding,\n restore: restore.fourValues,\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'padding-bottom': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'padding'\n ],\n defaultValue: '0',\n oppositeTo: 'padding-top',\n propertyOptimizer: propertyOptimizers.padding,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'padding-left': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'padding'\n ],\n defaultValue: '0',\n oppositeTo: 'padding-right',\n propertyOptimizer: propertyOptimizers.padding,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'padding-right': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'padding'\n ],\n defaultValue: '0',\n oppositeTo: 'padding-left',\n propertyOptimizer: propertyOptimizers.padding,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'padding-top': {\n canOverride: canOverride.generic.unit,\n componentOf: [\n 'padding'\n ],\n defaultValue: '0',\n oppositeTo: 'padding-bottom',\n propertyOptimizer: propertyOptimizers.padding,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'position': {\n canOverride: canOverride.property.position,\n defaultValue: 'static'\n },\n 'right': {\n canOverride: canOverride.property.right,\n defaultValue: 'auto',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'row-gap': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'src': {\n valueOptimizers: [\n valueOptimizers.urlWhiteSpace,\n valueOptimizers.urlPrefix,\n valueOptimizers.urlQuotes\n ]\n },\n 'stroke-width': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'text-align': {\n canOverride: canOverride.property.textAlign,\n // NOTE: we can't tell the real default value here, as it depends on default text direction\n // this is a hack, but it doesn't matter because this value will be either overridden or\n // it will disappear anyway\n defaultValue: 'left|right'\n },\n 'text-decoration': {\n canOverride: canOverride.property.textDecoration,\n defaultValue: 'none'\n },\n 'text-indent': {\n canOverride: canOverride.property.textOverflow,\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.fraction,\n valueOptimizers.zero\n ]\n },\n 'text-overflow': {\n canOverride: canOverride.property.textOverflow,\n defaultValue: 'none'\n },\n 'text-shadow': {\n canOverride: canOverride.property.textShadow,\n defaultValue: 'none',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.zero,\n valueOptimizers.color\n ]\n },\n 'top': {\n canOverride: canOverride.property.top,\n defaultValue: 'auto',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'transform': {\n canOverride: canOverride.property.transform,\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.degrees,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ],\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'transition': {\n breakUp: breakUp.multiplex(breakUp.transition),\n canOverride: canOverride.generic.components([\n canOverride.property.transitionProperty,\n canOverride.generic.time,\n canOverride.generic.timingFunction,\n canOverride.generic.time\n ]),\n components: [\n 'transition-property',\n 'transition-duration',\n 'transition-timing-function',\n 'transition-delay'\n ],\n defaultValue: 'none',\n restore: restore.multiplex(restore.withoutDefaults),\n shorthand: true,\n valueOptimizers: [\n valueOptimizers.time,\n valueOptimizers.fraction\n ],\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'transition-delay': {\n canOverride: canOverride.generic.time,\n componentOf: [\n 'transition'\n ],\n defaultValue: '0s',\n intoMultiplexMode: 'real',\n valueOptimizers: [\n valueOptimizers.time\n ],\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'transition-duration': {\n canOverride: canOverride.generic.time,\n componentOf: [\n 'transition'\n ],\n defaultValue: '0s',\n intoMultiplexMode: 'real',\n keepUnlessDefault: 'transition-delay',\n valueOptimizers: [\n valueOptimizers.time,\n valueOptimizers.fraction\n ],\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'transition-property': {\n canOverride: canOverride.generic.propertyName,\n componentOf: [\n 'transition'\n ],\n defaultValue: 'all',\n intoMultiplexMode: 'placeholder',\n placeholderValue: '_', // it's a short value that won't match any property and still be a valid `transition-property`\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'transition-timing-function': {\n canOverride: canOverride.generic.timingFunction,\n componentOf: [\n 'transition'\n ],\n defaultValue: 'ease',\n intoMultiplexMode: 'real',\n vendorPrefixes: [\n '-moz-',\n '-ms-',\n '-o-',\n '-webkit-'\n ]\n },\n 'vertical-align': {\n canOverride: canOverride.property.verticalAlign,\n defaultValue: 'baseline',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'visibility': {\n canOverride: canOverride.property.visibility,\n defaultValue: 'visible'\n },\n '-webkit-tap-highlight-color': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.color\n ]\n },\n '-webkit-margin-end': {\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'white-space': {\n canOverride: canOverride.property.whiteSpace,\n defaultValue: 'normal'\n },\n 'width': {\n canOverride: canOverride.generic.unit,\n defaultValue: 'auto',\n shortestValue: '0',\n valueOptimizers: [\n valueOptimizers.whiteSpace,\n valueOptimizers.fraction,\n valueOptimizers.precision,\n valueOptimizers.unit,\n valueOptimizers.zero\n ]\n },\n 'z-index': {\n canOverride: canOverride.property.zIndex,\n defaultValue: 'auto'\n }\n};\n\n// generate vendor-prefixed configuration\nvar vendorPrefixedConfiguration = {};\n\nfunction cloneDescriptor(propertyName, prefix) {\n var clonedDescriptor = override(configuration[propertyName], {});\n\n if ('componentOf' in clonedDescriptor) {\n clonedDescriptor.componentOf = clonedDescriptor.componentOf.map(function (shorthandName) {\n return prefix + shorthandName;\n });\n }\n\n if ('components' in clonedDescriptor) {\n clonedDescriptor.components = clonedDescriptor.components.map(function (longhandName) {\n return prefix + longhandName;\n });\n }\n\n if ('keepUnlessDefault' in clonedDescriptor) {\n clonedDescriptor.keepUnlessDefault = prefix + clonedDescriptor.keepUnlessDefault;\n }\n\n return clonedDescriptor;\n}\n\nvar vendorPrefixedConfiguration = {};\n\nfor (var propertyName in configuration) {\n var descriptor = configuration[propertyName];\n\n if (!('vendorPrefixes' in descriptor)) {\n continue;\n }\n\n for (var i = 0; i < descriptor.vendorPrefixes.length; i++) {\n var prefix = descriptor.vendorPrefixes[i];\n var clonedDescriptor = cloneDescriptor(propertyName, prefix);\n delete clonedDescriptor.vendorPrefixes;\n\n vendorPrefixedConfiguration[prefix + propertyName] = clonedDescriptor;\n }\n\n delete descriptor.vendorPrefixes;\n}\n\nmodule.exports = override(configuration, vendorPrefixedConfiguration);\n","var emptyCharacter = '';\n\nvar Breaks = require('../options/format').Breaks;\nvar Spaces = require('../options/format').Spaces;\n\nvar Marker = require('../tokenizer/marker');\nvar Token = require('../tokenizer/token');\n\nfunction supportsAfterClosingBrace(token) {\n return token[1][1] == 'background' || token[1][1] == 'transform' || token[1][1] == 'src';\n}\n\nfunction afterClosingBrace(token, valueIndex) {\n return token[valueIndex][1][token[valueIndex][1].length - 1] == Marker.CLOSE_ROUND_BRACKET;\n}\n\nfunction afterComma(token, valueIndex) {\n return token[valueIndex][1] == Marker.COMMA;\n}\n\nfunction afterSlash(token, valueIndex) {\n return token[valueIndex][1] == Marker.FORWARD_SLASH;\n}\n\nfunction beforeComma(token, valueIndex) {\n return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.COMMA;\n}\n\nfunction beforeSlash(token, valueIndex) {\n return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.FORWARD_SLASH;\n}\n\nfunction inFilter(token) {\n return token[1][1] == 'filter' || token[1][1] == '-ms-filter';\n}\n\nfunction disallowsSpace(context, token, valueIndex) {\n return !context.spaceAfterClosingBrace && supportsAfterClosingBrace(token) && afterClosingBrace(token, valueIndex) ||\n beforeSlash(token, valueIndex) ||\n afterSlash(token, valueIndex) ||\n beforeComma(token, valueIndex) ||\n afterComma(token, valueIndex);\n}\n\nfunction rules(context, tokens) {\n var store = context.store;\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n store(context, tokens[i]);\n\n if (i < l - 1) {\n store(context, comma(context));\n }\n }\n}\n\nfunction body(context, tokens) {\n var lastPropertyAt = lastPropertyIndex(tokens);\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n property(context, tokens, i, lastPropertyAt);\n }\n}\n\nfunction lastPropertyIndex(tokens) {\n var index = tokens.length - 1;\n\n for (; index >= 0; index--) {\n if (tokens[index][0] != Token.COMMENT) {\n break;\n }\n }\n\n return index;\n}\n\nfunction property(context, tokens, position, lastPropertyAt) {\n var store = context.store;\n var token = tokens[position];\n\n var propertyValue = token[2];\n var isPropertyBlock = propertyValue && propertyValue[0] === Token.PROPERTY_BLOCK;\n\n var needsSemicolon;\n if ( context.format ) {\n if ( context.format.semicolonAfterLastProperty || isPropertyBlock ) {\n needsSemicolon = true;\n } else if ( position < lastPropertyAt ) {\n needsSemicolon = true;\n } else {\n needsSemicolon = false;\n }\n } else {\n needsSemicolon = position < lastPropertyAt || isPropertyBlock;\n }\n\n var isLast = position === lastPropertyAt;\n\n switch (token[0]) {\n case Token.AT_RULE:\n store(context, token);\n store(context, semicolon(context, Breaks.AfterProperty, false));\n break;\n case Token.AT_RULE_BLOCK:\n rules(context, token[1]);\n store(context, openBrace(context, Breaks.AfterRuleBegins, true));\n body(context, token[2]);\n store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));\n break;\n case Token.COMMENT:\n store(context, token);\n store(context, breakFor(context, Breaks.AfterComment) + context.indentWith);\n break;\n case Token.PROPERTY:\n store(context, token[1]);\n store(context, colon(context));\n if (propertyValue) {\n value(context, token);\n }\n store(context, needsSemicolon ? semicolon(context, Breaks.AfterProperty, isLast) : emptyCharacter);\n break;\n case Token.RAW:\n store(context, token);\n }\n}\n\nfunction value(context, token) {\n var store = context.store;\n var j, m;\n\n if (token[2][0] == Token.PROPERTY_BLOCK) {\n store(context, openBrace(context, Breaks.AfterBlockBegins, false));\n body(context, token[2][1]);\n store(context, closeBrace(context, Breaks.AfterBlockEnds, false, true));\n } else {\n for (j = 2, m = token.length; j < m; j++) {\n store(context, token[j]);\n\n if (j < m - 1 && (inFilter(token) || !disallowsSpace(context, token, j))) {\n store(context, Marker.SPACE);\n }\n }\n }\n}\n\nfunction breakFor(context, where) {\n return context.format ? context.format.breaks[where] : emptyCharacter;\n}\n\nfunction allowsSpace(context, where) {\n return context.format && context.format.spaces[where];\n}\n\nfunction openBrace(context, where, needsPrefixSpace) {\n if (context.format) {\n context.indentBy += context.format.indentBy;\n context.indentWith = context.format.indentWith.repeat(context.indentBy);\n return (needsPrefixSpace && allowsSpace(context, Spaces.BeforeBlockBegins) ? Marker.SPACE : emptyCharacter) +\n Marker.OPEN_CURLY_BRACKET +\n breakFor(context, where) +\n context.indentWith;\n } else {\n return Marker.OPEN_CURLY_BRACKET;\n }\n}\n\nfunction closeBrace(context, where, beforeBlockEnd, isLast) {\n if (context.format) {\n context.indentBy -= context.format.indentBy;\n context.indentWith = context.format.indentWith.repeat(context.indentBy);\n return (beforeBlockEnd ? breakFor(context, Breaks.BeforeBlockEnds) : breakFor(context, Breaks.AfterProperty)) +\n context.indentWith +\n Marker.CLOSE_CURLY_BRACKET +\n (isLast ? emptyCharacter : breakFor(context, where) + context.indentWith);\n } else {\n return Marker.CLOSE_CURLY_BRACKET;\n }\n}\n\nfunction colon(context) {\n return context.format ?\n Marker.COLON + (allowsSpace(context, Spaces.BeforeValue) ? Marker.SPACE : emptyCharacter) :\n Marker.COLON;\n}\n\nfunction semicolon(context, where, isLast) {\n return context.format ?\n Marker.SEMICOLON + (isLast ? emptyCharacter : (breakFor(context, where) + context.indentWith)) :\n Marker.SEMICOLON;\n}\n\nfunction comma(context) {\n return context.format ?\n Marker.COMMA + breakFor(context, Breaks.BetweenSelectors) + context.indentWith :\n Marker.COMMA;\n}\n\nfunction all(context, tokens) {\n var store = context.store;\n var token;\n var isLast;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n isLast = i == l - 1;\n\n switch (token[0]) {\n case Token.AT_RULE:\n store(context, token);\n store(context, semicolon(context, Breaks.AfterAtRule, isLast));\n break;\n case Token.AT_RULE_BLOCK:\n rules(context, token[1]);\n store(context, openBrace(context, Breaks.AfterRuleBegins, true));\n body(context, token[2]);\n store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));\n break;\n case Token.NESTED_BLOCK:\n rules(context, token[1]);\n store(context, openBrace(context, Breaks.AfterBlockBegins, true));\n all(context, token[2]);\n store(context, closeBrace(context, Breaks.AfterBlockEnds, true, isLast));\n break;\n case Token.COMMENT:\n store(context, token);\n store(context, breakFor(context, Breaks.AfterComment) + context.indentWith);\n break;\n case Token.RAW:\n store(context, token);\n break;\n case Token.RULE:\n rules(context, token[1]);\n store(context, openBrace(context, Breaks.AfterRuleBegins, true));\n body(context, token[2]);\n store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast));\n break;\n }\n }\n}\n\nmodule.exports = {\n all: all,\n body: body,\n property: property,\n rules: rules,\n value: value\n};\n","var helpers = require('./helpers');\n\nfunction store(serializeContext, token) {\n serializeContext.output.push(typeof token == 'string' ? token : token[1]);\n}\n\nfunction context() {\n var newContext = {\n output: [],\n store: store\n };\n\n return newContext;\n}\n\nfunction all(tokens) {\n var oneTimeContext = context();\n helpers.all(oneTimeContext, tokens);\n return oneTimeContext.output.join('');\n}\n\nfunction body(tokens) {\n var oneTimeContext = context();\n helpers.body(oneTimeContext, tokens);\n return oneTimeContext.output.join('');\n}\n\nfunction property(tokens, position) {\n var oneTimeContext = context();\n helpers.property(oneTimeContext, tokens, position, true);\n return oneTimeContext.output.join('');\n}\n\nfunction rules(tokens) {\n var oneTimeContext = context();\n helpers.rules(oneTimeContext, tokens);\n return oneTimeContext.output.join('');\n}\n\nfunction value(tokens) {\n var oneTimeContext = context();\n helpers.value(oneTimeContext, tokens);\n return oneTimeContext.output.join('');\n}\n\nmodule.exports = {\n all: all,\n body: body,\n property: property,\n rules: rules,\n value: value\n};\n","var sortSelectors = require('./sort-selectors');\nvar tidyRules = require('./tidy-rules');\nvar tidyBlock = require('./tidy-block');\nvar tidyAtRule = require('./tidy-at-rule');\n\nvar Hack = require('../hack');\nvar removeUnused = require('../remove-unused');\nvar restoreFromOptimizing = require('../restore-from-optimizing');\nvar wrapForOptimizing = require('../wrap-for-optimizing').all;\n\nvar configuration = require('../configuration');\nvar optimizers = require('./value-optimizers');\n\nvar OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;\n\nvar Token = require('../../tokenizer/token');\nvar Marker = require('../../tokenizer/marker');\n\nvar formatPosition = require('../../utils/format-position');\n\nvar serializeRules = require('../../writer/one-time').rules;\n\nvar CHARSET_TOKEN = '@charset';\nvar CHARSET_REGEXP = new RegExp('^' + CHARSET_TOKEN, 'i');\n\nvar DEFAULT_ROUNDING_PRECISION = require('../../options/rounding-precision').DEFAULT;\n\nvar PROPERTY_NAME_PATTERN = /^(?:\\-chrome\\-|\\-[\\w\\-]+\\w|\\w[\\w\\-]+\\w|\\w{1,}|\\-\\-\\S+)$/;\nvar IMPORT_PREFIX_PATTERN = /^@import/i;\nvar URL_PREFIX_PATTERN = /^url\\(/i;\nvar VARIABLE_NAME_PATTERN = /^--\\S+$/;\n\nfunction startsAsUrl(value) {\n return URL_PREFIX_PATTERN.test(value);\n}\n\nfunction isImport(token) {\n return IMPORT_PREFIX_PATTERN.test(token[1]);\n}\n\nfunction isLegacyFilter(property) {\n var value;\n\n if (property.name == 'filter' || property.name == '-ms-filter') {\n value = property.value[0][1];\n\n return value.indexOf('progid') > -1 ||\n value.indexOf('alpha') === 0 ||\n value.indexOf('chroma') === 0;\n } else {\n return false;\n }\n}\n\nfunction noop() {}\n\nfunction optimizeBody(rule, properties, context) {\n var options = context.options;\n var valueOptimizers;\n var property, name, type, value;\n var propertyToken;\n var propertyOptimizer;\n var serializedRule = serializeRules(rule);\n var _properties = wrapForOptimizing(properties);\n var pluginValueOptimizers = context.options.plugins.level1Value;\n var pluginPropertyOptimizers = context.options.plugins.level1Property;\n var i, l;\n\n propertyLoop:\n for (i = 0, l = _properties.length; i < l; i++) {\n var j, k, m, n;\n\n property = _properties[i];\n name = property.name;\n propertyOptimizer = configuration[name] && configuration[name].propertyOptimizer || noop;\n valueOptimizers = configuration[name] && configuration[name].valueOptimizers || [optimizers.whiteSpace];\n\n if (!PROPERTY_NAME_PATTERN.test(name)) {\n propertyToken = property.all[property.position];\n context.warnings.push('Invalid property name \\'' + name + '\\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');\n property.unused = true;\n continue;\n }\n\n if (property.value.length === 0) {\n propertyToken = property.all[property.position];\n context.warnings.push('Empty property \\'' + name + '\\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.');\n property.unused = true;\n continue;\n }\n\n if (property.hack && (\n (property.hack[0] == Hack.ASTERISK || property.hack[0] == Hack.UNDERSCORE) && !options.compatibility.properties.iePrefixHack ||\n property.hack[0] == Hack.BACKSLASH && !options.compatibility.properties.ieSuffixHack ||\n property.hack[0] == Hack.BANG && !options.compatibility.properties.ieBangHack)) {\n property.unused = true;\n continue;\n }\n\n if (!options.compatibility.properties.ieFilters && isLegacyFilter(property)) {\n property.unused = true;\n continue;\n }\n\n if (property.block) {\n optimizeBody(rule, property.value[0][1], context);\n continue;\n }\n\n if (VARIABLE_NAME_PATTERN.test(name)) {\n continue;\n }\n\n valuesLoop:\n for (j = 0, m = property.value.length; j < m; j++) {\n type = property.value[j][0];\n value = property.value[j][1];\n\n if (type == Token.PROPERTY_BLOCK) {\n property.unused = true;\n context.warnings.push('Invalid value token at ' + formatPosition(value[0][1][2][0]) + '. Ignoring.');\n break;\n }\n\n if (startsAsUrl(value) && !context.validator.isUrl(value)) {\n property.unused = true;\n context.warnings.push('Broken URL \\'' + value + '\\' at ' + formatPosition(property.value[j][2][0]) + '. Ignoring.');\n break;\n }\n\n for (k = 0, n = valueOptimizers.length; k < n; k++) {\n value = valueOptimizers[k](name, value, options);\n }\n\n for (k = 0, n = pluginValueOptimizers.length; k < n; k++) {\n value = pluginValueOptimizers[k](name, value, options);\n }\n\n property.value[j][1] = value;\n }\n\n propertyOptimizer(serializedRule, property, options);\n\n for (j = 0, m = pluginPropertyOptimizers.length; j < m; j++) {\n pluginPropertyOptimizers[j](serializedRule, property, options);\n }\n }\n\n restoreFromOptimizing(_properties);\n removeUnused(_properties);\n removeComments(properties, options);\n}\n\nfunction removeComments(tokens, options) {\n var token;\n var i;\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n if (token[0] != Token.COMMENT) {\n continue;\n }\n\n optimizeComment(token, options);\n\n if (token[1].length === 0) {\n tokens.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction optimizeComment(token, options) {\n if (token[1][2] == Marker.EXCLAMATION && (options.level[OptimizationLevel.One].specialComments == 'all' || options.commentsKept < options.level[OptimizationLevel.One].specialComments)) {\n options.commentsKept++;\n return;\n }\n\n token[1] = [];\n}\n\nfunction cleanupCharsets(tokens) {\n var hasCharset = false;\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token[0] != Token.AT_RULE)\n continue;\n\n if (!CHARSET_REGEXP.test(token[1]))\n continue;\n\n if (hasCharset || token[1].indexOf(CHARSET_TOKEN) == -1) {\n tokens.splice(i, 1);\n i--;\n l--;\n } else {\n hasCharset = true;\n tokens.splice(i, 1);\n tokens.unshift([Token.AT_RULE, token[1].replace(CHARSET_REGEXP, CHARSET_TOKEN)]);\n }\n }\n}\n\nfunction buildUnitRegexp(options) {\n var units = ['px', 'em', 'ex', 'cm', 'mm', 'in', 'pt', 'pc', '%'];\n var otherUnits = ['ch', 'rem', 'vh', 'vm', 'vmax', 'vmin', 'vw'];\n\n otherUnits.forEach(function (unit) {\n if (options.compatibility.units[unit]) {\n units.push(unit);\n }\n });\n\n return new RegExp('(^|\\\\s|\\\\(|,)0(?:' + units.join('|') + ')(\\\\W|$)', 'g');\n}\n\nfunction buildPrecisionOptions(roundingPrecision) {\n var precisionOptions = {\n matcher: null,\n units: {},\n };\n var optimizable = [];\n var unit;\n var value;\n\n for (unit in roundingPrecision) {\n value = roundingPrecision[unit];\n\n if (value != DEFAULT_ROUNDING_PRECISION) {\n precisionOptions.units[unit] = {};\n precisionOptions.units[unit].value = value;\n precisionOptions.units[unit].multiplier = Math.pow(10, value);\n\n optimizable.push(unit);\n }\n }\n\n if (optimizable.length > 0) {\n precisionOptions.enabled = true;\n precisionOptions.decimalPointMatcher = new RegExp('(\\\\d)\\\\.($|' + optimizable.join('|') + ')($|\\W)', 'g');\n precisionOptions.zeroMatcher = new RegExp('(\\\\d*)(\\\\.\\\\d+)(' + optimizable.join('|') + ')', 'g');\n }\n\n return precisionOptions;\n}\n\nfunction level1Optimize(tokens, context) {\n var options = context.options;\n var levelOptions = options.level[OptimizationLevel.One];\n var ie7Hack = options.compatibility.selectors.ie7Hack;\n var adjacentSpace = options.compatibility.selectors.adjacentSpace;\n var spaceAfterClosingBrace = options.compatibility.properties.spaceAfterClosingBrace;\n var format = options.format;\n var mayHaveCharset = false;\n var afterRules = false;\n\n options.unitsRegexp = options.unitsRegexp || buildUnitRegexp(options);\n options.precision = options.precision || buildPrecisionOptions(levelOptions.roundingPrecision);\n options.commentsKept = options.commentsKept || 0;\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n switch (token[0]) {\n case Token.AT_RULE:\n token[1] = isImport(token) && afterRules ? '' : token[1];\n token[1] = levelOptions.tidyAtRules ? tidyAtRule(token[1]) : token[1];\n mayHaveCharset = true;\n break;\n case Token.AT_RULE_BLOCK:\n optimizeBody(token[1], token[2], context);\n afterRules = true;\n break;\n case Token.NESTED_BLOCK:\n token[1] = levelOptions.tidyBlockScopes ? tidyBlock(token[1], spaceAfterClosingBrace) : token[1];\n level1Optimize(token[2], context);\n afterRules = true;\n break;\n case Token.COMMENT:\n optimizeComment(token, options);\n break;\n case Token.RULE:\n token[1] = levelOptions.tidySelectors ? tidyRules(token[1], !ie7Hack, adjacentSpace, format, context.warnings) : token[1];\n token[1] = token[1].length > 1 ? sortSelectors(token[1], levelOptions.selectorsSortingMethod) : token[1];\n optimizeBody(token[1], token[2], context);\n afterRules = true;\n break;\n }\n\n if (token[0] == Token.COMMENT && token[1].length === 0 || levelOptions.removeEmpty && (token[1].length === 0 || (token[2] && token[2].length === 0))) {\n tokens.splice(i, 1);\n i--;\n l--;\n }\n }\n\n if (levelOptions.cleanupCharsets && mayHaveCharset) {\n cleanupCharsets(tokens);\n }\n\n return tokens;\n}\n\nmodule.exports = level1Optimize;\n","var Marker = require('../../tokenizer/marker');\nvar split = require('../../utils/split');\n\nvar DEEP_SELECTOR_PATTERN = /\\/deep\\//;\nvar DOUBLE_COLON_PATTERN = /^::/;\nvar VENDOR_PREFIXED_PATTERN = /:(-moz-|-ms-|-o-|-webkit-)/;\n\nvar NOT_PSEUDO = ':not';\nvar PSEUDO_CLASSES_WITH_ARGUMENTS = [\n ':dir',\n ':lang',\n ':not',\n ':nth-child',\n ':nth-last-child',\n ':nth-last-of-type',\n ':nth-of-type'\n];\nvar RELATION_PATTERN = /[>\\+~]/;\nvar UNMIXABLE_PSEUDO_CLASSES = [\n ':after',\n ':before',\n ':first-letter',\n ':first-line',\n ':lang'\n];\nvar UNMIXABLE_PSEUDO_ELEMENTS = [\n '::after',\n '::before',\n '::first-letter',\n '::first-line'\n];\n\nvar Level = {\n DOUBLE_QUOTE: 'double-quote',\n SINGLE_QUOTE: 'single-quote',\n ROOT: 'root'\n};\n\nfunction isMergeable(selector, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) {\n var singleSelectors = split(selector, Marker.COMMA);\n var singleSelector;\n var i, l;\n\n for (i = 0, l = singleSelectors.length; i < l; i++) {\n singleSelector = singleSelectors[i];\n\n if (singleSelector.length === 0 ||\n isDeepSelector(singleSelector) ||\n isVendorPrefixed(singleSelector) ||\n (singleSelector.indexOf(Marker.COLON) > -1 && !areMergeable(singleSelector, extractPseudoFrom(singleSelector), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging))) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepSelector(selector) {\n return DEEP_SELECTOR_PATTERN.test(selector);\n}\n\nfunction isVendorPrefixed(selector) {\n return VENDOR_PREFIXED_PATTERN.test(selector);\n}\n\nfunction extractPseudoFrom(selector) {\n var list = [];\n var character;\n var buffer = [];\n var level = Level.ROOT;\n var roundBracketLevel = 0;\n var isQuoted;\n var isEscaped;\n var isPseudo = false;\n var isRelation;\n var wasColon = false;\n var index;\n var len;\n\n for (index = 0, len = selector.length; index < len; index++) {\n character = selector[index];\n\n isRelation = !isEscaped && RELATION_PATTERN.test(character);\n isQuoted = level == Level.DOUBLE_QUOTE || level == Level.SINGLE_QUOTE;\n\n if (isEscaped) {\n buffer.push(character);\n } else if (character == Marker.DOUBLE_QUOTE && level == Level.ROOT) {\n buffer.push(character);\n level = Level.DOUBLE_QUOTE;\n } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) {\n buffer.push(character);\n level = Level.ROOT;\n } else if (character == Marker.SINGLE_QUOTE && level == Level.ROOT) {\n buffer.push(character);\n level = Level.SINGLE_QUOTE;\n } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) {\n buffer.push(character);\n level = Level.ROOT;\n } else if (isQuoted) {\n buffer.push(character);\n } else if (character == Marker.OPEN_ROUND_BRACKET) {\n buffer.push(character);\n roundBracketLevel++;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && roundBracketLevel == 1 && isPseudo) {\n buffer.push(character);\n list.push(buffer.join(''));\n roundBracketLevel--;\n buffer = [];\n isPseudo = false;\n } else if (character == Marker.CLOSE_ROUND_BRACKET) {\n buffer.push(character);\n roundBracketLevel--;\n } else if (character == Marker.COLON && roundBracketLevel === 0 && isPseudo && !wasColon) {\n list.push(buffer.join(''));\n buffer = [];\n buffer.push(character);\n } else if (character == Marker.COLON && roundBracketLevel === 0 && !wasColon) {\n buffer = [];\n buffer.push(character);\n isPseudo = true;\n } else if (character == Marker.SPACE && roundBracketLevel === 0 && isPseudo) {\n list.push(buffer.join(''));\n buffer = [];\n isPseudo = false;\n } else if (isRelation && roundBracketLevel === 0 && isPseudo) {\n list.push(buffer.join(''));\n buffer = [];\n isPseudo = false;\n } else {\n buffer.push(character);\n }\n\n isEscaped = character == Marker.BACK_SLASH;\n wasColon = character == Marker.COLON;\n }\n\n if (buffer.length > 0 && isPseudo) {\n list.push(buffer.join(''));\n }\n\n return list;\n}\n\nfunction areMergeable(selector, matches, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) {\n return areAllowed(matches, mergeablePseudoClasses, mergeablePseudoElements) &&\n needArguments(matches) &&\n (matches.length < 2 || !someIncorrectlyChained(selector, matches)) &&\n (matches.length < 2 || multiplePseudoMerging && allMixable(matches));\n}\n\nfunction areAllowed(matches, mergeablePseudoClasses, mergeablePseudoElements) {\n var match;\n var name;\n var i, l;\n\n for (i = 0, l = matches.length; i < l; i++) {\n match = matches[i];\n name = match.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 ?\n match.substring(0, match.indexOf(Marker.OPEN_ROUND_BRACKET)) :\n match;\n\n if (mergeablePseudoClasses.indexOf(name) === -1 && mergeablePseudoElements.indexOf(name) === -1) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction needArguments(matches) {\n var match;\n var name;\n var bracketOpensAt;\n var hasArguments;\n var i, l;\n\n for (i = 0, l = matches.length; i < l; i++) {\n match = matches[i];\n\n bracketOpensAt = match.indexOf(Marker.OPEN_ROUND_BRACKET);\n hasArguments = bracketOpensAt > -1;\n name = hasArguments ?\n match.substring(0, bracketOpensAt) :\n match;\n\n if (hasArguments && PSEUDO_CLASSES_WITH_ARGUMENTS.indexOf(name) == -1) {\n return false;\n }\n\n if (!hasArguments && PSEUDO_CLASSES_WITH_ARGUMENTS.indexOf(name) > -1) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction someIncorrectlyChained(selector, matches) {\n var positionInSelector = 0;\n var match;\n var matchAt;\n var nextMatch;\n var nextMatchAt;\n var name;\n var nextName;\n var areChained;\n var i, l;\n\n for (i = 0, l = matches.length; i < l; i++) {\n match = matches[i];\n nextMatch = matches[i + 1];\n\n if (!nextMatch) {\n break;\n }\n\n matchAt = selector.indexOf(match, positionInSelector);\n nextMatchAt = selector.indexOf(match, matchAt + 1);\n positionInSelector = nextMatchAt;\n areChained = matchAt + match.length == nextMatchAt;\n\n if (areChained) {\n name = match.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 ?\n match.substring(0, match.indexOf(Marker.OPEN_ROUND_BRACKET)) :\n match;\n nextName = nextMatch.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 ?\n nextMatch.substring(0, nextMatch.indexOf(Marker.OPEN_ROUND_BRACKET)) :\n nextMatch;\n\n if (name != NOT_PSEUDO || nextName != NOT_PSEUDO) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction allMixable(matches) {\n var unmixableMatches = 0;\n var match;\n var i, l;\n\n for (i = 0, l = matches.length; i < l; i++) {\n match = matches[i];\n\n if (isPseudoElement(match)) {\n unmixableMatches += UNMIXABLE_PSEUDO_ELEMENTS.indexOf(match) > -1 ? 1 : 0;\n } else {\n unmixableMatches += UNMIXABLE_PSEUDO_CLASSES.indexOf(match) > -1 ? 1 : 0;\n }\n\n if (unmixableMatches > 1) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isPseudoElement(pseudo) {\n return DOUBLE_COLON_PATTERN.test(pseudo);\n}\n\nmodule.exports = isMergeable;\n","var Marker = require('../../../tokenizer/marker');\n\nfunction everyValuesPair(fn, left, right) {\n var leftSize = left.value.length;\n var rightSize = right.value.length;\n var total = Math.max(leftSize, rightSize);\n var lowerBound = Math.min(leftSize, rightSize) - 1;\n var leftValue;\n var rightValue;\n var position;\n\n for (position = 0; position < total; position++) {\n leftValue = left.value[position] && left.value[position][1] || leftValue;\n rightValue = right.value[position] && right.value[position][1] || rightValue;\n\n if (leftValue == Marker.COMMA || rightValue == Marker.COMMA) {\n continue;\n }\n\n if (!fn(leftValue, rightValue, position, position <= lowerBound)) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = everyValuesPair;\n","function hasInherit(property) {\n for (var i = property.value.length - 1; i >= 0; i--) {\n if (property.value[i][1] == 'inherit')\n return true;\n }\n\n return false;\n}\n\nmodule.exports = hasInherit;\n","function hasSameValues(property) {\n var firstValue = property.value[0][1];\n var i, l;\n\n for (i = 1, l = property.value.length; i < l; i++) {\n if (property.value[i][1] != firstValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = hasSameValues;\n","var configuration = require('../../configuration');\nvar InvalidPropertyError = require('../../invalid-property-error');\n\nfunction populateComponents(properties, validator, warnings) {\n var component;\n var j, m;\n\n for (var i = properties.length - 1; i >= 0; i--) {\n var property = properties[i];\n var descriptor = configuration[property.name];\n\n if (!property.dynamic && descriptor && descriptor.shorthand) {\n if (onlyValueIsVariable(property, validator) || moreThanOneValueIsVariable(property, validator)) {\n property.optimizable = false;\n continue;\n }\n\n property.shorthand = true;\n property.dirty = true;\n\n try {\n property.components = descriptor.breakUp(property, configuration, validator);\n\n if (descriptor.shorthandComponents) {\n for (j = 0, m = property.components.length; j < m; j++) {\n component = property.components[j];\n component.components = configuration[component.name].breakUp(component, configuration, validator);\n }\n }\n } catch (e) {\n if (e instanceof InvalidPropertyError) {\n property.components = []; // this will set property.unused to true below\n warnings.push(e.message);\n } else {\n throw e;\n }\n }\n\n if (property.components.length > 0)\n property.multiplex = property.components[0].multiplex;\n else\n property.unused = true;\n }\n }\n}\n\nfunction onlyValueIsVariable(property, validator) {\n return property.value.length == 1 && validator.isVariable(property.value[0][1]);\n}\n\nfunction moreThanOneValueIsVariable(property, validator) {\n return property.value.length > 1 && property.value.filter(function (value) { return validator.isVariable(value[1]); }).length > 1;\n}\n\nmodule.exports = populateComponents;\n","var configuration = require('../configuration');\n\nfunction restoreWithComponents(property) {\n var descriptor = configuration[property.name];\n\n if (descriptor && descriptor.shorthand) {\n return descriptor.restore(property, configuration);\n } else {\n return property.value;\n }\n}\n\nmodule.exports = restoreWithComponents;\n","var everyValuesPair = require('./every-values-pair');\nvar hasInherit = require('./has-inherit');\nvar hasSameValues = require('./has-same-values');\nvar populateComponents = require('./populate-components');\n\nvar configuration = require('../../configuration');\nvar deepClone = require('../../clone').deep;\nvar restoreWithComponents = require('../restore-with-components');\n\nvar restoreFromOptimizing = require('../../restore-from-optimizing');\nvar wrapSingle = require('../../wrap-for-optimizing').single;\n\nvar serializeBody = require('../../../writer/one-time').body;\nvar Token = require('../../../tokenizer/token');\n\nfunction mergeIntoShorthands(properties, validator) {\n var candidates = {};\n var descriptor;\n var componentOf;\n var property;\n var i, l;\n var j, m;\n\n // there is no shorthand property made up of less than 3 longhands\n if (properties.length < 3) {\n return;\n }\n\n for (i = 0, l = properties.length; i < l; i++) {\n property = properties[i];\n descriptor = configuration[property.name];\n\n if (property.dynamic) {\n continue;\n }\n\n if (property.unused) {\n continue;\n }\n\n if (property.hack) {\n continue;\n }\n\n if (property.block) {\n continue;\n }\n\n if (descriptor && descriptor.singleTypeComponents && !hasSameValues(property)) {\n continue;\n }\n\n invalidateOrCompact(properties, i, candidates, validator);\n\n if (descriptor && descriptor.componentOf) {\n for (j = 0, m = descriptor.componentOf.length; j < m; j++) {\n componentOf = descriptor.componentOf[j];\n\n candidates[componentOf] = candidates[componentOf] || {};\n candidates[componentOf][property.name] = property;\n }\n }\n }\n\n invalidateOrCompact(properties, i, candidates, validator);\n}\n\nfunction invalidateOrCompact(properties, position, candidates, validator) {\n var invalidatedBy = properties[position];\n var shorthandName;\n var shorthandDescriptor;\n var candidateComponents;\n var replacedCandidates = [];\n var i;\n\n for (shorthandName in candidates) {\n if (undefined !== invalidatedBy && shorthandName == invalidatedBy.name) {\n continue;\n }\n\n shorthandDescriptor = configuration[shorthandName];\n candidateComponents = candidates[shorthandName];\n if (invalidatedBy && invalidates(candidates, shorthandName, invalidatedBy)) {\n delete candidates[shorthandName];\n continue;\n }\n\n if (shorthandDescriptor.components.length > Object.keys(candidateComponents).length) {\n continue;\n }\n\n if (mixedImportance(candidateComponents)) {\n continue;\n }\n\n if (!overridable(candidateComponents, shorthandName, validator)) {\n continue;\n }\n\n if (!mergeable(candidateComponents)) {\n continue;\n }\n\n if (mixedInherit(candidateComponents)) {\n replaceWithInheritBestFit(properties, candidateComponents, shorthandName, validator);\n } else {\n replaceWithShorthand(properties, candidateComponents, shorthandName, validator);\n }\n\n replacedCandidates.push(shorthandName);\n }\n\n for (i = replacedCandidates.length - 1; i >= 0; i--) {\n delete candidates[replacedCandidates[i]];\n }\n}\n\nfunction invalidates(candidates, shorthandName, invalidatedBy) {\n var shorthandDescriptor = configuration[shorthandName];\n var invalidatedByDescriptor = configuration[invalidatedBy.name];\n var componentName;\n\n if ('overridesShorthands' in shorthandDescriptor && shorthandDescriptor.overridesShorthands.indexOf(invalidatedBy.name) > -1) {\n return true;\n }\n\n if (invalidatedByDescriptor && 'componentOf' in invalidatedByDescriptor) {\n for (componentName in candidates[shorthandName]) {\n if (invalidatedByDescriptor.componentOf.indexOf(componentName) > -1) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction mixedImportance(components) {\n var important;\n var componentName;\n\n for (componentName in components) {\n if (undefined !== important && components[componentName].important != important) {\n return true;\n }\n\n important = components[componentName].important;\n }\n\n return false;\n}\n\nfunction overridable(components, shorthandName, validator) {\n var descriptor = configuration[shorthandName];\n var newValuePlaceholder = [\n Token.PROPERTY,\n [Token.PROPERTY_NAME, shorthandName],\n [Token.PROPERTY_VALUE, descriptor.defaultValue]\n ];\n var newProperty = wrapSingle(newValuePlaceholder);\n var component;\n var mayOverride;\n var i, l;\n\n populateComponents([newProperty], validator, []);\n\n for (i = 0, l = descriptor.components.length; i < l; i++) {\n component = components[descriptor.components[i]];\n mayOverride = configuration[component.name].canOverride || sameValue;\n\n if (!everyValuesPair(mayOverride.bind(null, validator), newProperty.components[i], component)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction sameValue(_validator, value1, value2) {\n return value1 === value2;\n}\n\nfunction mergeable(components) {\n var lastCount = null;\n var currentCount;\n var componentName;\n var component;\n var descriptor;\n var values;\n\n for (componentName in components) {\n component = components[componentName];\n descriptor = configuration[componentName];\n\n if (!('restore' in descriptor)) {\n continue;\n }\n\n restoreFromOptimizing([component.all[component.position]], restoreWithComponents);\n values = descriptor.restore(component, configuration);\n\n currentCount = values.length;\n\n if (lastCount !== null && currentCount !== lastCount) {\n return false;\n }\n\n lastCount = currentCount;\n }\n\n return true;\n}\n\nfunction mixedInherit(components) {\n var componentName;\n var lastValue = null;\n var currentValue;\n\n for (componentName in components) {\n currentValue = hasInherit(components[componentName]);\n\n if (lastValue !== null && lastValue !== currentValue) {\n return true;\n }\n\n lastValue = currentValue;\n }\n\n return false;\n}\n\nfunction replaceWithInheritBestFit(properties, candidateComponents, shorthandName, validator) {\n var viaLonghands = buildSequenceWithInheritLonghands(candidateComponents, shorthandName, validator);\n var viaShorthand = buildSequenceWithInheritShorthand(candidateComponents, shorthandName, validator);\n var longhandTokensSequence = viaLonghands[0];\n var shorthandTokensSequence = viaShorthand[0];\n var isLonghandsShorter = serializeBody(longhandTokensSequence).length < serializeBody(shorthandTokensSequence).length;\n var newTokensSequence = isLonghandsShorter ? longhandTokensSequence : shorthandTokensSequence;\n var newProperty = isLonghandsShorter ? viaLonghands[1] : viaShorthand[1];\n var newComponents = isLonghandsShorter ? viaLonghands[2] : viaShorthand[2];\n var lastComponent = candidateComponents[Object.keys(candidateComponents).pop()];\n var all = lastComponent.all;\n var insertAt = lastComponent.position;\n var componentName;\n var oldComponent;\n var newComponent;\n var newToken;\n\n newProperty.position = insertAt;\n newProperty.shorthand = true;\n newProperty.important = lastComponent.important;\n newProperty.multiplex = false;\n newProperty.dirty = true;\n newProperty.all = all;\n newProperty.all[insertAt] = newTokensSequence[0];\n\n properties.splice(insertAt, 1, newProperty);\n\n for (componentName in candidateComponents) {\n oldComponent = candidateComponents[componentName];\n oldComponent.unused = true;\n\n newProperty.multiplex = newProperty.multiplex || oldComponent.multiplex;\n\n if (oldComponent.name in newComponents) {\n newComponent = newComponents[oldComponent.name];\n newToken = findTokenIn(newTokensSequence, componentName);\n\n newComponent.position = all.length;\n newComponent.all = all;\n newComponent.all.push(newToken);\n\n properties.push(newComponent);\n }\n }\n}\n\nfunction buildSequenceWithInheritLonghands(components, shorthandName, validator) {\n var tokensSequence = [];\n var inheritComponents = {};\n var nonInheritComponents = {};\n var descriptor = configuration[shorthandName];\n var shorthandToken = [\n Token.PROPERTY,\n [Token.PROPERTY_NAME, shorthandName],\n [Token.PROPERTY_VALUE, descriptor.defaultValue]\n ];\n var newProperty = wrapSingle(shorthandToken);\n var component;\n var longhandToken;\n var newComponent;\n var nameMetadata;\n var i, l;\n\n populateComponents([newProperty], validator, []);\n\n for (i = 0, l = descriptor.components.length; i < l; i++) {\n component = components[descriptor.components[i]];\n\n if (hasInherit(component)) {\n longhandToken = component.all[component.position].slice(0, 2);\n Array.prototype.push.apply(longhandToken, component.value);\n tokensSequence.push(longhandToken);\n\n newComponent = deepClone(component);\n newComponent.value = inferComponentValue(components, newComponent.name);\n\n newProperty.components[i] = newComponent;\n inheritComponents[component.name] = deepClone(component);\n } else {\n newComponent = deepClone(component);\n newComponent.all = component.all;\n newProperty.components[i] = newComponent;\n\n nonInheritComponents[component.name] = component;\n }\n }\n\n newProperty.important = components[Object.keys(components).pop()].important;\n\n nameMetadata = joinMetadata(nonInheritComponents, 1);\n shorthandToken[1].push(nameMetadata);\n\n restoreFromOptimizing([newProperty], restoreWithComponents);\n\n shorthandToken = shorthandToken.slice(0, 2);\n Array.prototype.push.apply(shorthandToken, newProperty.value);\n\n tokensSequence.unshift(shorthandToken);\n\n return [tokensSequence, newProperty, inheritComponents];\n}\n\nfunction inferComponentValue(components, propertyName) {\n var descriptor = configuration[propertyName];\n\n if ('oppositeTo' in descriptor) {\n return components[descriptor.oppositeTo].value;\n } else {\n return [[Token.PROPERTY_VALUE, descriptor.defaultValue]];\n }\n}\n\nfunction joinMetadata(components, at) {\n var metadata = [];\n var component;\n var originalValue;\n var componentMetadata;\n var componentName;\n\n for (componentName in components) {\n component = components[componentName];\n originalValue = component.all[component.position];\n componentMetadata = originalValue[at][originalValue[at].length - 1];\n\n Array.prototype.push.apply(metadata, componentMetadata);\n }\n\n return metadata.sort(metadataSorter);\n}\n\nfunction metadataSorter(metadata1, metadata2) {\n var line1 = metadata1[0];\n var line2 = metadata2[0];\n var column1 = metadata1[1];\n var column2 = metadata2[1];\n\n if (line1 < line2) {\n return -1;\n } else if (line1 === line2) {\n return column1 < column2 ? -1 : 1;\n } else {\n return 1;\n }\n}\n\nfunction buildSequenceWithInheritShorthand(components, shorthandName, validator) {\n var tokensSequence = [];\n var inheritComponents = {};\n var nonInheritComponents = {};\n var descriptor = configuration[shorthandName];\n var shorthandToken = [\n Token.PROPERTY,\n [Token.PROPERTY_NAME, shorthandName],\n [Token.PROPERTY_VALUE, 'inherit']\n ];\n var newProperty = wrapSingle(shorthandToken);\n var component;\n var longhandToken;\n var nameMetadata;\n var valueMetadata;\n var i, l;\n\n populateComponents([newProperty], validator, []);\n\n for (i = 0, l = descriptor.components.length; i < l; i++) {\n component = components[descriptor.components[i]];\n\n if (hasInherit(component)) {\n inheritComponents[component.name] = component;\n } else {\n longhandToken = component.all[component.position].slice(0, 2);\n Array.prototype.push.apply(longhandToken, component.value);\n tokensSequence.push(longhandToken);\n\n nonInheritComponents[component.name] = deepClone(component);\n }\n }\n\n nameMetadata = joinMetadata(inheritComponents, 1);\n shorthandToken[1].push(nameMetadata);\n\n valueMetadata = joinMetadata(inheritComponents, 2);\n shorthandToken[2].push(valueMetadata);\n\n tokensSequence.unshift(shorthandToken);\n\n return [tokensSequence, newProperty, nonInheritComponents];\n}\n\nfunction findTokenIn(tokens, componentName) {\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n if (tokens[i][1][1] == componentName) {\n return tokens[i];\n }\n }\n}\n\nfunction replaceWithShorthand(properties, candidateComponents, shorthandName, validator) {\n var descriptor = configuration[shorthandName];\n var nameMetadata;\n var valueMetadata;\n var newValuePlaceholder = [\n Token.PROPERTY,\n [Token.PROPERTY_NAME, shorthandName],\n [Token.PROPERTY_VALUE, descriptor.defaultValue]\n ];\n var all;\n var insertAt = inferInsertAtFrom(properties, candidateComponents, shorthandName);\n\n var newProperty = wrapSingle(newValuePlaceholder);\n newProperty.shorthand = true;\n newProperty.dirty = true;\n newProperty.multiplex = false;\n\n populateComponents([newProperty], validator, []);\n\n for (var i = 0, l = descriptor.components.length; i < l; i++) {\n var component = candidateComponents[descriptor.components[i]];\n\n newProperty.components[i] = deepClone(component);\n newProperty.important = component.important;\n newProperty.multiplex = newProperty.multiplex || component.multiplex;\n\n all = component.all;\n }\n\n for (var componentName in candidateComponents) {\n candidateComponents[componentName].unused = true;\n }\n\n nameMetadata = joinMetadata(candidateComponents, 1);\n newValuePlaceholder[1].push(nameMetadata);\n\n valueMetadata = joinMetadata(candidateComponents, 2);\n newValuePlaceholder[2].push(valueMetadata);\n\n newProperty.position = insertAt;\n newProperty.all = all;\n newProperty.all[insertAt] = newValuePlaceholder;\n\n properties.splice(insertAt, 1, newProperty);\n}\n\nfunction inferInsertAtFrom(properties, candidateComponents, shorthandName) {\n var candidateComponentNames = Object.keys(candidateComponents);\n var firstCandidatePosition = candidateComponents[candidateComponentNames[0]].position;\n var lastCandidatePosition = candidateComponents[candidateComponentNames[candidateComponentNames.length - 1]].position;\n\n if (shorthandName == 'border' && traversesVia(properties.slice(firstCandidatePosition, lastCandidatePosition), 'border-image')) {\n return firstCandidatePosition;\n } else {\n return lastCandidatePosition;\n }\n}\n\nfunction traversesVia(properties, propertyName) {\n for (var i = properties.length - 1; i >= 0; i--) {\n if (properties[i].name == propertyName) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = mergeIntoShorthands;\n","function hasUnset(property) {\n for (var i = property.value.length - 1; i >= 0; i--) {\n if (property.value[i][1] == 'unset')\n return true;\n }\n\n return false;\n}\n\nmodule.exports = hasUnset;\n","var configuration = require('../../configuration');\n\nfunction findComponentIn(shorthand, longhand) {\n var comparator = nameComparator(longhand);\n\n return findInDirectComponents(shorthand, comparator) || findInSubComponents(shorthand, comparator);\n}\n\nfunction nameComparator(to) {\n return function (property) {\n return to.name === property.name;\n };\n}\n\nfunction findInDirectComponents(shorthand, comparator) {\n return shorthand.components.filter(comparator)[0];\n}\n\nfunction findInSubComponents(shorthand, comparator) {\n var shorthandComponent;\n var longhandMatch;\n var i, l;\n\n if (!configuration[shorthand.name].shorthandComponents) {\n return;\n }\n\n for (i = 0, l = shorthand.components.length; i < l; i++) {\n shorthandComponent = shorthand.components[i];\n longhandMatch = findInDirectComponents(shorthandComponent, comparator);\n\n if (longhandMatch) {\n return longhandMatch;\n }\n }\n\n return;\n}\n\nmodule.exports = findComponentIn;\n","var configuration = require('../../configuration');\n\nfunction isComponentOf(property1, property2, shallow) {\n return isDirectComponentOf(property1, property2) ||\n !shallow && !!configuration[property1.name].shorthandComponents && isSubComponentOf(property1, property2);\n}\n\nfunction isDirectComponentOf(property1, property2) {\n var descriptor = configuration[property1.name];\n\n return 'components' in descriptor && descriptor.components.indexOf(property2.name) > -1;\n}\n\nfunction isSubComponentOf(property1, property2) {\n return property1\n .components\n .some(function (component) {\n return isDirectComponentOf(component, property2);\n });\n}\n\nmodule.exports = isComponentOf;\n","var Marker = require('../../../tokenizer/marker');\n\nfunction isMergeableShorthand(shorthand) {\n if (shorthand.name != 'font') {\n return true;\n }\n\n return shorthand.value[0][1].indexOf(Marker.INTERNAL) == -1;\n}\n\nmodule.exports = isMergeableShorthand;\n","var configuration = require('../../configuration');\n\nfunction overridesNonComponentShorthand(property1, property2) {\n return property1.name in configuration &&\n 'overridesShorthands' in configuration[property1.name] &&\n configuration[property1.name].overridesShorthands.indexOf(property2.name) > -1;\n}\n\nmodule.exports = overridesNonComponentShorthand;\n","var hasInherit = require('./has-inherit');\nvar hasUnset = require('./has-unset');\nvar everyValuesPair = require('./every-values-pair');\nvar findComponentIn = require('./find-component-in');\nvar isComponentOf = require('./is-component-of');\nvar isMergeableShorthand = require('./is-mergeable-shorthand');\nvar overridesNonComponentShorthand = require('./overrides-non-component-shorthand');\nvar sameVendorPrefixesIn = require('./../../vendor-prefixes').same;\n\nvar configuration = require('../../configuration');\nvar deepClone = require('../../clone').deep;\nvar restoreWithComponents = require('../restore-with-components');\nvar shallowClone = require('../../clone').shallow;\n\nvar restoreFromOptimizing = require('../../restore-from-optimizing');\n\nvar Token = require('../../../tokenizer/token');\nvar Marker = require('../../../tokenizer/marker');\n\nvar serializeProperty = require('../../../writer/one-time').property;\n\nfunction sameValue(_validator, value1, value2) {\n return value1 === value2;\n}\n\nfunction wouldBreakCompatibility(property, validator) {\n for (var i = 0; i < property.components.length; i++) {\n var component = property.components[i];\n var descriptor = configuration[component.name];\n var canOverride = descriptor && descriptor.canOverride || sameValue;\n\n var _component = shallowClone(component);\n _component.value = [[Token.PROPERTY_VALUE, descriptor.defaultValue]];\n\n if (!everyValuesPair(canOverride.bind(null, validator), _component, component)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction overrideIntoMultiplex(property, by) {\n by.unused = true;\n\n turnIntoMultiplex(by, multiplexSize(property));\n property.value = by.value;\n}\n\nfunction overrideByMultiplex(property, by) {\n by.unused = true;\n property.multiplex = true;\n property.value = by.value;\n}\n\nfunction overrideSimple(property, by) {\n by.unused = true;\n property.value = by.value;\n}\n\nfunction override(property, by) {\n if (by.multiplex)\n overrideByMultiplex(property, by);\n else if (property.multiplex)\n overrideIntoMultiplex(property, by);\n else\n overrideSimple(property, by);\n}\n\nfunction overrideShorthand(property, by) {\n by.unused = true;\n\n for (var i = 0, l = property.components.length; i < l; i++) {\n override(property.components[i], by.components[i], property.multiplex);\n }\n}\n\nfunction turnIntoMultiplex(property, size) {\n property.multiplex = true;\n\n if (configuration[property.name].shorthand) {\n turnShorthandValueIntoMultiplex(property, size);\n } else {\n turnLonghandValueIntoMultiplex(property, size);\n }\n}\n\nfunction turnShorthandValueIntoMultiplex(property, size) {\n var component;\n var i, l;\n\n for (i = 0, l = property.components.length; i < l; i++) {\n component = property.components[i];\n\n if (!component.multiplex) {\n turnLonghandValueIntoMultiplex(component, size);\n }\n }\n}\n\nfunction turnLonghandValueIntoMultiplex(property, size) {\n var descriptor = configuration[property.name];\n var withRealValue = descriptor.intoMultiplexMode == 'real';\n var withValue = descriptor.intoMultiplexMode == 'real' ?\n property.value.slice(0) :\n (descriptor.intoMultiplexMode == 'placeholder' ? descriptor.placeholderValue : descriptor.defaultValue);\n var i = multiplexSize(property);\n var j;\n var m = withValue.length;\n\n for (; i < size; i++) {\n property.value.push([Token.PROPERTY_VALUE, Marker.COMMA]);\n\n if (Array.isArray(withValue)) {\n for (j = 0; j < m; j++) {\n property.value.push(withRealValue ? withValue[j] : [Token.PROPERTY_VALUE, withValue[j]]);\n }\n } else {\n property.value.push(withRealValue ? withValue : [Token.PROPERTY_VALUE, withValue]);\n }\n }\n}\n\nfunction multiplexSize(component) {\n var size = 0;\n\n for (var i = 0, l = component.value.length; i < l; i++) {\n if (component.value[i][1] == Marker.COMMA)\n size++;\n }\n\n return size + 1;\n}\n\nfunction lengthOf(property) {\n var fakeAsArray = [\n Token.PROPERTY,\n [Token.PROPERTY_NAME, property.name]\n ].concat(property.value);\n return serializeProperty([fakeAsArray], 0).length;\n}\n\nfunction moreSameShorthands(properties, startAt, name) {\n // Since we run the main loop in `compactOverrides` backwards, at this point some\n // properties may not be marked as unused.\n // We should consider reverting the order if possible\n var count = 0;\n\n for (var i = startAt; i >= 0; i--) {\n if (properties[i].name == name && !properties[i].unused)\n count++;\n if (count > 1)\n break;\n }\n\n return count > 1;\n}\n\nfunction overridingFunction(shorthand, validator) {\n for (var i = 0, l = shorthand.components.length; i < l; i++) {\n if (!anyValue(validator.isUrl, shorthand.components[i]) && anyValue(validator.isFunction, shorthand.components[i])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction anyValue(fn, property) {\n for (var i = 0, l = property.value.length; i < l; i++) {\n if (property.value[i][1] == Marker.COMMA)\n continue;\n\n if (fn(property.value[i][1]))\n return true;\n }\n\n return false;\n}\n\nfunction wouldResultInLongerValue(left, right) {\n if (!left.multiplex && !right.multiplex || left.multiplex && right.multiplex)\n return false;\n\n var multiplex = left.multiplex ? left : right;\n var simple = left.multiplex ? right : left;\n var component;\n\n var multiplexClone = deepClone(multiplex);\n restoreFromOptimizing([multiplexClone], restoreWithComponents);\n\n var simpleClone = deepClone(simple);\n restoreFromOptimizing([simpleClone], restoreWithComponents);\n\n var lengthBefore = lengthOf(multiplexClone) + 1 + lengthOf(simpleClone);\n\n if (left.multiplex) {\n component = findComponentIn(multiplexClone, simpleClone);\n overrideIntoMultiplex(component, simpleClone);\n } else {\n component = findComponentIn(simpleClone, multiplexClone);\n turnIntoMultiplex(simpleClone, multiplexSize(multiplexClone));\n overrideByMultiplex(component, multiplexClone);\n }\n\n restoreFromOptimizing([simpleClone], restoreWithComponents);\n\n var lengthAfter = lengthOf(simpleClone);\n\n return lengthBefore <= lengthAfter;\n}\n\nfunction isCompactable(property) {\n return property.name in configuration;\n}\n\nfunction noneOverrideHack(left, right) {\n return !left.multiplex &&\n (left.name == 'background' || left.name == 'background-image') &&\n right.multiplex &&\n (right.name == 'background' || right.name == 'background-image') &&\n anyLayerIsNone(right.value);\n}\n\nfunction anyLayerIsNone(values) {\n var layers = intoLayers(values);\n\n for (var i = 0, l = layers.length; i < l; i++) {\n if (layers[i].length == 1 && layers[i][0][1] == 'none')\n return true;\n }\n\n return false;\n}\n\nfunction intoLayers(values) {\n var layers = [];\n\n for (var i = 0, layer = [], l = values.length; i < l; i++) {\n var value = values[i];\n if (value[1] == Marker.COMMA) {\n layers.push(layer);\n layer = [];\n } else {\n layer.push(value);\n }\n }\n\n layers.push(layer);\n return layers;\n}\n\nfunction overrideProperties(properties, withMerging, compatibility, validator) {\n var mayOverride, right, left, component;\n var overriddenComponents;\n var overriddenComponent;\n var overridingComponent;\n var overridable;\n var i, j, k;\n\n propertyLoop:\n for (i = properties.length - 1; i >= 0; i--) {\n right = properties[i];\n\n if (!isCompactable(right))\n continue;\n\n if (right.block)\n continue;\n\n mayOverride = configuration[right.name].canOverride || sameValue;\n\n traverseLoop:\n for (j = i - 1; j >= 0; j--) {\n left = properties[j];\n\n if (!isCompactable(left))\n continue;\n\n if (left.block)\n continue;\n\n if (left.dynamic || right.dynamic)\n continue;\n\n if (left.unused || right.unused)\n continue;\n\n if (left.hack && !right.hack && !right.important || !left.hack && !left.important && right.hack)\n continue;\n\n if (left.important == right.important && left.hack[0] != right.hack[0])\n continue;\n\n if (left.important == right.important && (left.hack[0] != right.hack[0] || (left.hack[1] && left.hack[1] != right.hack[1])))\n continue;\n\n if (hasInherit(right))\n continue;\n\n if (noneOverrideHack(left, right))\n continue;\n\n if (right.shorthand && isComponentOf(right, left)) {\n // maybe `left` can be overridden by `right` which is a shorthand?\n if (!right.important && left.important)\n continue;\n\n if (!sameVendorPrefixesIn([left], right.components))\n continue;\n\n if (!anyValue(validator.isFunction, left) && overridingFunction(right, validator))\n continue;\n\n if (!isMergeableShorthand(right)) {\n left.unused = true;\n continue;\n }\n\n component = findComponentIn(right, left);\n mayOverride = configuration[left.name].canOverride || sameValue;\n if (everyValuesPair(mayOverride.bind(null, validator), left, component)) {\n left.unused = true;\n }\n } else if (right.shorthand && overridesNonComponentShorthand(right, left)) {\n // `right` is a shorthand while `left` can be overriden by it, think `border` and `border-top`\n if (!right.important && left.important) {\n continue;\n }\n\n if (!sameVendorPrefixesIn([left], right.components)) {\n continue;\n }\n\n if (!anyValue(validator.isFunction, left) && overridingFunction(right, validator)) {\n continue;\n }\n\n overriddenComponents = left.shorthand ?\n left.components:\n [left];\n\n for (k = overriddenComponents.length - 1; k >= 0; k--) {\n overriddenComponent = overriddenComponents[k];\n overridingComponent = findComponentIn(right, overriddenComponent);\n mayOverride = configuration[overriddenComponent.name].canOverride || sameValue;\n\n if (!everyValuesPair(mayOverride.bind(null, validator), left, overridingComponent)) {\n continue traverseLoop;\n }\n }\n\n left.unused = true;\n } else if (withMerging && left.shorthand && !right.shorthand && isComponentOf(left, right, true)) {\n // maybe `right` can be pulled into `left` which is a shorthand?\n if (right.important && !left.important)\n continue;\n\n if (!right.important && left.important) {\n right.unused = true;\n continue;\n }\n\n // Pending more clever algorithm in #527\n if (moreSameShorthands(properties, i - 1, left.name))\n continue;\n\n if (overridingFunction(left, validator))\n continue;\n\n if (!isMergeableShorthand(left))\n continue;\n\n if (hasUnset(left) || hasUnset(right))\n continue;\n\n component = findComponentIn(left, right);\n if (everyValuesPair(mayOverride.bind(null, validator), component, right)) {\n var disabledBackgroundMerging =\n !compatibility.properties.backgroundClipMerging && component.name.indexOf('background-clip') > -1 ||\n !compatibility.properties.backgroundOriginMerging && component.name.indexOf('background-origin') > -1 ||\n !compatibility.properties.backgroundSizeMerging && component.name.indexOf('background-size') > -1;\n var nonMergeableValue = configuration[right.name].nonMergeableValue === right.value[0][1];\n\n if (disabledBackgroundMerging || nonMergeableValue)\n continue;\n\n if (!compatibility.properties.merging && wouldBreakCompatibility(left, validator))\n continue;\n\n if (component.value[0][1] != right.value[0][1] && (hasInherit(left) || hasInherit(right)))\n continue;\n\n if (wouldResultInLongerValue(left, right))\n continue;\n\n if (!left.multiplex && right.multiplex)\n turnIntoMultiplex(left, multiplexSize(right));\n\n override(component, right);\n left.dirty = true;\n }\n } else if (withMerging && left.shorthand && right.shorthand && left.name == right.name) {\n // merge if all components can be merged\n\n if (!left.multiplex && right.multiplex)\n continue;\n\n if (!right.important && left.important) {\n right.unused = true;\n continue propertyLoop;\n }\n\n if (right.important && !left.important) {\n left.unused = true;\n continue;\n }\n\n if (!isMergeableShorthand(right)) {\n left.unused = true;\n continue;\n }\n\n for (k = left.components.length - 1; k >= 0; k--) {\n var leftComponent = left.components[k];\n var rightComponent = right.components[k];\n\n mayOverride = configuration[leftComponent.name].canOverride || sameValue;\n if (!everyValuesPair(mayOverride.bind(null, validator), leftComponent, rightComponent))\n continue propertyLoop;\n }\n\n overrideShorthand(left, right);\n left.dirty = true;\n } else if (withMerging && left.shorthand && right.shorthand && isComponentOf(left, right)) {\n // border is a shorthand but any of its components is a shorthand too\n\n if (!left.important && right.important)\n continue;\n\n component = findComponentIn(left, right);\n mayOverride = configuration[right.name].canOverride || sameValue;\n if (!everyValuesPair(mayOverride.bind(null, validator), component, right))\n continue;\n\n if (left.important && !right.important) {\n right.unused = true;\n continue;\n }\n\n var rightRestored = configuration[right.name].restore(right, configuration);\n if (rightRestored.length > 1)\n continue;\n\n component = findComponentIn(left, right);\n override(component, right);\n right.dirty = true;\n } else if (left.name == right.name) {\n // two non-shorthands should be merged based on understandability\n overridable = true;\n\n if (right.shorthand) {\n for (k = right.components.length - 1; k >= 0 && overridable; k--) {\n overriddenComponent = left.components[k];\n overridingComponent = right.components[k];\n mayOverride = configuration[overridingComponent.name].canOverride || sameValue;\n\n overridable = overridable && everyValuesPair(mayOverride.bind(null, validator), overriddenComponent, overridingComponent);\n }\n } else {\n mayOverride = configuration[right.name].canOverride || sameValue;\n overridable = everyValuesPair(mayOverride.bind(null, validator), left, right);\n }\n\n if (left.important && !right.important && overridable) {\n right.unused = true;\n continue;\n }\n\n if (!left.important && right.important && overridable) {\n left.unused = true;\n continue;\n }\n\n if (!overridable) {\n continue;\n }\n\n left.unused = true;\n }\n }\n }\n}\n\nmodule.exports = overrideProperties;\n","var mergeIntoShorthands = require('./merge-into-shorthands');\nvar overrideProperties = require('./override-properties');\nvar populateComponents = require('./populate-components');\n\nvar restoreWithComponents = require('../restore-with-components');\n\nvar wrapForOptimizing = require('../../wrap-for-optimizing').all;\nvar removeUnused = require('../../remove-unused');\nvar restoreFromOptimizing = require('../../restore-from-optimizing');\n\nvar OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;\n\nfunction optimizeProperties(properties, withOverriding, withMerging, context) {\n var levelOptions = context.options.level[OptimizationLevel.Two];\n var _properties = wrapForOptimizing(properties, levelOptions.skipProperties);\n var _property;\n var i, l;\n\n populateComponents(_properties, context.validator, context.warnings);\n\n for (i = 0, l = _properties.length; i < l; i++) {\n _property = _properties[i];\n if (_property.block) {\n optimizeProperties(_property.value[0][1], withOverriding, withMerging, context);\n }\n }\n\n if (withMerging && levelOptions.mergeIntoShorthands) {\n mergeIntoShorthands(_properties, context.validator);\n }\n\n if (withOverriding && levelOptions.overrideProperties) {\n overrideProperties(_properties, withMerging, context.options.compatibility, context.validator);\n }\n\n restoreFromOptimizing(_properties, restoreWithComponents);\n removeUnused(_properties);\n}\n\nmodule.exports = optimizeProperties;\n","var isMergeable = require('./is-mergeable');\n\nvar optimizeProperties = require('./properties/optimize');\n\nvar sortSelectors = require('../level-1/sort-selectors');\nvar tidyRules = require('../level-1/tidy-rules');\n\nvar OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;\n\nvar serializeBody = require('../../writer/one-time').body;\nvar serializeRules = require('../../writer/one-time').rules;\n\nvar Token = require('../../tokenizer/token');\n\nfunction mergeAdjacent(tokens, context) {\n var lastToken = [null, [], []];\n var options = context.options;\n var adjacentSpace = options.compatibility.selectors.adjacentSpace;\n var selectorsSortingMethod = options.level[OptimizationLevel.One].selectorsSortingMethod;\n var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses;\n var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements;\n var mergeLimit = options.compatibility.selectors.mergeLimit;\n var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging;\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token[0] != Token.RULE) {\n lastToken = [null, [], []];\n continue;\n }\n\n if (lastToken[0] == Token.RULE && serializeRules(token[1]) == serializeRules(lastToken[1])) {\n Array.prototype.push.apply(lastToken[2], token[2]);\n optimizeProperties(lastToken[2], true, true, context);\n token[2] = [];\n } else if (lastToken[0] == Token.RULE && serializeBody(token[2]) == serializeBody(lastToken[2]) &&\n isMergeable(serializeRules(token[1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) &&\n isMergeable(serializeRules(lastToken[1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) &&\n lastToken[1].length < mergeLimit) {\n lastToken[1] = tidyRules(lastToken[1].concat(token[1]), false, adjacentSpace, false, context.warnings);\n lastToken[1] = lastToken.length > 1 ? sortSelectors(lastToken[1], selectorsSortingMethod) : lastToken[1];\n token[2] = [];\n } else {\n lastToken = token;\n }\n }\n}\n\nmodule.exports = mergeAdjacent;\n","var MODIFIER_PATTERN = /\\-\\-.+$/;\n\nfunction rulesOverlap(rule1, rule2, bemMode) {\n var scope1;\n var scope2;\n var i, l;\n var j, m;\n\n for (i = 0, l = rule1.length; i < l; i++) {\n scope1 = rule1[i][1];\n\n for (j = 0, m = rule2.length; j < m; j++) {\n scope2 = rule2[j][1];\n\n if (scope1 == scope2) {\n return true;\n }\n\n if (bemMode && withoutModifiers(scope1) == withoutModifiers(scope2)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction withoutModifiers(scope) {\n return scope.replace(MODIFIER_PATTERN, '');\n}\n\nmodule.exports = rulesOverlap;\n","var Marker = require('../../tokenizer/marker');\n\nvar Selector = {\n ADJACENT_SIBLING: '+',\n DESCENDANT: '>',\n DOT: '.',\n HASH: '#',\n NON_ADJACENT_SIBLING: '~',\n PSEUDO: ':'\n};\n\nvar LETTER_PATTERN = /[a-zA-Z]/;\nvar NOT_PREFIX = ':not(';\nvar SEPARATOR_PATTERN = /[\\s,\\(>~\\+]/;\n\nfunction specificity(selector) {\n var result = [0, 0, 0];\n var character;\n var isEscaped;\n var isSingleQuoted;\n var isDoubleQuoted;\n var roundBracketLevel = 0;\n var couldIntroduceNewTypeSelector;\n var withinNotPseudoClass = false;\n var wasPseudoClass = false;\n var i, l;\n\n for (i = 0, l = selector.length; i < l; i++) {\n character = selector[i];\n\n if (isEscaped) {\n // noop\n } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) {\n isSingleQuoted = true;\n } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && isSingleQuoted) {\n isSingleQuoted = false;\n } else if (character == Marker.DOUBLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) {\n isDoubleQuoted = true;\n } else if (character == Marker.DOUBLE_QUOTE && isDoubleQuoted && !isSingleQuoted) {\n isDoubleQuoted = false;\n } else if (isSingleQuoted || isDoubleQuoted) {\n continue;\n } else if (roundBracketLevel > 0 && !withinNotPseudoClass) {\n // noop\n } else if (character == Marker.OPEN_ROUND_BRACKET) {\n roundBracketLevel++;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && roundBracketLevel == 1) {\n roundBracketLevel--;\n withinNotPseudoClass = false;\n } else if (character == Marker.CLOSE_ROUND_BRACKET) {\n roundBracketLevel--;\n } else if (character == Selector.HASH) {\n result[0]++;\n } else if (character == Selector.DOT || character == Marker.OPEN_SQUARE_BRACKET) {\n result[1]++;\n } else if (character == Selector.PSEUDO && !wasPseudoClass && !isNotPseudoClass(selector, i)) {\n result[1]++;\n withinNotPseudoClass = false;\n } else if (character == Selector.PSEUDO) {\n withinNotPseudoClass = true;\n } else if ((i === 0 || couldIntroduceNewTypeSelector) && LETTER_PATTERN.test(character)) {\n result[2]++;\n }\n\n isEscaped = character == Marker.BACK_SLASH;\n wasPseudoClass = character == Selector.PSEUDO;\n couldIntroduceNewTypeSelector = !isEscaped && SEPARATOR_PATTERN.test(character);\n }\n\n return result;\n}\n\nfunction isNotPseudoClass(selector, index) {\n return selector.indexOf(NOT_PREFIX, index) === index;\n}\n\nmodule.exports = specificity;\n","var specificity = require('./specificity');\n\nfunction specificitiesOverlap(selector1, selector2, cache) {\n var specificity1;\n var specificity2;\n var i, l;\n var j, m;\n\n for (i = 0, l = selector1.length; i < l; i++) {\n specificity1 = findSpecificity(selector1[i][1], cache);\n\n for (j = 0, m = selector2.length; j < m; j++) {\n specificity2 = findSpecificity(selector2[j][1], cache);\n\n if (specificity1[0] === specificity2[0] && specificity1[1] === specificity2[1] && specificity1[2] === specificity2[2]) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction findSpecificity(selector, cache) {\n var value;\n\n if (!(selector in cache)) {\n cache[selector] = value = specificity(selector);\n }\n\n return value || cache[selector];\n}\n\nmodule.exports = specificitiesOverlap;\n","// TODO: it'd be great to merge it with the other canReorder functionality\n\nvar rulesOverlap = require('./rules-overlap');\nvar specificitiesOverlap = require('./specificities-overlap');\n\nvar FLEX_PROPERTIES = /align\\-items|box\\-align|box\\-pack|flex|justify/;\nvar BORDER_PROPERTIES = /^border\\-(top|right|bottom|left|color|style|width|radius)/;\n\nfunction canReorder(left, right, cache) {\n for (var i = right.length - 1; i >= 0; i--) {\n for (var j = left.length - 1; j >= 0; j--) {\n if (!canReorderSingle(left[j], right[i], cache))\n return false;\n }\n }\n\n return true;\n}\n\nfunction canReorderSingle(left, right, cache) {\n var leftName = left[0];\n var leftValue = left[1];\n var leftNameRoot = left[2];\n var leftSelector = left[5];\n var leftInSpecificSelector = left[6];\n var rightName = right[0];\n var rightValue = right[1];\n var rightNameRoot = right[2];\n var rightSelector = right[5];\n var rightInSpecificSelector = right[6];\n\n if (leftName == 'font' && rightName == 'line-height' || rightName == 'font' && leftName == 'line-height')\n return false;\n if (FLEX_PROPERTIES.test(leftName) && FLEX_PROPERTIES.test(rightName))\n return false;\n if (leftNameRoot == rightNameRoot && unprefixed(leftName) == unprefixed(rightName) && (vendorPrefixed(leftName) ^ vendorPrefixed(rightName)))\n return false;\n if (leftNameRoot == 'border' && BORDER_PROPERTIES.test(rightNameRoot) && (leftName == 'border' || leftName == rightNameRoot || (leftValue != rightValue && sameBorderComponent(leftName, rightName))))\n return false;\n if (rightNameRoot == 'border' && BORDER_PROPERTIES.test(leftNameRoot) && (rightName == 'border' || rightName == leftNameRoot || (leftValue != rightValue && sameBorderComponent(leftName, rightName))))\n return false;\n if (leftNameRoot == 'border' && rightNameRoot == 'border' && leftName != rightName && (isSideBorder(leftName) && isStyleBorder(rightName) || isStyleBorder(leftName) && isSideBorder(rightName)))\n return false;\n if (leftNameRoot != rightNameRoot)\n return true;\n if (leftName == rightName && leftNameRoot == rightNameRoot && (leftValue == rightValue || withDifferentVendorPrefix(leftValue, rightValue)))\n return true;\n if (leftName != rightName && leftNameRoot == rightNameRoot && leftName != leftNameRoot && rightName != rightNameRoot)\n return true;\n if (leftName != rightName && leftNameRoot == rightNameRoot && leftValue == rightValue)\n return true;\n if (rightInSpecificSelector && leftInSpecificSelector && !inheritable(leftNameRoot) && !inheritable(rightNameRoot) && !rulesOverlap(rightSelector, leftSelector, false))\n return true;\n if (!specificitiesOverlap(leftSelector, rightSelector, cache))\n return true;\n\n return false;\n}\n\nfunction vendorPrefixed(name) {\n return /^\\-(?:moz|webkit|ms|o)\\-/.test(name);\n}\n\nfunction unprefixed(name) {\n return name.replace(/^\\-(?:moz|webkit|ms|o)\\-/, '');\n}\n\nfunction sameBorderComponent(name1, name2) {\n return name1.split('-').pop() == name2.split('-').pop();\n}\n\nfunction isSideBorder(name) {\n return name == 'border-top' || name == 'border-right' || name == 'border-bottom' || name == 'border-left';\n}\n\nfunction isStyleBorder(name) {\n return name == 'border-color' || name == 'border-style' || name == 'border-width';\n}\n\nfunction withDifferentVendorPrefix(value1, value2) {\n return vendorPrefixed(value1) && vendorPrefixed(value2) && value1.split('-')[1] != value2.split('-')[2];\n}\n\nfunction inheritable(name) {\n // According to http://www.w3.org/TR/CSS21/propidx.html\n // Others will be catched by other, preceeding rules\n return name == 'font' || name == 'line-height' || name == 'list-style';\n}\n\nmodule.exports = {\n canReorder: canReorder,\n canReorderSingle: canReorderSingle\n};\n","// This extractor is used in level 2 optimizations\n// IMPORTANT: Mind Token class and this code is not related!\n// Properties will be tokenized in one step, see #429\n\nvar Token = require('../../tokenizer/token');\nvar serializeRules = require('../../writer/one-time').rules;\nvar serializeValue = require('../../writer/one-time').value;\n\nfunction extractProperties(token) {\n var properties = [];\n var inSpecificSelector;\n var property;\n var name;\n var value;\n var i, l;\n\n if (token[0] == Token.RULE) {\n inSpecificSelector = !/[\\.\\+>~]/.test(serializeRules(token[1]));\n\n for (i = 0, l = token[2].length; i < l; i++) {\n property = token[2][i];\n\n if (property[0] != Token.PROPERTY)\n continue;\n\n name = property[1][1];\n if (name.length === 0)\n continue;\n\n value = serializeValue(property, i);\n\n properties.push([\n name,\n value,\n findNameRoot(name),\n token[2][i],\n name + ':' + value,\n token[1],\n inSpecificSelector\n ]);\n }\n } else if (token[0] == Token.NESTED_BLOCK) {\n for (i = 0, l = token[2].length; i < l; i++) {\n properties = properties.concat(extractProperties(token[2][i]));\n }\n }\n\n return properties;\n}\n\nfunction findNameRoot(name) {\n if (name == 'list-style')\n return name;\n if (name.indexOf('-radius') > 0)\n return 'border-radius';\n if (name == 'border-collapse' || name == 'border-spacing' || name == 'border-image')\n return name;\n if (name.indexOf('border-') === 0 && /^border\\-\\w+\\-\\w+$/.test(name))\n return name.match(/border\\-\\w+/)[0];\n if (name.indexOf('border-') === 0 && /^border\\-\\w+$/.test(name))\n return 'border';\n if (name.indexOf('text-') === 0)\n return name;\n if (name == '-chrome-')\n return name;\n\n return name.replace(/^\\-\\w+\\-/, '').match(/([a-zA-Z]+)/)[0].toLowerCase();\n}\n\nmodule.exports = extractProperties;\n","var canReorder = require('./reorderable').canReorder;\nvar canReorderSingle = require('./reorderable').canReorderSingle;\nvar extractProperties = require('./extract-properties');\nvar rulesOverlap = require('./rules-overlap');\n\nvar serializeRules = require('../../writer/one-time').rules;\nvar OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;\nvar Token = require('../../tokenizer/token');\n\nfunction mergeMediaQueries(tokens, context) {\n var mergeSemantically = context.options.level[OptimizationLevel.Two].mergeSemantically;\n var specificityCache = context.cache.specificity;\n var candidates = {};\n var reduced = [];\n\n for (var i = tokens.length - 1; i >= 0; i--) {\n var token = tokens[i];\n if (token[0] != Token.NESTED_BLOCK) {\n continue;\n }\n\n var key = serializeRules(token[1]);\n var candidate = candidates[key];\n if (!candidate) {\n candidate = [];\n candidates[key] = candidate;\n }\n\n candidate.push(i);\n }\n\n for (var name in candidates) {\n var positions = candidates[name];\n\n positionLoop:\n for (var j = positions.length - 1; j > 0; j--) {\n var positionOne = positions[j];\n var tokenOne = tokens[positionOne];\n var positionTwo = positions[j - 1];\n var tokenTwo = tokens[positionTwo];\n\n directionLoop:\n for (var direction = 1; direction >= -1; direction -= 2) {\n var topToBottom = direction == 1;\n var from = topToBottom ? positionOne + 1 : positionTwo - 1;\n var to = topToBottom ? positionTwo : positionOne;\n var delta = topToBottom ? 1 : -1;\n var source = topToBottom ? tokenOne : tokenTwo;\n var target = topToBottom ? tokenTwo : tokenOne;\n var movedProperties = extractProperties(source);\n\n while (from != to) {\n var traversedProperties = extractProperties(tokens[from]);\n from += delta;\n\n if (mergeSemantically && allSameRulePropertiesCanBeReordered(movedProperties, traversedProperties, specificityCache)) {\n continue;\n }\n\n if (!canReorder(movedProperties, traversedProperties, specificityCache))\n continue directionLoop;\n }\n\n target[2] = topToBottom ?\n source[2].concat(target[2]) :\n target[2].concat(source[2]);\n source[2] = [];\n\n reduced.push(target);\n continue positionLoop;\n }\n }\n }\n\n return reduced;\n}\n\nfunction allSameRulePropertiesCanBeReordered(movedProperties, traversedProperties, specificityCache) {\n var movedProperty;\n var movedRule;\n var traversedProperty;\n var traversedRule;\n var i, l;\n var j, m;\n\n for (i = 0, l = movedProperties.length; i < l; i++) {\n movedProperty = movedProperties[i];\n movedRule = movedProperty[5];\n\n for (j = 0, m = traversedProperties.length; j < m; j++) {\n traversedProperty = traversedProperties[j];\n traversedRule = traversedProperty[5];\n\n if (rulesOverlap(movedRule, traversedRule, true) && !canReorderSingle(movedProperty, traversedProperty, specificityCache)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nmodule.exports = mergeMediaQueries;\n","var isMergeable = require('./is-mergeable');\n\nvar sortSelectors = require('../level-1/sort-selectors');\nvar tidyRules = require('../level-1/tidy-rules');\n\nvar OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;\n\nvar serializeBody = require('../../writer/one-time').body;\nvar serializeRules = require('../../writer/one-time').rules;\n\nvar Token = require('../../tokenizer/token');\n\nfunction unsafeSelector(value) {\n return /\\.|\\*| :/.test(value);\n}\n\nfunction isBemElement(token) {\n var asString = serializeRules(token[1]);\n return asString.indexOf('__') > -1 || asString.indexOf('--') > -1;\n}\n\nfunction withoutModifier(selector) {\n return selector.replace(/--[^ ,>\\+~:]+/g, '');\n}\n\nfunction removeAnyUnsafeElements(left, candidates) {\n var leftSelector = withoutModifier(serializeRules(left[1]));\n\n for (var body in candidates) {\n var right = candidates[body];\n var rightSelector = withoutModifier(serializeRules(right[1]));\n\n if (rightSelector.indexOf(leftSelector) > -1 || leftSelector.indexOf(rightSelector) > -1)\n delete candidates[body];\n }\n}\n\nfunction mergeNonAdjacentByBody(tokens, context) {\n var options = context.options;\n var mergeSemantically = options.level[OptimizationLevel.Two].mergeSemantically;\n var adjacentSpace = options.compatibility.selectors.adjacentSpace;\n var selectorsSortingMethod = options.level[OptimizationLevel.One].selectorsSortingMethod;\n var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses;\n var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements;\n var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging;\n var candidates = {};\n\n for (var i = tokens.length - 1; i >= 0; i--) {\n var token = tokens[i];\n if (token[0] != Token.RULE)\n continue;\n\n if (token[2].length > 0 && (!mergeSemantically && unsafeSelector(serializeRules(token[1]))))\n candidates = {};\n\n if (token[2].length > 0 && mergeSemantically && isBemElement(token))\n removeAnyUnsafeElements(token, candidates);\n\n var candidateBody = serializeBody(token[2]);\n var oldToken = candidates[candidateBody];\n if (oldToken &&\n isMergeable(serializeRules(token[1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) &&\n isMergeable(serializeRules(oldToken[1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging)) {\n\n if (token[2].length > 0) {\n token[1] = tidyRules(oldToken[1].concat(token[1]), false, adjacentSpace, false, context.warnings);\n token[1] = token[1].length > 1 ? sortSelectors(token[1], selectorsSortingMethod) : token[1];\n } else {\n token[1] = oldToken[1].concat(token[1]);\n }\n\n oldToken[2] = [];\n candidates[candidateBody] = null;\n }\n\n candidates[serializeBody(token[2])] = token;\n }\n}\n\nmodule.exports = mergeNonAdjacentByBody;\n","var canReorder = require('./reorderable').canReorder;\nvar extractProperties = require('./extract-properties');\n\nvar optimizeProperties = require('./properties/optimize');\n\nvar serializeRules = require('../../writer/one-time').rules;\n\nvar Token = require('../../tokenizer/token');\n\nfunction mergeNonAdjacentBySelector(tokens, context) {\n var specificityCache = context.cache.specificity;\n var allSelectors = {};\n var repeatedSelectors = [];\n var i;\n\n for (i = tokens.length - 1; i >= 0; i--) {\n if (tokens[i][0] != Token.RULE)\n continue;\n if (tokens[i][2].length === 0)\n continue;\n\n var selector = serializeRules(tokens[i][1]);\n allSelectors[selector] = [i].concat(allSelectors[selector] || []);\n\n if (allSelectors[selector].length == 2)\n repeatedSelectors.push(selector);\n }\n\n for (i = repeatedSelectors.length - 1; i >= 0; i--) {\n var positions = allSelectors[repeatedSelectors[i]];\n\n selectorIterator:\n for (var j = positions.length - 1; j > 0; j--) {\n var positionOne = positions[j - 1];\n var tokenOne = tokens[positionOne];\n var positionTwo = positions[j];\n var tokenTwo = tokens[positionTwo];\n\n directionIterator:\n for (var direction = 1; direction >= -1; direction -= 2) {\n var topToBottom = direction == 1;\n var from = topToBottom ? positionOne + 1 : positionTwo - 1;\n var to = topToBottom ? positionTwo : positionOne;\n var delta = topToBottom ? 1 : -1;\n var moved = topToBottom ? tokenOne : tokenTwo;\n var target = topToBottom ? tokenTwo : tokenOne;\n var movedProperties = extractProperties(moved);\n\n while (from != to) {\n var traversedProperties = extractProperties(tokens[from]);\n from += delta;\n\n // traversed then moved as we move selectors towards the start\n var reorderable = topToBottom ?\n canReorder(movedProperties, traversedProperties, specificityCache) :\n canReorder(traversedProperties, movedProperties, specificityCache);\n\n if (!reorderable && !topToBottom)\n continue selectorIterator;\n if (!reorderable && topToBottom)\n continue directionIterator;\n }\n\n if (topToBottom) {\n Array.prototype.push.apply(moved[2], target[2]);\n target[2] = moved[2];\n } else {\n Array.prototype.push.apply(target[2], moved[2]);\n }\n\n optimizeProperties(target[2], true, true, context);\n moved[2] = [];\n }\n }\n }\n}\n\nmodule.exports = mergeNonAdjacentBySelector;\n","function cloneArray(array) {\n var cloned = array.slice(0);\n\n for (var i = 0, l = cloned.length; i < l; i++) {\n if (Array.isArray(cloned[i]))\n cloned[i] = cloneArray(cloned[i]);\n }\n\n return cloned;\n}\n\nmodule.exports = cloneArray;\n","var isMergeable = require('./is-mergeable');\n\nvar optimizeProperties = require('./properties/optimize');\n\nvar cloneArray = require('../../utils/clone-array');\n\nvar Token = require('../../tokenizer/token');\n\nvar serializeBody = require('../../writer/one-time').body;\nvar serializeRules = require('../../writer/one-time').rules;\n\nfunction reduceNonAdjacent(tokens, context) {\n var options = context.options;\n var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses;\n var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements;\n var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging;\n var candidates = {};\n var repeated = [];\n\n for (var i = tokens.length - 1; i >= 0; i--) {\n var token = tokens[i];\n\n if (token[0] != Token.RULE) {\n continue;\n } else if (token[2].length === 0) {\n continue;\n }\n\n var selectorAsString = serializeRules(token[1]);\n var isComplexAndNotSpecial = token[1].length > 1 &&\n isMergeable(selectorAsString, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging);\n var wrappedSelectors = wrappedSelectorsFrom(token[1]);\n var selectors = isComplexAndNotSpecial ?\n [selectorAsString].concat(wrappedSelectors) :\n [selectorAsString];\n\n for (var j = 0, m = selectors.length; j < m; j++) {\n var selector = selectors[j];\n\n if (!candidates[selector])\n candidates[selector] = [];\n else\n repeated.push(selector);\n\n candidates[selector].push({\n where: i,\n list: wrappedSelectors,\n isPartial: isComplexAndNotSpecial && j > 0,\n isComplex: isComplexAndNotSpecial && j === 0\n });\n }\n }\n\n reduceSimpleNonAdjacentCases(tokens, repeated, candidates, options, context);\n reduceComplexNonAdjacentCases(tokens, candidates, options, context);\n}\n\nfunction wrappedSelectorsFrom(list) {\n var wrapped = [];\n\n for (var i = 0; i < list.length; i++) {\n wrapped.push([list[i][1]]);\n }\n\n return wrapped;\n}\n\nfunction reduceSimpleNonAdjacentCases(tokens, repeated, candidates, options, context) {\n function filterOut(idx, bodies) {\n return data[idx].isPartial && bodies.length === 0;\n }\n\n function reduceBody(token, newBody, processedCount, tokenIdx) {\n if (!data[processedCount - tokenIdx - 1].isPartial)\n token[2] = newBody;\n }\n\n for (var i = 0, l = repeated.length; i < l; i++) {\n var selector = repeated[i];\n var data = candidates[selector];\n\n reduceSelector(tokens, data, {\n filterOut: filterOut,\n callback: reduceBody\n }, options, context);\n }\n}\n\nfunction reduceComplexNonAdjacentCases(tokens, candidates, options, context) {\n var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses;\n var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements;\n var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging;\n var localContext = {};\n\n function filterOut(idx) {\n return localContext.data[idx].where < localContext.intoPosition;\n }\n\n function collectReducedBodies(token, newBody, processedCount, tokenIdx) {\n if (tokenIdx === 0)\n localContext.reducedBodies.push(newBody);\n }\n\n allSelectors:\n for (var complexSelector in candidates) {\n var into = candidates[complexSelector];\n if (!into[0].isComplex)\n continue;\n\n var intoPosition = into[into.length - 1].where;\n var intoToken = tokens[intoPosition];\n var reducedBodies = [];\n\n var selectors = isMergeable(complexSelector, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) ?\n into[0].list :\n [complexSelector];\n\n localContext.intoPosition = intoPosition;\n localContext.reducedBodies = reducedBodies;\n\n for (var j = 0, m = selectors.length; j < m; j++) {\n var selector = selectors[j];\n var data = candidates[selector];\n\n if (data.length < 2)\n continue allSelectors;\n\n localContext.data = data;\n\n reduceSelector(tokens, data, {\n filterOut: filterOut,\n callback: collectReducedBodies\n }, options, context);\n\n if (serializeBody(reducedBodies[reducedBodies.length - 1]) != serializeBody(reducedBodies[0]))\n continue allSelectors;\n }\n\n intoToken[2] = reducedBodies[0];\n }\n}\n\nfunction reduceSelector(tokens, data, context, options, outerContext) {\n var bodies = [];\n var bodiesAsList = [];\n var processedTokens = [];\n\n for (var j = data.length - 1; j >= 0; j--) {\n if (context.filterOut(j, bodies))\n continue;\n\n var where = data[j].where;\n var token = tokens[where];\n var clonedBody = cloneArray(token[2]);\n\n bodies = bodies.concat(clonedBody);\n bodiesAsList.push(clonedBody);\n processedTokens.push(where);\n }\n\n optimizeProperties(bodies, true, false, outerContext);\n\n var processedCount = processedTokens.length;\n var propertyIdx = bodies.length - 1;\n var tokenIdx = processedCount - 1;\n\n while (tokenIdx >= 0) {\n if ((tokenIdx === 0 || (bodies[propertyIdx] && bodiesAsList[tokenIdx].indexOf(bodies[propertyIdx]) > -1)) && propertyIdx > -1) {\n propertyIdx--;\n continue;\n }\n\n var newBody = bodies.splice(propertyIdx + 1);\n context.callback(tokens[processedTokens[tokenIdx]], newBody, processedCount, tokenIdx);\n\n tokenIdx--;\n }\n}\n\nmodule.exports = reduceNonAdjacent;\n","var Token = require('../../tokenizer/token');\n\nvar serializeAll = require('../../writer/one-time').all;\n\nvar FONT_FACE_SCOPE = '@font-face';\n\nfunction removeDuplicateFontAtRules(tokens) {\n var fontAtRules = [];\n var token;\n var key;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n\n if (token[0] != Token.AT_RULE_BLOCK && token[1][0][1] != FONT_FACE_SCOPE) {\n continue;\n }\n\n key = serializeAll([token]);\n\n if (fontAtRules.indexOf(key) > -1) {\n token[2] = [];\n } else {\n fontAtRules.push(key);\n }\n }\n}\n\nmodule.exports = removeDuplicateFontAtRules;\n","var Token = require('../../tokenizer/token');\n\nvar serializeAll = require('../../writer/one-time').all;\nvar serializeRules = require('../../writer/one-time').rules;\n\nfunction removeDuplicateMediaQueries(tokens) {\n var candidates = {};\n var candidate;\n var token;\n var key;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n if (token[0] != Token.NESTED_BLOCK) {\n continue;\n }\n\n key = serializeRules(token[1]) + '%' + serializeAll(token[2]);\n candidate = candidates[key];\n\n if (candidate) {\n candidate[2] = [];\n }\n\n candidates[key] = token;\n }\n}\n\nmodule.exports = removeDuplicateMediaQueries;\n","var Token = require('../../tokenizer/token');\n\nvar serializeBody = require('../../writer/one-time').body;\nvar serializeRules = require('../../writer/one-time').rules;\n\nfunction removeDuplicates(tokens) {\n var matched = {};\n var moreThanOnce = [];\n var id, token;\n var body, bodies;\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n if (token[0] != Token.RULE)\n continue;\n\n id = serializeRules(token[1]);\n\n if (matched[id] && matched[id].length == 1)\n moreThanOnce.push(id);\n else\n matched[id] = matched[id] || [];\n\n matched[id].push(i);\n }\n\n for (i = 0, l = moreThanOnce.length; i < l; i++) {\n id = moreThanOnce[i];\n bodies = [];\n\n for (var j = matched[id].length - 1; j >= 0; j--) {\n token = tokens[matched[id][j]];\n body = serializeBody(token[2]);\n\n if (bodies.indexOf(body) > -1)\n token[2] = [];\n else\n bodies.push(body);\n }\n }\n}\n\nmodule.exports = removeDuplicates;\n","var populateComponents = require('./properties/populate-components');\n\nvar wrapForOptimizing = require('../wrap-for-optimizing').single;\nvar restoreFromOptimizing = require('../restore-from-optimizing');\n\nvar Token = require('../../tokenizer/token');\n\nvar animationNameRegex = /^(\\-moz\\-|\\-o\\-|\\-webkit\\-)?animation-name$/;\nvar animationRegex = /^(\\-moz\\-|\\-o\\-|\\-webkit\\-)?animation$/;\nvar keyframeRegex = /^@(\\-moz\\-|\\-o\\-|\\-webkit\\-)?keyframes /;\nvar importantRegex = /\\s{0,31}!important$/;\nvar optionalMatchingQuotesRegex = /^(['\"]?)(.*)\\1$/;\n\nfunction normalize(value) {\n return value\n .replace(optionalMatchingQuotesRegex, '$2')\n .replace(importantRegex, '');\n}\n\nfunction removeUnusedAtRules(tokens, context) {\n removeUnusedAtRule(tokens, matchCounterStyle, markCounterStylesAsUsed, context);\n removeUnusedAtRule(tokens, matchFontFace, markFontFacesAsUsed, context);\n removeUnusedAtRule(tokens, matchKeyframe, markKeyframesAsUsed, context);\n removeUnusedAtRule(tokens, matchNamespace, markNamespacesAsUsed, context);\n}\n\nfunction removeUnusedAtRule(tokens, matchCallback, markCallback, context) {\n var atRules = {};\n var atRule;\n var atRuleTokens;\n var atRuleToken;\n var zeroAt;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n matchCallback(tokens[i], atRules);\n }\n\n if (Object.keys(atRules).length === 0) {\n return;\n }\n\n markUsedAtRules(tokens, markCallback, atRules, context);\n\n for (atRule in atRules) {\n atRuleTokens = atRules[atRule];\n\n for (i = 0, l = atRuleTokens.length; i < l; i++) {\n atRuleToken = atRuleTokens[i];\n zeroAt = atRuleToken[0] == Token.AT_RULE ? 1 : 2;\n atRuleToken[zeroAt] = [];\n }\n }\n}\n\nfunction markUsedAtRules(tokens, markCallback, atRules, context) {\n var boundMarkCallback = markCallback(atRules);\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n switch (tokens[i][0]) {\n case Token.RULE:\n boundMarkCallback(tokens[i], context);\n break;\n case Token.NESTED_BLOCK:\n markUsedAtRules(tokens[i][2], markCallback, atRules, context);\n }\n }\n}\n\nfunction matchCounterStyle(token, atRules) {\n var match;\n\n if (token[0] == Token.AT_RULE_BLOCK && token[1][0][1].indexOf('@counter-style') === 0) {\n match = token[1][0][1].split(' ')[1];\n atRules[match] = atRules[match] || [];\n atRules[match].push(token);\n }\n}\n\nfunction markCounterStylesAsUsed(atRules) {\n return function (token, context) {\n var property;\n var wrappedProperty;\n var i, l;\n\n for (i = 0, l = token[2].length; i < l; i++) {\n property = token[2][i];\n\n if (property[1][1] == 'list-style') {\n wrappedProperty = wrapForOptimizing(property);\n populateComponents([wrappedProperty], context.validator, context.warnings);\n\n if (wrappedProperty.components[0].value[0][1] in atRules) {\n delete atRules[property[2][1]];\n }\n\n restoreFromOptimizing([wrappedProperty]);\n }\n\n if (property[1][1] == 'list-style-type' && property[2][1] in atRules) {\n delete atRules[property[2][1]];\n }\n }\n };\n}\n\nfunction matchFontFace(token, atRules) {\n var property;\n var match;\n var i, l;\n\n if (token[0] == Token.AT_RULE_BLOCK && token[1][0][1] == '@font-face') {\n for (i = 0, l = token[2].length; i < l; i++) {\n property = token[2][i];\n\n if (property[1][1] == 'font-family') {\n match = normalize(property[2][1].toLowerCase());\n atRules[match] = atRules[match] || [];\n atRules[match].push(token);\n break;\n }\n }\n }\n}\n\nfunction markFontFacesAsUsed(atRules) {\n return function (token, context) {\n var property;\n var wrappedProperty;\n var component;\n var normalizedMatch;\n var i, l;\n var j, m;\n\n for (i = 0, l = token[2].length; i < l; i++) {\n property = token[2][i];\n\n if (property[1][1] == 'font') {\n wrappedProperty = wrapForOptimizing(property);\n populateComponents([wrappedProperty], context.validator, context.warnings);\n component = wrappedProperty.components[6];\n\n for (j = 0, m = component.value.length; j < m; j++) {\n normalizedMatch = normalize(component.value[j][1].toLowerCase());\n\n if (normalizedMatch in atRules) {\n delete atRules[normalizedMatch];\n }\n }\n\n restoreFromOptimizing([wrappedProperty]);\n }\n\n if (property[1][1] == 'font-family') {\n for (j = 2, m = property.length; j < m; j++) {\n normalizedMatch = normalize(property[j][1].toLowerCase());\n\n if (normalizedMatch in atRules) {\n delete atRules[normalizedMatch];\n }\n }\n }\n }\n };\n}\n\nfunction matchKeyframe(token, atRules) {\n var match;\n\n if (token[0] == Token.NESTED_BLOCK && keyframeRegex.test(token[1][0][1])) {\n match = token[1][0][1].split(' ')[1];\n atRules[match] = atRules[match] || [];\n atRules[match].push(token);\n }\n}\n\nfunction markKeyframesAsUsed(atRules) {\n return function (token, context) {\n var property;\n var wrappedProperty;\n var component;\n var i, l;\n var j, m;\n\n for (i = 0, l = token[2].length; i < l; i++) {\n property = token[2][i];\n\n if (animationRegex.test(property[1][1])) {\n wrappedProperty = wrapForOptimizing(property);\n populateComponents([wrappedProperty], context.validator, context.warnings);\n component = wrappedProperty.components[7];\n\n for (j = 0, m = component.value.length; j < m; j++) {\n if (component.value[j][1] in atRules) {\n delete atRules[component.value[j][1]];\n }\n }\n\n restoreFromOptimizing([wrappedProperty]);\n }\n\n if (animationNameRegex.test(property[1][1])) {\n for (j = 2, m = property.length; j < m; j++) {\n if (property[j][1] in atRules) {\n delete atRules[property[j][1]];\n }\n }\n }\n }\n };\n}\n\nfunction matchNamespace(token, atRules) {\n var match;\n\n if (token[0] == Token.AT_RULE && token[1].indexOf('@namespace') === 0) {\n match = token[1].split(' ')[1];\n atRules[match] = atRules[match] || [];\n atRules[match].push(token);\n }\n}\n\nfunction markNamespacesAsUsed(atRules) {\n var namespaceRegex = new RegExp(Object.keys(atRules).join('\\\\\\||') + '\\\\\\|', 'g');\n\n return function (token) {\n var match;\n var scope;\n var normalizedMatch;\n var i, l;\n var j, m;\n\n for (i = 0, l = token[1].length; i < l; i++) {\n scope = token[1][i];\n match = scope[1].match(namespaceRegex);\n\n for (j = 0, m = match.length; j < m; j++) {\n normalizedMatch = match[j].substring(0, match[j].length - 1);\n\n if (normalizedMatch in atRules) {\n delete atRules[normalizedMatch];\n }\n }\n }\n };\n}\n\nmodule.exports = removeUnusedAtRules;\n","function ruleSorter(s1, s2) {\n return s1[1] > s2[1] ? 1 : -1;\n}\n\nfunction tidyRuleDuplicates(rules) {\n var list = [];\n var repeated = [];\n\n for (var i = 0, l = rules.length; i < l; i++) {\n var rule = rules[i];\n\n if (repeated.indexOf(rule[1]) == -1) {\n repeated.push(rule[1]);\n list.push(rule);\n }\n }\n\n return list.sort(ruleSorter);\n}\n\nmodule.exports = tidyRuleDuplicates;\n","var canReorderSingle = require('./reorderable').canReorderSingle;\nvar extractProperties = require('./extract-properties');\nvar isMergeable = require('./is-mergeable');\nvar tidyRuleDuplicates = require('./tidy-rule-duplicates');\n\nvar Token = require('../../tokenizer/token');\n\nvar cloneArray = require('../../utils/clone-array');\n\nvar serializeBody = require('../../writer/one-time').body;\nvar serializeRules = require('../../writer/one-time').rules;\n\nfunction naturalSorter(a, b) {\n return a > b ? 1 : -1;\n}\n\nfunction cloneAndMergeSelectors(propertyA, propertyB) {\n var cloned = cloneArray(propertyA);\n cloned[5] = cloned[5].concat(propertyB[5]);\n\n return cloned;\n}\n\nfunction restructure(tokens, context) {\n var options = context.options;\n var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses;\n var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements;\n var mergeLimit = options.compatibility.selectors.mergeLimit;\n var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging;\n var specificityCache = context.cache.specificity;\n var movableTokens = {};\n var movedProperties = [];\n var multiPropertyMoveCache = {};\n var movedToBeDropped = [];\n var maxCombinationsLevel = 2;\n var ID_JOIN_CHARACTER = '%';\n\n function sendToMultiPropertyMoveCache(position, movedProperty, allFits) {\n for (var i = allFits.length - 1; i >= 0; i--) {\n var fit = allFits[i][0];\n var id = addToCache(movedProperty, fit);\n\n if (multiPropertyMoveCache[id].length > 1 && processMultiPropertyMove(position, multiPropertyMoveCache[id])) {\n removeAllMatchingFromCache(id);\n break;\n }\n }\n }\n\n function addToCache(movedProperty, fit) {\n var id = cacheId(fit);\n multiPropertyMoveCache[id] = multiPropertyMoveCache[id] || [];\n multiPropertyMoveCache[id].push([movedProperty, fit]);\n return id;\n }\n\n function removeAllMatchingFromCache(matchId) {\n var matchSelectors = matchId.split(ID_JOIN_CHARACTER);\n var forRemoval = [];\n var i;\n\n for (var id in multiPropertyMoveCache) {\n var selectors = id.split(ID_JOIN_CHARACTER);\n for (i = selectors.length - 1; i >= 0; i--) {\n if (matchSelectors.indexOf(selectors[i]) > -1) {\n forRemoval.push(id);\n break;\n }\n }\n }\n\n for (i = forRemoval.length - 1; i >= 0; i--) {\n delete multiPropertyMoveCache[forRemoval[i]];\n }\n }\n\n function cacheId(cachedTokens) {\n var id = [];\n for (var i = 0, l = cachedTokens.length; i < l; i++) {\n id.push(serializeRules(cachedTokens[i][1]));\n }\n return id.join(ID_JOIN_CHARACTER);\n }\n\n function tokensToMerge(sourceTokens) {\n var uniqueTokensWithBody = [];\n var mergeableTokens = [];\n\n for (var i = sourceTokens.length - 1; i >= 0; i--) {\n if (!isMergeable(serializeRules(sourceTokens[i][1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging)) {\n continue;\n }\n\n mergeableTokens.unshift(sourceTokens[i]);\n if (sourceTokens[i][2].length > 0 && uniqueTokensWithBody.indexOf(sourceTokens[i]) == -1)\n uniqueTokensWithBody.push(sourceTokens[i]);\n }\n\n return uniqueTokensWithBody.length > 1 ?\n mergeableTokens :\n [];\n }\n\n function shortenIfPossible(position, movedProperty) {\n var name = movedProperty[0];\n var value = movedProperty[1];\n var key = movedProperty[4];\n var valueSize = name.length + value.length + 1;\n var allSelectors = [];\n var qualifiedTokens = [];\n\n var mergeableTokens = tokensToMerge(movableTokens[key]);\n if (mergeableTokens.length < 2)\n return;\n\n var allFits = findAllFits(mergeableTokens, valueSize, 1);\n var bestFit = allFits[0];\n if (bestFit[1] > 0)\n return sendToMultiPropertyMoveCache(position, movedProperty, allFits);\n\n for (var i = bestFit[0].length - 1; i >=0; i--) {\n allSelectors = bestFit[0][i][1].concat(allSelectors);\n qualifiedTokens.unshift(bestFit[0][i]);\n }\n\n allSelectors = tidyRuleDuplicates(allSelectors);\n dropAsNewTokenAt(position, [movedProperty], allSelectors, qualifiedTokens);\n }\n\n function fitSorter(fit1, fit2) {\n return fit1[1] > fit2[1] ? 1 : (fit1[1] == fit2[1] ? 0 : -1);\n }\n\n function findAllFits(mergeableTokens, propertySize, propertiesCount) {\n var combinations = allCombinations(mergeableTokens, propertySize, propertiesCount, maxCombinationsLevel - 1);\n return combinations.sort(fitSorter);\n }\n\n function allCombinations(tokensVariant, propertySize, propertiesCount, level) {\n var differenceVariants = [[tokensVariant, sizeDifference(tokensVariant, propertySize, propertiesCount)]];\n if (tokensVariant.length > 2 && level > 0) {\n for (var i = tokensVariant.length - 1; i >= 0; i--) {\n var subVariant = Array.prototype.slice.call(tokensVariant, 0);\n subVariant.splice(i, 1);\n differenceVariants = differenceVariants.concat(allCombinations(subVariant, propertySize, propertiesCount, level - 1));\n }\n }\n\n return differenceVariants;\n }\n\n function sizeDifference(tokensVariant, propertySize, propertiesCount) {\n var allSelectorsSize = 0;\n for (var i = tokensVariant.length - 1; i >= 0; i--) {\n allSelectorsSize += tokensVariant[i][2].length > propertiesCount ? serializeRules(tokensVariant[i][1]).length : -1;\n }\n return allSelectorsSize - (tokensVariant.length - 1) * propertySize + 1;\n }\n\n function dropAsNewTokenAt(position, properties, allSelectors, mergeableTokens) {\n var i, j, k, m;\n var allProperties = [];\n\n for (i = mergeableTokens.length - 1; i >= 0; i--) {\n var mergeableToken = mergeableTokens[i];\n\n for (j = mergeableToken[2].length - 1; j >= 0; j--) {\n var mergeableProperty = mergeableToken[2][j];\n\n for (k = 0, m = properties.length; k < m; k++) {\n var property = properties[k];\n\n var mergeablePropertyName = mergeableProperty[1][1];\n var propertyName = property[0];\n var propertyBody = property[4];\n if (mergeablePropertyName == propertyName && serializeBody([mergeableProperty]) == propertyBody) {\n mergeableToken[2].splice(j, 1);\n break;\n }\n }\n }\n }\n\n for (i = properties.length - 1; i >= 0; i--) {\n allProperties.unshift(properties[i][3]);\n }\n\n var newToken = [Token.RULE, allSelectors, allProperties];\n tokens.splice(position, 0, newToken);\n }\n\n function dropPropertiesAt(position, movedProperty) {\n var key = movedProperty[4];\n var toMove = movableTokens[key];\n\n if (toMove && toMove.length > 1) {\n if (!shortenMultiMovesIfPossible(position, movedProperty))\n shortenIfPossible(position, movedProperty);\n }\n }\n\n function shortenMultiMovesIfPossible(position, movedProperty) {\n var candidates = [];\n var propertiesAndMergableTokens = [];\n var key = movedProperty[4];\n var j, k;\n\n var mergeableTokens = tokensToMerge(movableTokens[key]);\n if (mergeableTokens.length < 2)\n return;\n\n movableLoop:\n for (var value in movableTokens) {\n var tokensList = movableTokens[value];\n\n for (j = mergeableTokens.length - 1; j >= 0; j--) {\n if (tokensList.indexOf(mergeableTokens[j]) == -1)\n continue movableLoop;\n }\n\n candidates.push(value);\n }\n\n if (candidates.length < 2)\n return false;\n\n for (j = candidates.length - 1; j >= 0; j--) {\n for (k = movedProperties.length - 1; k >= 0; k--) {\n if (movedProperties[k][4] == candidates[j]) {\n propertiesAndMergableTokens.unshift([movedProperties[k], mergeableTokens]);\n break;\n }\n }\n }\n\n return processMultiPropertyMove(position, propertiesAndMergableTokens);\n }\n\n function processMultiPropertyMove(position, propertiesAndMergableTokens) {\n var valueSize = 0;\n var properties = [];\n var property;\n\n for (var i = propertiesAndMergableTokens.length - 1; i >= 0; i--) {\n property = propertiesAndMergableTokens[i][0];\n var fullValue = property[4];\n valueSize += fullValue.length + (i > 0 ? 1 : 0);\n\n properties.push(property);\n }\n\n var mergeableTokens = propertiesAndMergableTokens[0][1];\n var bestFit = findAllFits(mergeableTokens, valueSize, properties.length)[0];\n if (bestFit[1] > 0)\n return false;\n\n var allSelectors = [];\n var qualifiedTokens = [];\n for (i = bestFit[0].length - 1; i >= 0; i--) {\n allSelectors = bestFit[0][i][1].concat(allSelectors);\n qualifiedTokens.unshift(bestFit[0][i]);\n }\n\n allSelectors = tidyRuleDuplicates(allSelectors);\n dropAsNewTokenAt(position, properties, allSelectors, qualifiedTokens);\n\n for (i = properties.length - 1; i >= 0; i--) {\n property = properties[i];\n var index = movedProperties.indexOf(property);\n\n delete movableTokens[property[4]];\n\n if (index > -1 && movedToBeDropped.indexOf(index) == -1)\n movedToBeDropped.push(index);\n }\n\n return true;\n }\n\n function boundToAnotherPropertyInCurrrentToken(property, movedProperty, token) {\n var propertyName = property[0];\n var movedPropertyName = movedProperty[0];\n if (propertyName != movedPropertyName)\n return false;\n\n var key = movedProperty[4];\n var toMove = movableTokens[key];\n return toMove && toMove.indexOf(token) > -1;\n }\n\n for (var i = tokens.length - 1; i >= 0; i--) {\n var token = tokens[i];\n var isRule;\n var j, k, m;\n var samePropertyAt;\n\n if (token[0] == Token.RULE) {\n isRule = true;\n } else if (token[0] == Token.NESTED_BLOCK) {\n isRule = false;\n } else {\n continue;\n }\n\n // We cache movedProperties.length as it may change in the loop\n var movedCount = movedProperties.length;\n\n var properties = extractProperties(token);\n movedToBeDropped = [];\n\n var unmovableInCurrentToken = [];\n for (j = properties.length - 1; j >= 0; j--) {\n for (k = j - 1; k >= 0; k--) {\n if (!canReorderSingle(properties[j], properties[k], specificityCache)) {\n unmovableInCurrentToken.push(j);\n break;\n }\n }\n }\n\n for (j = properties.length - 1; j >= 0; j--) {\n var property = properties[j];\n var movedSameProperty = false;\n\n for (k = 0; k < movedCount; k++) {\n var movedProperty = movedProperties[k];\n\n if (movedToBeDropped.indexOf(k) == -1 && (!canReorderSingle(property, movedProperty, specificityCache) && !boundToAnotherPropertyInCurrrentToken(property, movedProperty, token) ||\n movableTokens[movedProperty[4]] && movableTokens[movedProperty[4]].length === mergeLimit)) {\n dropPropertiesAt(i + 1, movedProperty, token);\n\n if (movedToBeDropped.indexOf(k) == -1) {\n movedToBeDropped.push(k);\n delete movableTokens[movedProperty[4]];\n }\n }\n\n if (!movedSameProperty) {\n movedSameProperty = property[0] == movedProperty[0] && property[1] == movedProperty[1];\n\n if (movedSameProperty) {\n samePropertyAt = k;\n }\n }\n }\n\n if (!isRule || unmovableInCurrentToken.indexOf(j) > -1)\n continue;\n\n var key = property[4];\n\n if (movedSameProperty && movedProperties[samePropertyAt][5].length + property[5].length > mergeLimit) {\n dropPropertiesAt(i + 1, movedProperties[samePropertyAt]);\n movedProperties.splice(samePropertyAt, 1);\n movableTokens[key] = [token];\n movedSameProperty = false;\n } else {\n movableTokens[key] = movableTokens[key] || [];\n movableTokens[key].push(token);\n }\n\n if (movedSameProperty) {\n movedProperties[samePropertyAt] = cloneAndMergeSelectors(movedProperties[samePropertyAt], property);\n } else {\n movedProperties.push(property);\n }\n }\n\n movedToBeDropped = movedToBeDropped.sort(naturalSorter);\n for (j = 0, m = movedToBeDropped.length; j < m; j++) {\n var dropAt = movedToBeDropped[j] - j;\n movedProperties.splice(dropAt, 1);\n }\n }\n\n var position = tokens[0] && tokens[0][0] == Token.AT_RULE && tokens[0][1].indexOf('@charset') === 0 ? 1 : 0;\n for (; position < tokens.length - 1; position++) {\n var isImportRule = tokens[position][0] === Token.AT_RULE && tokens[position][1].indexOf('@import') === 0;\n var isComment = tokens[position][0] === Token.COMMENT;\n if (!(isImportRule || isComment))\n break;\n }\n\n for (i = 0; i < movedProperties.length; i++) {\n dropPropertiesAt(position, movedProperties[i]);\n }\n}\n\nmodule.exports = restructure;\n","var mergeAdjacent = require('./merge-adjacent');\nvar mergeMediaQueries = require('./merge-media-queries');\nvar mergeNonAdjacentByBody = require('./merge-non-adjacent-by-body');\nvar mergeNonAdjacentBySelector = require('./merge-non-adjacent-by-selector');\nvar reduceNonAdjacent = require('./reduce-non-adjacent');\nvar removeDuplicateFontAtRules = require('./remove-duplicate-font-at-rules');\nvar removeDuplicateMediaQueries = require('./remove-duplicate-media-queries');\nvar removeDuplicates = require('./remove-duplicates');\nvar removeUnusedAtRules = require('./remove-unused-at-rules');\nvar restructure = require('./restructure');\n\nvar optimizeProperties = require('./properties/optimize');\n\nvar OptimizationLevel = require('../../options/optimization-level').OptimizationLevel;\n\nvar Token = require('../../tokenizer/token');\n\nfunction removeEmpty(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n var isEmpty = false;\n\n switch (token[0]) {\n case Token.RULE:\n isEmpty = token[1].length === 0 || token[2].length === 0;\n break;\n case Token.NESTED_BLOCK:\n removeEmpty(token[2]);\n isEmpty = token[2].length === 0;\n break;\n case Token.AT_RULE:\n isEmpty = token[1].length === 0;\n break;\n case Token.AT_RULE_BLOCK:\n isEmpty = token[2].length === 0;\n }\n\n if (isEmpty) {\n tokens.splice(i, 1);\n i--;\n l--;\n }\n }\n}\n\nfunction recursivelyOptimizeBlocks(tokens, context) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token[0] == Token.NESTED_BLOCK) {\n var isKeyframes = /@(-moz-|-o-|-webkit-)?keyframes/.test(token[1][0][1]);\n level2Optimize(token[2], context, !isKeyframes);\n }\n }\n}\n\nfunction recursivelyOptimizeProperties(tokens, context) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n switch (token[0]) {\n case Token.RULE:\n optimizeProperties(token[2], true, true, context);\n break;\n case Token.NESTED_BLOCK:\n recursivelyOptimizeProperties(token[2], context);\n }\n }\n}\n\nfunction level2Optimize(tokens, context, withRestructuring) {\n var levelOptions = context.options.level[OptimizationLevel.Two];\n var level2Plugins = context.options.plugins.level2Block;\n var reduced;\n var i;\n\n recursivelyOptimizeBlocks(tokens, context);\n recursivelyOptimizeProperties(tokens, context);\n\n if (levelOptions.removeDuplicateRules) {\n removeDuplicates(tokens, context);\n }\n\n if (levelOptions.mergeAdjacentRules) {\n mergeAdjacent(tokens, context);\n }\n\n if (levelOptions.reduceNonAdjacentRules) {\n reduceNonAdjacent(tokens, context);\n }\n\n if (levelOptions.mergeNonAdjacentRules && levelOptions.mergeNonAdjacentRules != 'body') {\n mergeNonAdjacentBySelector(tokens, context);\n }\n\n if (levelOptions.mergeNonAdjacentRules && levelOptions.mergeNonAdjacentRules != 'selector') {\n mergeNonAdjacentByBody(tokens, context);\n }\n\n if (levelOptions.restructureRules && levelOptions.mergeAdjacentRules && withRestructuring) {\n restructure(tokens, context);\n mergeAdjacent(tokens, context);\n }\n\n if (levelOptions.restructureRules && !levelOptions.mergeAdjacentRules && withRestructuring) {\n restructure(tokens, context);\n }\n\n if (levelOptions.removeDuplicateFontRules) {\n removeDuplicateFontAtRules(tokens, context);\n }\n\n if (levelOptions.removeDuplicateMediaBlocks) {\n removeDuplicateMediaQueries(tokens, context);\n }\n\n if (levelOptions.removeUnusedAtRules) {\n removeUnusedAtRules(tokens, context);\n }\n\n if (levelOptions.mergeMedia) {\n reduced = mergeMediaQueries(tokens, context);\n for (i = reduced.length - 1; i >= 0; i--) {\n level2Optimize(reduced[i][2], context, false);\n }\n }\n\n for (i = 0; i < level2Plugins.length; i++) {\n level2Plugins[i](tokens);\n }\n\n if (levelOptions.removeEmpty) {\n removeEmpty(tokens);\n }\n\n return tokens;\n}\n\nmodule.exports = level2Optimize;\n","var functionNoVendorRegexStr = '[A-Z]+(\\\\-|[A-Z]|[0-9])+\\\\(.*?\\\\)';\nvar functionVendorRegexStr = '\\\\-(\\\\-|[A-Z]|[0-9])+\\\\(.*?\\\\)';\nvar variableRegexStr = 'var\\\\(\\\\-\\\\-[^\\\\)]+\\\\)';\nvar functionAnyRegexStr = '(' + variableRegexStr + '|' + functionNoVendorRegexStr + '|' + functionVendorRegexStr + ')';\n\nvar calcRegex = new RegExp('^(\\\\-moz\\\\-|\\\\-webkit\\\\-)?calc\\\\([^\\\\)]+\\\\)$', 'i');\nvar decimalRegex = /[0-9]/;\nvar functionAnyRegex = new RegExp('^' + functionAnyRegexStr + '$', 'i');\nvar hexAlphaColorRegex = /^#(?:[0-9a-f]{4}|[0-9a-f]{8})$/i;\nvar hslColorRegex = /^hsl\\(\\s{0,31}[\\-\\.]?\\d+\\s{0,31},\\s{0,31}\\d*\\.?\\d+%\\s{0,31},\\s{0,31}\\d*\\.?\\d+%\\s{0,31}\\)|hsla\\(\\s{0,31}[\\-\\.]?\\d+\\s{0,31},\\s{0,31}\\d*\\.?\\d+%\\s{0,31},\\s{0,31}\\d*\\.?\\d+%\\s{0,31},\\s{0,31}\\.?\\d+\\s{0,31}\\)$/;\nvar identifierRegex = /^(\\-[a-z0-9_][a-z0-9\\-_]*|[a-z_][a-z0-9\\-_]*)$/i;\nvar namedEntityRegex = /^[a-z]+$/i;\nvar prefixRegex = /^-([a-z0-9]|-)*$/i;\nvar quotedTextRegex = /^(\"[^\"]*\"|'[^']*')$/i;\nvar rgbColorRegex = /^rgb\\(\\s{0,31}[\\d]{1,3}\\s{0,31},\\s{0,31}[\\d]{1,3}\\s{0,31},\\s{0,31}[\\d]{1,3}\\s{0,31}\\)|rgba\\(\\s{0,31}[\\d]{1,3}\\s{0,31},\\s{0,31}[\\d]{1,3}\\s{0,31},\\s{0,31}[\\d]{1,3}\\s{0,31},\\s{0,31}[\\.\\d]+\\s{0,31}\\)$/i;\nvar timeUnitPattern = /\\d+(s|ms)/;\nvar timingFunctionRegex = /^(cubic\\-bezier|steps)\\([^\\)]+\\)$/;\nvar validTimeUnits = ['ms', 's'];\nvar urlRegex = /^url\\([\\s\\S]+\\)$/i;\nvar variableRegex = new RegExp('^' + variableRegexStr + '$', 'i');\n\nvar eightValueColorRegex = /^#[0-9a-f]{8}$/i;\nvar fourValueColorRegex = /^#[0-9a-f]{4}$/i;\nvar sixValueColorRegex = /^#[0-9a-f]{6}$/i;\nvar threeValueColorRegex = /^#[0-9a-f]{3}$/i;\n\nvar DECIMAL_DOT = '.';\nvar MINUS_SIGN = '-';\nvar PLUS_SIGN = '+';\n\nvar Keywords = {\n '^': [\n 'inherit',\n 'initial',\n 'unset'\n ],\n '*-style': [\n 'auto',\n 'dashed',\n 'dotted',\n 'double',\n 'groove',\n 'hidden',\n 'inset',\n 'none',\n 'outset',\n 'ridge',\n 'solid'\n ],\n '*-timing-function': [\n 'ease',\n 'ease-in',\n 'ease-in-out',\n 'ease-out',\n 'linear',\n 'step-end',\n 'step-start'\n ],\n 'animation-direction': [\n 'alternate',\n 'alternate-reverse',\n 'normal',\n 'reverse'\n ],\n 'animation-fill-mode': [\n 'backwards',\n 'both',\n 'forwards',\n 'none'\n ],\n 'animation-iteration-count': [\n 'infinite'\n ],\n 'animation-name': [\n 'none'\n ],\n 'animation-play-state': [\n 'paused',\n 'running'\n ],\n 'background-attachment': [\n 'fixed',\n 'inherit',\n 'local',\n 'scroll'\n ],\n 'background-clip': [\n 'border-box',\n 'content-box',\n 'inherit',\n 'padding-box',\n 'text'\n ],\n 'background-origin': [\n 'border-box',\n 'content-box',\n 'inherit',\n 'padding-box'\n ],\n 'background-position': [\n 'bottom',\n 'center',\n 'left',\n 'right',\n 'top'\n ],\n 'background-repeat': [\n 'no-repeat',\n 'inherit',\n 'repeat',\n 'repeat-x',\n 'repeat-y',\n 'round',\n 'space'\n ],\n 'background-size': [\n 'auto',\n 'cover',\n 'contain'\n ],\n 'border-collapse': [\n 'collapse',\n 'inherit',\n 'separate'\n ],\n 'bottom': [\n 'auto'\n ],\n 'clear': [\n 'both',\n 'left',\n 'none',\n 'right'\n ],\n 'color': [\n 'transparent'\n ],\n 'cursor': [\n 'all-scroll',\n 'auto',\n 'col-resize',\n 'crosshair',\n 'default',\n 'e-resize',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'no-drop',\n 'not-allowed',\n 'nw-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait'\n ],\n 'display': [\n 'block',\n 'inline',\n 'inline-block',\n 'inline-table',\n 'list-item',\n 'none',\n 'table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row',\n 'table-row-group'\n ],\n 'float': [\n 'left',\n 'none',\n 'right'\n ],\n 'left': [\n 'auto'\n ],\n 'font': [\n 'caption',\n 'icon',\n 'menu',\n 'message-box',\n 'small-caption',\n 'status-bar',\n 'unset'\n ],\n 'font-size': [\n 'large',\n 'larger',\n 'medium',\n 'small',\n 'smaller',\n 'x-large',\n 'x-small',\n 'xx-large',\n 'xx-small'\n ],\n 'font-stretch': [\n 'condensed',\n 'expanded',\n 'extra-condensed',\n 'extra-expanded',\n 'normal',\n 'semi-condensed',\n 'semi-expanded',\n 'ultra-condensed',\n 'ultra-expanded'\n ],\n 'font-style': [\n 'italic',\n 'normal',\n 'oblique'\n ],\n 'font-variant': [\n 'normal',\n 'small-caps'\n ],\n 'font-weight': [\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n 'bold',\n 'bolder',\n 'lighter',\n 'normal'\n ],\n 'line-height': [\n 'normal'\n ],\n 'list-style-position': [\n 'inside',\n 'outside'\n ],\n 'list-style-type': [\n 'armenian',\n 'circle',\n 'decimal',\n 'decimal-leading-zero',\n 'disc',\n 'decimal|disc', // this is the default value of list-style-type, see comment in configuration.js\n 'georgian',\n 'lower-alpha',\n 'lower-greek',\n 'lower-latin',\n 'lower-roman',\n 'none',\n 'square',\n 'upper-alpha',\n 'upper-latin',\n 'upper-roman'\n ],\n 'overflow': [\n 'auto',\n 'hidden',\n 'scroll',\n 'visible'\n ],\n 'position': [\n 'absolute',\n 'fixed',\n 'relative',\n 'static'\n ],\n 'right': [\n 'auto'\n ],\n 'text-align': [\n 'center',\n 'justify',\n 'left',\n 'left|right', // this is the default value of list-style-type, see comment in configuration.js\n 'right'\n ],\n 'text-decoration': [\n 'line-through',\n 'none',\n 'overline',\n 'underline'\n ],\n 'text-overflow': [\n 'clip',\n 'ellipsis'\n ],\n 'top': [\n 'auto'\n ],\n 'vertical-align': [\n 'baseline',\n 'bottom',\n 'middle',\n 'sub',\n 'super',\n 'text-bottom',\n 'text-top',\n 'top'\n ],\n 'visibility': [\n 'collapse',\n 'hidden',\n 'visible'\n ],\n 'white-space': [\n 'normal',\n 'nowrap',\n 'pre'\n ],\n 'width': [\n 'inherit',\n 'initial',\n 'medium',\n 'thick',\n 'thin'\n ]\n};\n\nvar Units = [\n '%',\n 'ch',\n 'cm',\n 'em',\n 'ex',\n 'in',\n 'mm',\n 'pc',\n 'pt',\n 'px',\n 'rem',\n 'vh',\n 'vm',\n 'vmax',\n 'vmin',\n 'vw'\n];\n\nfunction isColor(value) {\n return value != 'auto' &&\n (\n isKeyword('color')(value) ||\n isHexColor(value) ||\n isColorFunction(value) ||\n isNamedEntity(value)\n );\n}\n\nfunction isColorFunction(value) {\n return isRgbColor(value) || isHslColor(value);\n}\n\nfunction isDynamicUnit(value) {\n return calcRegex.test(value);\n}\n\nfunction isFunction(value) {\n return functionAnyRegex.test(value);\n}\n\nfunction isHexColor(value) {\n return threeValueColorRegex.test(value) || fourValueColorRegex.test(value) || sixValueColorRegex.test(value) || eightValueColorRegex.test(value);\n}\n\nfunction isHslColor(value) {\n return hslColorRegex.test(value);\n}\n\nfunction isHexAlphaColor(value) {\n return hexAlphaColorRegex.test(value);\n}\n\nfunction isIdentifier(value) {\n return identifierRegex.test(value);\n}\n\nfunction isQuotedText(value) {\n return quotedTextRegex.test(value);\n}\n\nfunction isImage(value) {\n return value == 'none' || value == 'inherit' || isUrl(value);\n}\n\nfunction isKeyword(propertyName) {\n return function(value) {\n return Keywords[propertyName].indexOf(value) > -1;\n };\n}\n\nfunction isNamedEntity(value) {\n return namedEntityRegex.test(value);\n}\n\nfunction isNumber(value) {\n return scanForNumber(value) == value.length;\n}\n\nfunction isRgbColor(value) {\n return rgbColorRegex.test(value);\n}\n\nfunction isPrefixed(value) {\n return prefixRegex.test(value);\n}\n\nfunction isPositiveNumber(value) {\n return isNumber(value) &&\n parseFloat(value) >= 0;\n}\n\nfunction isVariable(value) {\n return variableRegex.test(value);\n}\n\nfunction isTime(value) {\n var numberUpTo = scanForNumber(value);\n\n return numberUpTo == value.length && parseInt(value) === 0 ||\n numberUpTo > -1 && validTimeUnits.indexOf(value.slice(numberUpTo + 1)) > -1 ||\n isCalculatedTime(value);\n}\n\nfunction isCalculatedTime(value) {\n return isFunction(value) && timeUnitPattern.test(value);\n}\n\nfunction isTimingFunction() {\n var isTimingFunctionKeyword = isKeyword('*-timing-function');\n\n return function (value) {\n return isTimingFunctionKeyword(value) || timingFunctionRegex.test(value);\n };\n}\n\nfunction isUnit(validUnits, value) {\n var numberUpTo = scanForNumber(value);\n\n return numberUpTo == value.length && parseInt(value) === 0 ||\n numberUpTo > -1 && validUnits.indexOf(value.slice(numberUpTo + 1).toLowerCase()) > -1 ||\n value == 'auto' ||\n value == 'inherit';\n}\n\nfunction isUrl(value) {\n return urlRegex.test(value);\n}\n\nfunction isZIndex(value) {\n return value == 'auto' ||\n isNumber(value) ||\n isKeyword('^')(value);\n}\n\nfunction scanForNumber(value) {\n var hasDot = false;\n var hasSign = false;\n var character;\n var i, l;\n\n for (i = 0, l = value.length; i < l; i++) {\n character = value[i];\n\n if (i === 0 && (character == PLUS_SIGN || character == MINUS_SIGN)) {\n hasSign = true;\n } else if (i > 0 && hasSign && (character == PLUS_SIGN || character == MINUS_SIGN)) {\n return i - 1;\n } else if (character == DECIMAL_DOT && !hasDot) {\n hasDot = true;\n } else if (character == DECIMAL_DOT && hasDot) {\n return i - 1;\n } else if (decimalRegex.test(character)) {\n continue;\n } else {\n return i - 1;\n }\n }\n\n return i;\n}\n\nfunction validator(compatibility) {\n var validUnits = Units.slice(0).filter(function (value) {\n return !(value in compatibility.units) || compatibility.units[value] === true;\n });\n\n if (compatibility.customUnits.rpx) {\n validUnits.push('rpx');\n }\n\n return {\n colorOpacity: compatibility.colors.opacity,\n colorHexAlpha: compatibility.colors.hexAlpha,\n isAnimationDirectionKeyword: isKeyword('animation-direction'),\n isAnimationFillModeKeyword: isKeyword('animation-fill-mode'),\n isAnimationIterationCountKeyword: isKeyword('animation-iteration-count'),\n isAnimationNameKeyword: isKeyword('animation-name'),\n isAnimationPlayStateKeyword: isKeyword('animation-play-state'),\n isTimingFunction: isTimingFunction(),\n isBackgroundAttachmentKeyword: isKeyword('background-attachment'),\n isBackgroundClipKeyword: isKeyword('background-clip'),\n isBackgroundOriginKeyword: isKeyword('background-origin'),\n isBackgroundPositionKeyword: isKeyword('background-position'),\n isBackgroundRepeatKeyword: isKeyword('background-repeat'),\n isBackgroundSizeKeyword: isKeyword('background-size'),\n isColor: isColor,\n isColorFunction: isColorFunction,\n isDynamicUnit: isDynamicUnit,\n isFontKeyword: isKeyword('font'),\n isFontSizeKeyword: isKeyword('font-size'),\n isFontStretchKeyword: isKeyword('font-stretch'),\n isFontStyleKeyword: isKeyword('font-style'),\n isFontVariantKeyword: isKeyword('font-variant'),\n isFontWeightKeyword: isKeyword('font-weight'),\n isFunction: isFunction,\n isGlobal: isKeyword('^'),\n isHexAlphaColor: isHexAlphaColor,\n isHslColor: isHslColor,\n isIdentifier: isIdentifier,\n isImage: isImage,\n isKeyword: isKeyword,\n isLineHeightKeyword: isKeyword('line-height'),\n isListStylePositionKeyword: isKeyword('list-style-position'),\n isListStyleTypeKeyword: isKeyword('list-style-type'),\n isNumber: isNumber,\n isPrefixed: isPrefixed,\n isPositiveNumber: isPositiveNumber,\n isQuotedText: isQuotedText,\n isRgbColor: isRgbColor,\n isStyleKeyword: isKeyword('*-style'),\n isTime: isTime,\n isUnit: isUnit.bind(null, validUnits),\n isUrl: isUrl,\n isVariable: isVariable,\n isWidth: isKeyword('width'),\n isZIndex: isZIndex\n };\n}\n\nmodule.exports = validator;\n","var DEFAULTS = {\n '*': {\n colors: {\n hexAlpha: false, // 4- and 8-character hex notation\n opacity: true // rgba / hsla\n },\n customUnits: {\n rpx: false\n },\n properties: {\n backgroundClipMerging: true, // background-clip to shorthand\n backgroundOriginMerging: true, // background-origin to shorthand\n backgroundSizeMerging: true, // background-size to shorthand\n colors: true, // any kind of color transformations, like `#ff00ff` to `#f0f` or `#fff` into `red`\n ieBangHack: false, // !ie suffix hacks on IE<8\n ieFilters: false, // whether to preserve `filter` and `-ms-filter` properties\n iePrefixHack: false, // underscore / asterisk prefix hacks on IE\n ieSuffixHack: false, // \\9 suffix hacks on IE6-9, \\0 suffix hack on IE6-11\n merging: true, // merging properties into one\n shorterLengthUnits: false, // optimize pixel units into `pt`, `pc` or `in` units\n spaceAfterClosingBrace: true, // 'url() no-repeat' to 'url()no-repeat'\n urlQuotes: true, // whether to wrap content of `url()` into quotes or not\n zeroUnits: true // 0[unit] -> 0\n },\n selectors: {\n adjacentSpace: false, // div+ nav Android stock browser hack\n ie7Hack: false, // *+html hack\n mergeablePseudoClasses: [\n ':active',\n ':after',\n ':before',\n ':empty',\n ':checked',\n ':disabled',\n ':empty',\n ':enabled',\n ':first-child',\n ':first-letter',\n ':first-line',\n ':first-of-type',\n ':focus',\n ':hover',\n ':lang',\n ':last-child',\n ':last-of-type',\n ':link',\n ':not',\n ':nth-child',\n ':nth-last-child',\n ':nth-last-of-type',\n ':nth-of-type',\n ':only-child',\n ':only-of-type',\n ':root',\n ':target',\n ':visited'\n ], // selectors with these pseudo-classes can be merged as these are universally supported\n mergeablePseudoElements: [\n '::after',\n '::before',\n '::first-letter',\n '::first-line'\n ], // selectors with these pseudo-elements can be merged as these are universally supported\n mergeLimit: 8191, // number of rules that can be safely merged together\n multiplePseudoMerging: true\n },\n units: {\n ch: true,\n in: true,\n pc: true,\n pt: true,\n rem: true,\n vh: true,\n vm: true, // vm is vmin on IE9+ see https://developer.mozilla.org/en-US/docs/Web/CSS/length\n vmax: true,\n vmin: true,\n vw: true\n }\n }\n};\n\nDEFAULTS.ie11 = merge(DEFAULTS['*'], {\n properties: {\n ieSuffixHack: true\n }\n});\n\nDEFAULTS.ie10 = merge(DEFAULTS['*'], {\n properties: {\n ieSuffixHack: true\n }\n});\n\nDEFAULTS.ie9 = merge(DEFAULTS['*'], {\n properties: {\n ieFilters: true,\n ieSuffixHack: true\n }\n});\n\nDEFAULTS.ie8 = merge(DEFAULTS.ie9, {\n colors: {\n opacity: false\n },\n properties: {\n backgroundClipMerging: false,\n backgroundOriginMerging: false,\n backgroundSizeMerging: false,\n iePrefixHack: true,\n merging: false\n },\n selectors: {\n mergeablePseudoClasses: [\n ':after',\n ':before',\n ':first-child',\n ':first-letter',\n ':focus',\n ':hover',\n ':visited'\n ],\n mergeablePseudoElements: []\n },\n units: {\n ch: false,\n rem: false,\n vh: false,\n vm: false,\n vmax: false,\n vmin: false,\n vw: false\n }\n});\n\nDEFAULTS.ie7 = merge(DEFAULTS.ie8, {\n properties: {\n ieBangHack: true\n },\n selectors: {\n ie7Hack: true,\n mergeablePseudoClasses: [\n ':first-child',\n ':first-letter',\n ':hover',\n ':visited'\n ]\n },\n});\n\nfunction compatibilityFrom(source) {\n return merge(DEFAULTS['*'], calculateSource(source));\n}\n\nfunction merge(source, target) {\n for (var key in source) {\n var value = source[key];\n\n if (typeof value === 'object' && !Array.isArray(value)) {\n target[key] = merge(value, target[key] || {});\n } else {\n target[key] = key in target ? target[key] : value;\n }\n }\n\n return target;\n}\n\nfunction calculateSource(source) {\n if (typeof source == 'object')\n return source;\n\n if (!/[,\\+\\-]/.test(source))\n return DEFAULTS[source] || DEFAULTS['*'];\n\n var parts = source.split(',');\n var template = parts[0] in DEFAULTS ?\n DEFAULTS[parts.shift()] :\n DEFAULTS['*'];\n\n source = {};\n\n parts.forEach(function (part) {\n var isAdd = part[0] == '+';\n var key = part.substring(1).split('.');\n var group = key[0];\n var option = key[1];\n\n source[group] = source[group] || {};\n source[group][option] = isAdd;\n });\n\n return merge(template, source);\n}\n\nmodule.exports = compatibilityFrom;\n","var HTTP_RESOURCE_PATTERN = /^http:\\/\\//;\n\nfunction isHttpResource(uri) {\n return HTTP_RESOURCE_PATTERN.test(uri);\n}\n\nmodule.exports = isHttpResource;\n","var HTTPS_RESOURCE_PATTERN = /^https:\\/\\//;\n\nfunction isHttpsResource(uri) {\n return HTTPS_RESOURCE_PATTERN.test(uri);\n}\n\nmodule.exports = isHttpsResource;\n","var http = require('http');\nvar https = require('https');\nvar url = require('url');\n\nvar isHttpResource = require('../utils/is-http-resource');\nvar isHttpsResource = require('../utils/is-https-resource');\nvar override = require('../utils/override');\n\nvar HTTP_PROTOCOL = 'http:';\n\nfunction loadRemoteResource(uri, inlineRequest, inlineTimeout, callback) {\n var proxyProtocol = inlineRequest.protocol || inlineRequest.hostname;\n var errorHandled = false;\n var requestOptions;\n var fetch;\n\n requestOptions = override(\n url.parse(uri),\n inlineRequest || {}\n );\n\n if (inlineRequest.hostname !== undefined) {\n // overwrite as we always expect a http proxy currently\n requestOptions.protocol = inlineRequest.protocol || HTTP_PROTOCOL;\n requestOptions.path = requestOptions.href;\n }\n\n fetch = (proxyProtocol && !isHttpsResource(proxyProtocol)) || isHttpResource(uri) ?\n http.get :\n https.get;\n\n fetch(requestOptions, function (res) {\n var chunks = [];\n var movedUri;\n\n if (errorHandled) {\n return;\n }\n\n if (res.statusCode < 200 || res.statusCode > 399) {\n return callback(res.statusCode, null);\n } else if (res.statusCode > 299) {\n movedUri = url.resolve(uri, res.headers.location);\n return loadRemoteResource(movedUri, inlineRequest, inlineTimeout, callback);\n }\n\n res.on('data', function (chunk) {\n chunks.push(chunk.toString());\n });\n res.on('end', function () {\n var body = chunks.join('');\n callback(null, body);\n });\n })\n .on('error', function (res) {\n if (errorHandled) {\n return;\n }\n\n errorHandled = true;\n callback(res.message, null);\n })\n .on('timeout', function () {\n if (errorHandled) {\n return;\n }\n\n errorHandled = true;\n callback('timeout', null);\n })\n .setTimeout(inlineTimeout);\n}\n\nmodule.exports = loadRemoteResource;\n","var loadRemoteResource = require('../reader/load-remote-resource');\n\nfunction fetchFrom(callback) {\n return callback || loadRemoteResource;\n}\n\nmodule.exports = fetchFrom;\n","function inlineOptionsFrom(rules) {\n if (Array.isArray(rules)) {\n return rules;\n }\n\n if (rules === false) {\n return ['none'];\n }\n\n return undefined === rules ?\n ['local'] :\n rules.split(',');\n}\n\nmodule.exports = inlineOptionsFrom;\n","var url = require('url');\n\nvar override = require('../utils/override');\n\nfunction inlineRequestFrom(option) {\n return override(\n /* jshint camelcase: false */\n proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy),\n option || {}\n );\n}\n\nfunction proxyOptionsFrom(httpProxy) {\n return httpProxy ?\n {\n hostname: url.parse(httpProxy).hostname,\n port: parseInt(url.parse(httpProxy).port)\n } :\n {};\n}\n\nmodule.exports = inlineRequestFrom;\n","var DEFAULT_TIMEOUT = 5000;\n\nfunction inlineTimeoutFrom(option) {\n return option || DEFAULT_TIMEOUT;\n}\n\nmodule.exports = inlineTimeoutFrom;\n","function pluginsFrom(plugins) {\n var flatPlugins = {\n level1Value: [],\n level1Property: [],\n level2Block: []\n };\n\n plugins = plugins || [];\n\n flatPlugins.level1Value = plugins\n .map(function (plugin) { return plugin.level1 && plugin.level1.value; })\n .filter(function (plugin) { return plugin != null; });\n\n flatPlugins.level1Property = plugins\n .map(function (plugin) { return plugin.level1 && plugin.level1.property; })\n .filter(function (plugin) { return plugin != null; });\n\n flatPlugins.level2Block = plugins\n .map(function (plugin) { return plugin.level2 && plugin.level2.block; })\n .filter(function (plugin) { return plugin != null; });\n\n return flatPlugins;\n}\n\nmodule.exports = pluginsFrom;\n","function rebaseFrom(rebaseOption, rebaseToOption) {\n if (undefined !== rebaseToOption) {\n return true;\n } else if (undefined === rebaseOption) {\n return false;\n } else {\n return !!rebaseOption;\n }\n}\n\nmodule.exports = rebaseFrom;\n","var path = require('path');\n\nfunction rebaseToFrom(option) {\n return option ? path.resolve(option) : process.cwd();\n}\n\nmodule.exports = rebaseToFrom;\n","var SourceMapConsumer = require('source-map').SourceMapConsumer;\n\nfunction inputSourceMapTracker() {\n var maps = {};\n\n return {\n all: all.bind(null, maps),\n isTracking: isTracking.bind(null, maps),\n originalPositionFor: originalPositionFor.bind(null, maps),\n track: track.bind(null, maps)\n };\n}\n\nfunction all(maps) {\n return maps;\n}\n\nfunction isTracking(maps, source) {\n return source in maps;\n}\n\nfunction originalPositionFor(maps, metadata, range, selectorFallbacks) {\n var line = metadata[0];\n var column = metadata[1];\n var source = metadata[2];\n var position = {\n line: line,\n column: column + range\n };\n var originalPosition;\n\n while (!originalPosition && position.column > column) {\n position.column--;\n originalPosition = maps[source].originalPositionFor(position);\n }\n\n if (!originalPosition || originalPosition.column < 0) {\n return metadata;\n }\n\n if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) {\n return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1);\n }\n\n return originalPosition.line !== null ?\n toMetadata(originalPosition) :\n metadata;\n}\n\nfunction toMetadata(asHash) {\n return [asHash.line, asHash.column, asHash.source];\n}\n\nfunction track(maps, source, data) {\n maps[source] = new SourceMapConsumer(data);\n}\n\nmodule.exports = inputSourceMapTracker;\n","var REMOTE_RESOURCE_PATTERN = /^(\\w+:\\/\\/|\\/\\/)/;\n\nfunction isRemoteResource(uri) {\n return REMOTE_RESOURCE_PATTERN.test(uri);\n}\n\nmodule.exports = isRemoteResource;\n","var NO_PROTOCOL_RESOURCE_PATTERN = /^\\/\\//;\n\nfunction hasProtocol(uri) {\n return !NO_PROTOCOL_RESOURCE_PATTERN.test(uri);\n}\n\nmodule.exports = hasProtocol;\n","var path = require('path');\nvar url = require('url');\n\nvar isRemoteResource = require('../utils/is-remote-resource');\nvar hasProtocol = require('../utils/has-protocol');\n\nvar HTTP_PROTOCOL = 'http:';\n\nfunction isAllowedResource(uri, isRemote, rules) {\n var match;\n var absoluteUri;\n var allowed = isRemote ? false : true;\n var rule;\n var isNegated;\n var normalizedRule;\n var i;\n\n if (rules.length === 0) {\n return false;\n }\n\n if (isRemote && !hasProtocol(uri)) {\n uri = HTTP_PROTOCOL + uri;\n }\n\n match = isRemote ?\n url.parse(uri).host :\n uri;\n\n absoluteUri = isRemote ?\n uri :\n path.resolve(uri);\n\n for (i = 0; i < rules.length; i++) {\n rule = rules[i];\n isNegated = rule[0] == '!';\n normalizedRule = rule.substring(1);\n\n if (isNegated && isRemote && isRemoteRule(normalizedRule)) {\n allowed = allowed && !isAllowedResource(uri, true, [normalizedRule]);\n } else if (isNegated && !isRemote && !isRemoteRule(normalizedRule)) {\n allowed = allowed && !isAllowedResource(uri, false, [normalizedRule]);\n } else if (isNegated) {\n allowed = allowed && true;\n } else if (rule == 'all') {\n allowed = true;\n } else if (isRemote && rule == 'local') {\n allowed = allowed || false;\n } else if (isRemote && rule == 'remote') {\n allowed = true;\n } else if (!isRemote && rule == 'remote') {\n allowed = false;\n } else if (!isRemote && rule == 'local') {\n allowed = true;\n } else if (rule === match) {\n allowed = true;\n } else if (rule === uri) {\n allowed = true;\n } else if (isRemote && absoluteUri.indexOf(rule) === 0) {\n allowed = true;\n } else if (!isRemote && absoluteUri.indexOf(path.resolve(rule)) === 0) {\n allowed = true;\n } else if (isRemote != isRemoteRule(normalizedRule)) {\n allowed = allowed && true;\n } else {\n allowed = false;\n }\n }\n\n return allowed;\n}\n\nfunction isRemoteRule(rule) {\n return isRemoteResource(rule) || url.parse(HTTP_PROTOCOL + '//' + rule).host == rule;\n}\n\nmodule.exports = isAllowedResource;\n","var DATA_URI_PATTERN = /^data:(\\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;\n\nfunction matchDataUri(uri) {\n return DATA_URI_PATTERN.exec(uri);\n}\n\nmodule.exports = matchDataUri;\n","var path = require('path');\n\nfunction rebaseLocalMap(sourceMap, sourceUri, rebaseTo) {\n var currentPath = path.resolve('');\n var absoluteUri = path.resolve(currentPath, sourceUri);\n var absoluteUriDirectory = path.dirname(absoluteUri);\n\n sourceMap.sources = sourceMap.sources.map(function(source) {\n return path.relative(rebaseTo, path.resolve(absoluteUriDirectory, source));\n });\n\n return sourceMap;\n}\n\nmodule.exports = rebaseLocalMap;\n","var path = require('path');\nvar url = require('url');\n\nfunction rebaseRemoteMap(sourceMap, sourceUri) {\n var sourceDirectory = path.dirname(sourceUri);\n\n sourceMap.sources = sourceMap.sources.map(function(source) {\n return url.resolve(sourceDirectory, source);\n });\n\n return sourceMap;\n}\n\nmodule.exports = rebaseRemoteMap;\n","var DATA_URI_PATTERN = /^data:(\\S*?)?(;charset=[^;]+)?(;[^,]+?)?,(.+)/;\n\nfunction isDataUriResource(uri) {\n return DATA_URI_PATTERN.test(uri);\n}\n\nmodule.exports = isDataUriResource;\n","var fs = require('fs');\nvar path = require('path');\n\nvar isAllowedResource = require('./is-allowed-resource');\nvar matchDataUri = require('./match-data-uri');\nvar rebaseLocalMap = require('./rebase-local-map');\nvar rebaseRemoteMap = require('./rebase-remote-map');\n\nvar Token = require('../tokenizer/token');\nvar hasProtocol = require('../utils/has-protocol');\nvar isDataUriResource = require('../utils/is-data-uri-resource');\nvar isRemoteResource = require('../utils/is-remote-resource');\n\nvar MAP_MARKER_PATTERN = /^\\/\\*# sourceMappingURL=(\\S+) \\*\\/$/;\n\nfunction applySourceMaps(tokens, context, callback) {\n var applyContext = {\n callback: callback,\n fetch: context.options.fetch,\n index: 0,\n inline: context.options.inline,\n inlineRequest: context.options.inlineRequest,\n inlineTimeout: context.options.inlineTimeout,\n inputSourceMapTracker: context.inputSourceMapTracker,\n localOnly: context.localOnly,\n processedTokens: [],\n rebaseTo: context.options.rebaseTo,\n sourceTokens: tokens,\n warnings: context.warnings\n };\n\n return context.options.sourceMap && tokens.length > 0 ?\n doApplySourceMaps(applyContext) :\n callback(tokens);\n}\n\nfunction doApplySourceMaps(applyContext) {\n var singleSourceTokens = [];\n var lastSource = findTokenSource(applyContext.sourceTokens[0]);\n var source;\n var token;\n var l;\n\n for (l = applyContext.sourceTokens.length; applyContext.index < l; applyContext.index++) {\n token = applyContext.sourceTokens[applyContext.index];\n source = findTokenSource(token);\n\n if (source != lastSource) {\n singleSourceTokens = [];\n lastSource = source;\n }\n\n singleSourceTokens.push(token);\n applyContext.processedTokens.push(token);\n\n if (token[0] == Token.COMMENT && MAP_MARKER_PATTERN.test(token[1])) {\n return fetchAndApplySourceMap(token[1], source, singleSourceTokens, applyContext);\n }\n }\n\n return applyContext.callback(applyContext.processedTokens);\n}\n\nfunction findTokenSource(token) {\n var scope;\n var metadata;\n\n if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT || token[0] == Token.RAW) {\n metadata = token[2][0];\n } else {\n scope = token[1][0];\n metadata = scope[2][0];\n }\n\n return metadata[2];\n}\n\nfunction fetchAndApplySourceMap(sourceMapComment, source, singleSourceTokens, applyContext) {\n return extractInputSourceMapFrom(sourceMapComment, applyContext, function (inputSourceMap) {\n if (inputSourceMap) {\n applyContext.inputSourceMapTracker.track(source, inputSourceMap);\n applySourceMapRecursively(singleSourceTokens, applyContext.inputSourceMapTracker);\n }\n\n applyContext.index++;\n return doApplySourceMaps(applyContext);\n });\n}\n\nfunction extractInputSourceMapFrom(sourceMapComment, applyContext, whenSourceMapReady) {\n var uri = MAP_MARKER_PATTERN.exec(sourceMapComment)[1];\n var absoluteUri;\n var sourceMap;\n var rebasedMap;\n\n if (isDataUriResource(uri)) {\n sourceMap = extractInputSourceMapFromDataUri(uri);\n return whenSourceMapReady(sourceMap);\n } else if (isRemoteResource(uri)) {\n return loadInputSourceMapFromRemoteUri(uri, applyContext, function (sourceMap) {\n var parsedMap;\n\n if (sourceMap) {\n parsedMap = JSON.parse(sourceMap);\n rebasedMap = rebaseRemoteMap(parsedMap, uri);\n whenSourceMapReady(rebasedMap);\n } else {\n whenSourceMapReady(null);\n }\n });\n } else {\n // at this point `uri` is already rebased, see lib/reader/rebase.js#rebaseSourceMapComment\n // it is rebased to be consistent with rebasing other URIs\n // however here we need to resolve it back to read it from disk\n absoluteUri = path.resolve(applyContext.rebaseTo, uri);\n sourceMap = loadInputSourceMapFromLocalUri(absoluteUri, applyContext);\n\n if (sourceMap) {\n rebasedMap = rebaseLocalMap(sourceMap, absoluteUri, applyContext.rebaseTo);\n return whenSourceMapReady(rebasedMap);\n } else {\n return whenSourceMapReady(null);\n }\n }\n}\n\nfunction extractInputSourceMapFromDataUri(uri) {\n var dataUriMatch = matchDataUri(uri);\n var charset = dataUriMatch[2] ? dataUriMatch[2].split(/[=;]/)[2] : 'us-ascii';\n var encoding = dataUriMatch[3] ? dataUriMatch[3].split(';')[1] : 'utf8';\n var data = encoding == 'utf8' ? global.unescape(dataUriMatch[4]) : dataUriMatch[4];\n\n var buffer = Buffer.from(data, encoding);\n buffer.charset = charset;\n\n return JSON.parse(buffer.toString());\n}\n\nfunction loadInputSourceMapFromRemoteUri(uri, applyContext, whenLoaded) {\n var isAllowed = isAllowedResource(uri, true, applyContext.inline);\n var isRuntimeResource = !hasProtocol(uri);\n\n if (applyContext.localOnly) {\n applyContext.warnings.push('Cannot fetch remote resource from \"' + uri + '\" as no callback given.');\n return whenLoaded(null);\n } else if (isRuntimeResource) {\n applyContext.warnings.push('Cannot fetch \"' + uri + '\" as no protocol given.');\n return whenLoaded(null);\n } else if (!isAllowed) {\n applyContext.warnings.push('Cannot fetch \"' + uri + '\" as resource is not allowed.');\n return whenLoaded(null);\n }\n\n applyContext.fetch(uri, applyContext.inlineRequest, applyContext.inlineTimeout, function (error, body) {\n if (error) {\n applyContext.warnings.push('Missing source map at \"' + uri + '\" - ' + error);\n return whenLoaded(null);\n }\n\n whenLoaded(body);\n });\n}\n\nfunction loadInputSourceMapFromLocalUri(uri, applyContext) {\n var isAllowed = isAllowedResource(uri, false, applyContext.inline);\n var sourceMap;\n\n if (!fs.existsSync(uri) || !fs.statSync(uri).isFile()) {\n applyContext.warnings.push('Ignoring local source map at \"' + uri + '\" as resource is missing.');\n return null;\n } else if (!isAllowed) {\n applyContext.warnings.push('Cannot fetch \"' + uri + '\" as resource is not allowed.');\n return null;\n }\n\n sourceMap = fs.readFileSync(uri, 'utf-8');\n return JSON.parse(sourceMap);\n}\n\nfunction applySourceMapRecursively(tokens, inputSourceMapTracker) {\n var token;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n\n switch (token[0]) {\n case Token.AT_RULE:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.AT_RULE_BLOCK:\n applySourceMapRecursively(token[1], inputSourceMapTracker);\n applySourceMapRecursively(token[2], inputSourceMapTracker);\n break;\n case Token.AT_RULE_BLOCK_SCOPE:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.NESTED_BLOCK:\n applySourceMapRecursively(token[1], inputSourceMapTracker);\n applySourceMapRecursively(token[2], inputSourceMapTracker);\n break;\n case Token.NESTED_BLOCK_SCOPE:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.COMMENT:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.PROPERTY:\n applySourceMapRecursively(token, inputSourceMapTracker);\n break;\n case Token.PROPERTY_BLOCK:\n applySourceMapRecursively(token[1], inputSourceMapTracker);\n break;\n case Token.PROPERTY_NAME:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.PROPERTY_VALUE:\n applySourceMapTo(token, inputSourceMapTracker);\n break;\n case Token.RULE:\n applySourceMapRecursively(token[1], inputSourceMapTracker);\n applySourceMapRecursively(token[2], inputSourceMapTracker);\n break;\n case Token.RULE_SCOPE:\n applySourceMapTo(token, inputSourceMapTracker);\n }\n }\n\n return tokens;\n}\n\nfunction applySourceMapTo(token, inputSourceMapTracker) {\n var value = token[1];\n var metadata = token[2];\n var newMetadata = [];\n var i, l;\n\n for (i = 0, l = metadata.length; i < l; i++) {\n newMetadata.push(inputSourceMapTracker.originalPositionFor(metadata[i], value.length));\n }\n\n token[2] = newMetadata;\n}\n\nmodule.exports = applySourceMaps;\n","var split = require('../utils/split');\n\nvar BRACE_PREFIX = /^\\(/;\nvar BRACE_SUFFIX = /\\)$/;\nvar IMPORT_PREFIX_PATTERN = /^@import/i;\nvar QUOTE_PREFIX_PATTERN = /['\"]\\s*/;\nvar QUOTE_SUFFIX_PATTERN = /\\s*['\"]/;\nvar URL_PREFIX_PATTERN = /^url\\(\\s*/i;\nvar URL_SUFFIX_PATTERN = /\\s*\\)/i;\n\nfunction extractImportUrlAndMedia(atRuleValue) {\n var uri;\n var mediaQuery;\n var stripped;\n var parts;\n\n stripped = atRuleValue\n .replace(IMPORT_PREFIX_PATTERN, '')\n .trim()\n .replace(URL_PREFIX_PATTERN, '(')\n .replace(URL_SUFFIX_PATTERN, ')')\n .replace(QUOTE_PREFIX_PATTERN, '')\n .replace(QUOTE_SUFFIX_PATTERN, '');\n\n parts = split(stripped, ' ');\n\n uri = parts[0]\n .replace(BRACE_PREFIX, '')\n .replace(BRACE_SUFFIX, '');\n mediaQuery = parts.slice(1).join(' ');\n\n return [uri, mediaQuery];\n}\n\nmodule.exports = extractImportUrlAndMedia;\n","var fs = require('fs');\nvar path = require('path');\n\nvar isAllowedResource = require('./is-allowed-resource');\n\nvar hasProtocol = require('../utils/has-protocol');\nvar isRemoteResource = require('../utils/is-remote-resource');\n\nfunction loadOriginalSources(context, callback) {\n var loadContext = {\n callback: callback,\n fetch: context.options.fetch,\n index: 0,\n inline: context.options.inline,\n inlineRequest: context.options.inlineRequest,\n inlineTimeout: context.options.inlineTimeout,\n localOnly: context.localOnly,\n rebaseTo: context.options.rebaseTo,\n sourcesContent: context.sourcesContent,\n uriToSource: uriToSourceMapping(context.inputSourceMapTracker.all()),\n warnings: context.warnings\n };\n\n return context.options.sourceMap && context.options.sourceMapInlineSources ?\n doLoadOriginalSources(loadContext) :\n callback();\n}\n\nfunction uriToSourceMapping(allSourceMapConsumers) {\n var mapping = {};\n var consumer;\n var uri;\n var source;\n var i, l;\n\n for (source in allSourceMapConsumers) {\n consumer = allSourceMapConsumers[source];\n\n for (i = 0, l = consumer.sources.length; i < l; i++) {\n uri = consumer.sources[i];\n source = consumer.sourceContentFor(uri, true);\n\n mapping[uri] = source;\n }\n }\n\n return mapping;\n}\n\nfunction doLoadOriginalSources(loadContext) {\n var uris = Object.keys(loadContext.uriToSource);\n var uri;\n var source;\n var total;\n\n for (total = uris.length; loadContext.index < total; loadContext.index++) {\n uri = uris[loadContext.index];\n source = loadContext.uriToSource[uri];\n\n if (source) {\n loadContext.sourcesContent[uri] = source;\n } else {\n return loadOriginalSource(uri, loadContext);\n }\n }\n\n return loadContext.callback();\n}\n\nfunction loadOriginalSource(uri, loadContext) {\n var content;\n\n if (isRemoteResource(uri)) {\n return loadOriginalSourceFromRemoteUri(uri, loadContext, function (content) {\n loadContext.index++;\n loadContext.sourcesContent[uri] = content;\n return doLoadOriginalSources(loadContext);\n });\n } else {\n content = loadOriginalSourceFromLocalUri(uri, loadContext);\n loadContext.index++;\n loadContext.sourcesContent[uri] = content;\n return doLoadOriginalSources(loadContext);\n }\n}\n\nfunction loadOriginalSourceFromRemoteUri(uri, loadContext, whenLoaded) {\n var isAllowed = isAllowedResource(uri, true, loadContext.inline);\n var isRuntimeResource = !hasProtocol(uri);\n\n if (loadContext.localOnly) {\n loadContext.warnings.push('Cannot fetch remote resource from \"' + uri + '\" as no callback given.');\n return whenLoaded(null);\n } else if (isRuntimeResource) {\n loadContext.warnings.push('Cannot fetch \"' + uri + '\" as no protocol given.');\n return whenLoaded(null);\n } else if (!isAllowed) {\n loadContext.warnings.push('Cannot fetch \"' + uri + '\" as resource is not allowed.');\n return whenLoaded(null);\n }\n\n loadContext.fetch(uri, loadContext.inlineRequest, loadContext.inlineTimeout, function (error, content) {\n if (error) {\n loadContext.warnings.push('Missing original source at \"' + uri + '\" - ' + error);\n }\n\n whenLoaded(content);\n });\n}\n\nfunction loadOriginalSourceFromLocalUri(relativeUri, loadContext) {\n var isAllowed = isAllowedResource(relativeUri, false, loadContext.inline);\n var absoluteUri = path.resolve(loadContext.rebaseTo, relativeUri);\n\n if (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile()) {\n loadContext.warnings.push('Ignoring local source map at \"' + absoluteUri + '\" as resource is missing.');\n return null;\n } else if (!isAllowed) {\n loadContext.warnings.push('Cannot fetch \"' + absoluteUri + '\" as resource is not allowed.');\n return null;\n }\n\n return fs.readFileSync(absoluteUri, 'utf8');\n}\n\nmodule.exports = loadOriginalSources;\n","var UNIX_SEPARATOR = '/';\nvar WINDOWS_SEPARATOR_PATTERN = /\\\\/g;\n\nfunction normalizePath(path) {\n return path.replace(WINDOWS_SEPARATOR_PATTERN, UNIX_SEPARATOR);\n}\n\nmodule.exports = normalizePath;\n","function restoreImport(uri, mediaQuery) {\n return ('@import ' + uri + ' ' + mediaQuery).trim();\n}\n\nmodule.exports = restoreImport;\n","var path = require('path');\nvar url = require('url');\n\nvar isDataUriResource = require('../utils/is-data-uri-resource');\n\nvar DOUBLE_QUOTE = '\"';\nvar SINGLE_QUOTE = '\\'';\nvar URL_PREFIX = 'url(';\nvar URL_SUFFIX = ')';\n\nvar PROTOCOL_LESS_PREFIX_PATTERN = /^[^\\w\\d]*\\/\\//;\nvar QUOTE_PREFIX_PATTERN = /^[\"']/;\nvar QUOTE_SUFFIX_PATTERN = /[\"']$/;\nvar ROUND_BRACKETS_PATTERN = /[\\(\\)]/;\nvar URL_PREFIX_PATTERN = /^url\\(/i;\nvar URL_SUFFIX_PATTERN = /\\)$/;\nvar WHITESPACE_PATTERN = /\\s/;\n\nvar isWindows = process.platform == 'win32';\n\nfunction rebase(uri, rebaseConfig) {\n if (!rebaseConfig) {\n return uri;\n }\n\n if (isAbsolute(uri) && !isRemote(rebaseConfig.toBase)) {\n return uri;\n }\n\n if (isRemote(uri) || isSVGMarker(uri) || isInternal(uri) || isDataUriResource(uri)) {\n return uri;\n }\n\n if (isRemote(rebaseConfig.toBase)) {\n return url.resolve(rebaseConfig.toBase, uri);\n }\n\n return rebaseConfig.absolute ?\n normalize(absolute(uri, rebaseConfig)) :\n normalize(relative(uri, rebaseConfig));\n}\n\nfunction isAbsolute(uri) {\n return path.isAbsolute(uri);\n}\n\nfunction isSVGMarker(uri) {\n return uri[0] == '#';\n}\n\nfunction isInternal(uri) {\n return /^\\w+:\\w+/.test(uri);\n}\n\nfunction isRemote(uri) {\n return /^[^:]+?:\\/\\//.test(uri) || PROTOCOL_LESS_PREFIX_PATTERN.test(uri);\n}\n\nfunction absolute(uri, rebaseConfig) {\n return path\n .resolve(path.join(rebaseConfig.fromBase || '', uri))\n .replace(rebaseConfig.toBase, '');\n}\n\nfunction relative(uri, rebaseConfig) {\n return path.relative(rebaseConfig.toBase, path.join(rebaseConfig.fromBase || '', uri));\n}\n\nfunction normalize(uri) {\n return isWindows ? uri.replace(/\\\\/g, '/') : uri;\n}\n\nfunction quoteFor(unquotedUrl) {\n if (unquotedUrl.indexOf(SINGLE_QUOTE) > -1) {\n return DOUBLE_QUOTE;\n } else if (unquotedUrl.indexOf(DOUBLE_QUOTE) > -1) {\n return SINGLE_QUOTE;\n } else if (hasWhitespace(unquotedUrl) || hasRoundBrackets(unquotedUrl)) {\n return SINGLE_QUOTE;\n } else {\n return '';\n }\n}\n\nfunction hasWhitespace(url) {\n return WHITESPACE_PATTERN.test(url);\n}\n\nfunction hasRoundBrackets(url) {\n return ROUND_BRACKETS_PATTERN.test(url);\n}\n\nfunction rewriteUrl(originalUrl, rebaseConfig, pathOnly) {\n var strippedUrl = originalUrl\n .replace(URL_PREFIX_PATTERN, '')\n .replace(URL_SUFFIX_PATTERN, '')\n .trim();\n\n var unquotedUrl = strippedUrl\n .replace(QUOTE_PREFIX_PATTERN, '')\n .replace(QUOTE_SUFFIX_PATTERN, '')\n .trim();\n\n var quote = strippedUrl[0] == SINGLE_QUOTE || strippedUrl[0] == DOUBLE_QUOTE ?\n strippedUrl[0] :\n quoteFor(unquotedUrl);\n\n return pathOnly ?\n rebase(unquotedUrl, rebaseConfig) :\n URL_PREFIX + quote + rebase(unquotedUrl, rebaseConfig) + quote + URL_SUFFIX;\n}\n\nmodule.exports = rewriteUrl;\n","var IMPORT_PREFIX_PATTERN = /^@import/i;\n\nfunction isImport(value) {\n return IMPORT_PREFIX_PATTERN.test(value);\n}\n\nmodule.exports = isImport;\n","var extractImportUrlAndMedia = require('./extract-import-url-and-media');\nvar restoreImport = require('./restore-import');\nvar rewriteUrl = require('./rewrite-url');\n\nvar Token = require('../tokenizer/token');\nvar isImport = require('../utils/is-import');\n\nvar SOURCE_MAP_COMMENT_PATTERN = /^\\/\\*# sourceMappingURL=(\\S+) \\*\\/$/;\n\nfunction rebase(tokens, rebaseAll, validator, rebaseConfig) {\n return rebaseAll ?\n rebaseEverything(tokens, validator, rebaseConfig) :\n rebaseAtRules(tokens, validator, rebaseConfig);\n}\n\nfunction rebaseEverything(tokens, validator, rebaseConfig) {\n var token;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n\n switch (token[0]) {\n case Token.AT_RULE:\n rebaseAtRule(token, validator, rebaseConfig);\n break;\n case Token.AT_RULE_BLOCK:\n rebaseProperties(token[2], validator, rebaseConfig);\n break;\n case Token.COMMENT:\n rebaseSourceMapComment(token, rebaseConfig);\n break;\n case Token.NESTED_BLOCK:\n rebaseEverything(token[2], validator, rebaseConfig);\n break;\n case Token.RULE:\n rebaseProperties(token[2], validator, rebaseConfig);\n break;\n }\n }\n\n return tokens;\n}\n\nfunction rebaseAtRules(tokens, validator, rebaseConfig) {\n var token;\n var i, l;\n\n for (i = 0, l = tokens.length; i < l; i++) {\n token = tokens[i];\n\n switch (token[0]) {\n case Token.AT_RULE:\n rebaseAtRule(token, validator, rebaseConfig);\n break;\n }\n }\n\n return tokens;\n}\n\nfunction rebaseAtRule(token, validator, rebaseConfig) {\n if (!isImport(token[1])) {\n return;\n }\n\n var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);\n var newUrl = rewriteUrl(uriAndMediaQuery[0], rebaseConfig);\n var mediaQuery = uriAndMediaQuery[1];\n\n token[1] = restoreImport(newUrl, mediaQuery);\n}\n\nfunction rebaseSourceMapComment(token, rebaseConfig) {\n var matches = SOURCE_MAP_COMMENT_PATTERN.exec(token[1]);\n\n if (matches && matches[1].indexOf('data:') === -1) {\n token[1] = token[1].replace(matches[1], rewriteUrl(matches[1], rebaseConfig, true));\n }\n}\n\nfunction rebaseProperties(properties, validator, rebaseConfig) {\n var property;\n var value;\n var i, l;\n var j, m;\n\n for (i = 0, l = properties.length; i < l; i++) {\n property = properties[i];\n\n for (j = 2 /* 0 is Token.PROPERTY, 1 is name */, m = property.length; j < m; j++) {\n value = property[j][1];\n\n if (validator.isUrl(value)) {\n property[j][1] = rewriteUrl(value, rebaseConfig);\n }\n }\n }\n}\n\nmodule.exports = rebase;\n","var Marker = require('./marker');\nvar Token = require('./token');\n\nvar formatPosition = require('../utils/format-position');\n\nvar Level = {\n BLOCK: 'block',\n COMMENT: 'comment',\n DOUBLE_QUOTE: 'double-quote',\n RULE: 'rule',\n SINGLE_QUOTE: 'single-quote'\n};\n\nvar AT_RULES = [\n '@charset',\n '@import'\n];\n\nvar BLOCK_RULES = [\n '@-moz-document',\n '@document',\n '@-moz-keyframes',\n '@-ms-keyframes',\n '@-o-keyframes',\n '@-webkit-keyframes',\n '@keyframes',\n '@media',\n '@supports'\n];\n\nvar IGNORE_END_COMMENT_PATTERN = /\\/\\* clean\\-css ignore:end \\*\\/$/;\nvar IGNORE_START_COMMENT_PATTERN = /^\\/\\* clean\\-css ignore:start \\*\\//;\n\nvar PAGE_MARGIN_BOXES = [\n '@bottom-center',\n '@bottom-left',\n '@bottom-left-corner',\n '@bottom-right',\n '@bottom-right-corner',\n '@left-bottom',\n '@left-middle',\n '@left-top',\n '@right-bottom',\n '@right-middle',\n '@right-top',\n '@top-center',\n '@top-left',\n '@top-left-corner',\n '@top-right',\n '@top-right-corner'\n];\n\nvar EXTRA_PAGE_BOXES = [\n '@footnote',\n '@footnotes',\n '@left',\n '@page-float-bottom',\n '@page-float-top',\n '@right'\n];\n\nvar REPEAT_PATTERN = /^\\[\\s{0,31}\\d+\\s{0,31}\\]$/;\nvar RULE_WORD_SEPARATOR_PATTERN = /[\\s\\(]/;\nvar TAIL_BROKEN_VALUE_PATTERN = /[\\s|\\}]*$/;\n\nfunction tokenize(source, externalContext) {\n var internalContext = {\n level: Level.BLOCK,\n position: {\n source: externalContext.source || undefined,\n line: 1,\n column: 0,\n index: 0\n }\n };\n\n return intoTokens(source, externalContext, internalContext, false);\n}\n\nfunction intoTokens(source, externalContext, internalContext, isNested) {\n var allTokens = [];\n var newTokens = allTokens;\n var lastToken;\n var ruleToken;\n var ruleTokens = [];\n var propertyToken;\n var metadata;\n var metadatas = [];\n var level = internalContext.level;\n var levels = [];\n var buffer = [];\n var buffers = [];\n var isBufferEmpty = true;\n var serializedBuffer;\n var serializedBufferPart;\n var roundBracketLevel = 0;\n var isQuoted;\n var isSpace;\n var isNewLineNix;\n var isNewLineWin;\n var isCarriageReturn;\n var isCommentStart;\n var wasCommentStart = false;\n var isCommentEnd;\n var wasCommentEnd = false;\n var isCommentEndMarker;\n var isEscaped;\n var wasEscaped = false;\n var characterWithNoSpecialMeaning;\n var isRaw = false;\n var seekingValue = false;\n var seekingPropertyBlockClosing = false;\n var position = internalContext.position;\n var lastCommentStartAt;\n\n for (; position.index < source.length; position.index++) {\n var character = source[position.index];\n\n isQuoted = level == Level.SINGLE_QUOTE || level == Level.DOUBLE_QUOTE;\n isSpace = character == Marker.SPACE || character == Marker.TAB;\n isNewLineNix = character == Marker.NEW_LINE_NIX;\n isNewLineWin = character == Marker.NEW_LINE_NIX && source[position.index - 1] == Marker.CARRIAGE_RETURN;\n isCarriageReturn = character == Marker.CARRIAGE_RETURN && source[position.index + 1] && source[position.index + 1] != Marker.NEW_LINE_NIX;\n isCommentStart = !wasCommentEnd && level != Level.COMMENT && !isQuoted && character == Marker.ASTERISK && source[position.index - 1] == Marker.FORWARD_SLASH;\n isCommentEndMarker = !wasCommentStart && !isQuoted && character == Marker.FORWARD_SLASH && source[position.index - 1] == Marker.ASTERISK;\n isCommentEnd = level == Level.COMMENT && isCommentEndMarker;\n characterWithNoSpecialMeaning = !isSpace && !isCarriageReturn && (character >= 'A' && character <= 'Z' || character >= 'a' && character <= 'z' || character >= '0' && character <= '9' || character == '-');\n roundBracketLevel = Math.max(roundBracketLevel, 0);\n\n metadata = isBufferEmpty ?\n [position.line, position.column, position.source] :\n metadata;\n\n if (isEscaped) {\n // previous character was a backslash\n buffer.push(character);\n isBufferEmpty = false;\n } else if (characterWithNoSpecialMeaning) {\n // it's just an alphanumeric character or a hyphen (part of any rule or property name) so let's end it quickly\n buffer.push(character);\n isBufferEmpty = false;\n } else if ((isSpace || isNewLineNix && !isNewLineWin) && (isQuoted || level == Level.COMMENT)) {\n buffer.push(character);\n isBufferEmpty = false;\n } else if ((isSpace || isNewLineNix && !isNewLineWin) && isBufferEmpty) {\n // noop\n } else if (!isCommentEnd && level == Level.COMMENT) {\n buffer.push(character);\n isBufferEmpty = false;\n } else if (!isCommentStart && !isCommentEnd && isRaw) {\n buffer.push(character);\n isBufferEmpty = false;\n } else if (isCommentStart && (level == Level.BLOCK || level == Level.RULE) && buffer.length > 1) {\n // comment start within block preceded by some content, e.g. div/*<--\n metadatas.push(metadata);\n buffer.push(character);\n buffers.push(buffer.slice(0, -2));\n isBufferEmpty = false;\n\n buffer = buffer.slice(-2);\n metadata = [position.line, position.column - 1, position.source];\n\n levels.push(level);\n level = Level.COMMENT;\n } else if (isCommentStart) {\n // comment start, e.g. /*<--\n levels.push(level);\n level = Level.COMMENT;\n buffer.push(character);\n isBufferEmpty = false;\n } else if (isCommentEnd && isIgnoreStartComment(buffer)) {\n // ignore:start comment end, e.g. /* clean-css ignore:start */<--\n serializedBuffer = buffer.join('').trim() + character;\n lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];\n newTokens.push(lastToken);\n\n isRaw = true;\n metadata = metadatas.pop() || null;\n buffer = buffers.pop() || [];\n isBufferEmpty = buffer.length === 0;\n } else if (isCommentEnd && isIgnoreEndComment(buffer)) {\n // ignore:start comment end, e.g. /* clean-css ignore:end */<--\n serializedBuffer = buffer.join('') + character;\n lastCommentStartAt = serializedBuffer.lastIndexOf(Marker.FORWARD_SLASH + Marker.ASTERISK);\n\n serializedBufferPart = serializedBuffer.substring(0, lastCommentStartAt);\n lastToken = [Token.RAW, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];\n newTokens.push(lastToken);\n\n serializedBufferPart = serializedBuffer.substring(lastCommentStartAt);\n metadata = [position.line, position.column - serializedBufferPart.length + 1, position.source];\n lastToken = [Token.COMMENT, serializedBufferPart, [originalMetadata(metadata, serializedBufferPart, externalContext)]];\n newTokens.push(lastToken);\n\n isRaw = false;\n level = levels.pop();\n metadata = metadatas.pop() || null;\n buffer = buffers.pop() || [];\n isBufferEmpty = buffer.length === 0;\n } else if (isCommentEnd) {\n // comment end, e.g. /* comment */<--\n serializedBuffer = buffer.join('').trim() + character;\n lastToken = [Token.COMMENT, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]];\n newTokens.push(lastToken);\n\n level = levels.pop();\n metadata = metadatas.pop() || null;\n buffer = buffers.pop() || [];\n isBufferEmpty = buffer.length === 0;\n } else if (isCommentEndMarker && source[position.index + 1] != Marker.ASTERISK) {\n externalContext.warnings.push('Unexpected \\'*/\\' at ' + formatPosition([position.line, position.column, position.source]) + '.');\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {\n // single quotation start, e.g. a[href^='https<--\n levels.push(level);\n level = Level.SINGLE_QUOTE;\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) {\n // single quotation end, e.g. a[href^='https'<--\n level = levels.pop();\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {\n // double quotation start, e.g. a[href^=\"<--\n levels.push(level);\n level = Level.DOUBLE_QUOTE;\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) {\n // double quotation end, e.g. a[href^=\"https\"<--\n level = levels.pop();\n buffer.push(character);\n isBufferEmpty = false;\n } else if (!isCommentStart && !isCommentEnd && character != Marker.CLOSE_ROUND_BRACKET && character != Marker.OPEN_ROUND_BRACKET && level != Level.COMMENT && !isQuoted && roundBracketLevel > 0) {\n // character inside any function, e.g. hsla(.<--\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {\n // round open bracket, e.g. @import url(<--\n buffer.push(character);\n isBufferEmpty = false;\n\n roundBracketLevel++;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted && level != Level.COMMENT && !seekingValue) {\n // round open bracket, e.g. @import url(test.css)<--\n buffer.push(character);\n isBufferEmpty = false;\n\n roundBracketLevel--;\n } else if (character == Marker.SEMICOLON && level == Level.BLOCK && buffer[0] == Marker.AT) {\n // semicolon ending rule at block level, e.g. @import '...';<--\n serializedBuffer = buffer.join('').trim();\n allTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.COMMA && level == Level.BLOCK && ruleToken) {\n // comma separator at block level, e.g. a,div,<--\n serializedBuffer = buffer.join('').trim();\n ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.COMMA && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.AT_RULE) {\n // comma separator at block level, e.g. @import url(...) screen,<--\n // keep iterating as end semicolon will create the token\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.COMMA && level == Level.BLOCK) {\n // comma separator at block level, e.g. a,<--\n ruleToken = [tokenTypeFrom(buffer), [], []];\n serializedBuffer = buffer.join('').trim();\n ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, 0)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && ruleToken && ruleToken[0] == Token.NESTED_BLOCK) {\n // open brace opening at-rule at block level, e.g. @media{<--\n serializedBuffer = buffer.join('').trim();\n ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n allTokens.push(ruleToken);\n\n levels.push(level);\n position.column++;\n position.index++;\n buffer = [];\n isBufferEmpty = true;\n\n ruleToken[2] = intoTokens(source, externalContext, internalContext, true);\n ruleToken = null;\n } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.NESTED_BLOCK) {\n // open brace opening at-rule at block level, e.g. @media{<--\n serializedBuffer = buffer.join('').trim();\n ruleToken = ruleToken || [Token.NESTED_BLOCK, [], []];\n ruleToken[1].push([Token.NESTED_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n allTokens.push(ruleToken);\n\n levels.push(level);\n position.column++;\n position.index++;\n buffer = [];\n isBufferEmpty = true;\n\n ruleToken[2] = intoTokens(source, externalContext, internalContext, true);\n ruleToken = null;\n } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK) {\n // open brace opening rule at block level, e.g. div{<--\n serializedBuffer = buffer.join('').trim();\n ruleToken = ruleToken || [tokenTypeFrom(buffer), [], []];\n ruleToken[1].push([tokenScopeFrom(ruleToken[0]), serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)]]);\n newTokens = ruleToken[2];\n allTokens.push(ruleToken);\n\n levels.push(level);\n level = Level.RULE;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && seekingValue) {\n // open brace opening rule at rule level, e.g. div{--variable:{<--\n ruleTokens.push(ruleToken);\n ruleToken = [Token.PROPERTY_BLOCK, []];\n propertyToken.push(ruleToken);\n newTokens = ruleToken[1];\n\n levels.push(level);\n level = Level.RULE;\n seekingValue = false;\n } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && isPageMarginBox(buffer)) {\n // open brace opening page-margin box at rule level, e.g. @page{@top-center{<--\n serializedBuffer = buffer.join('').trim();\n ruleTokens.push(ruleToken);\n ruleToken = [Token.AT_RULE_BLOCK, [], []];\n ruleToken[1].push([Token.AT_RULE_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n newTokens.push(ruleToken);\n newTokens = ruleToken[2];\n\n levels.push(level);\n level = Level.RULE;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.COLON && level == Level.RULE && !seekingValue) {\n // colon at rule level, e.g. a{color:<--\n serializedBuffer = buffer.join('').trim();\n propertyToken = [Token.PROPERTY, [Token.PROPERTY_NAME, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]];\n newTokens.push(propertyToken);\n\n seekingValue = true;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && ruleTokens.length > 0 && !isBufferEmpty && buffer[0] == Marker.AT) {\n // semicolon at rule level for at-rule, e.g. a{--color:{@apply(--other-color);<--\n serializedBuffer = buffer.join('').trim();\n ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && !isBufferEmpty) {\n // semicolon at rule level, e.g. a{color:red;<--\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n propertyToken = null;\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && isBufferEmpty) {\n // semicolon after bracketed value at rule level, e.g. a{color:rgb(...);<--\n propertyToken = null;\n seekingValue = false;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && !isBufferEmpty && buffer[0] == Marker.AT) {\n // semicolon for at-rule at rule level, e.g. a{@apply(--variable);<--\n serializedBuffer = buffer.join('');\n newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && seekingPropertyBlockClosing) {\n // close brace after a property block at rule level, e.g. a{--custom:{color:red;};<--\n seekingPropertyBlockClosing = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.SEMICOLON && level == Level.RULE && isBufferEmpty) {\n // stray semicolon at rule level, e.g. a{;<--\n // noop\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && seekingValue && !isBufferEmpty && ruleTokens.length > 0) {\n // close brace at rule level, e.g. a{--color:{color:red}<--\n serializedBuffer = buffer.join('');\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n propertyToken = null;\n ruleToken = ruleTokens.pop();\n newTokens = ruleToken[2];\n\n level = levels.pop();\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && !isBufferEmpty && buffer[0] == Marker.AT && ruleTokens.length > 0) {\n // close brace at rule level for at-rule, e.g. a{--color:{@apply(--other-color)}<--\n serializedBuffer = buffer.join('');\n ruleToken[1].push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n propertyToken = null;\n ruleToken = ruleTokens.pop();\n newTokens = ruleToken[2];\n\n level = levels.pop();\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && ruleTokens.length > 0) {\n // close brace at rule level after space, e.g. a{--color:{color:red }<--\n propertyToken = null;\n ruleToken = ruleTokens.pop();\n newTokens = ruleToken[2];\n\n level = levels.pop();\n seekingValue = false;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && propertyToken && !isBufferEmpty) {\n // close brace at rule level, e.g. a{color:red}<--\n serializedBuffer = buffer.join('');\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n propertyToken = null;\n ruleToken = ruleTokens.pop();\n newTokens = allTokens;\n\n level = levels.pop();\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && !isBufferEmpty && buffer[0] == Marker.AT) {\n // close brace after at-rule at rule level, e.g. a{@apply(--variable)}<--\n propertyToken = null;\n ruleToken = null;\n serializedBuffer = buffer.join('').trim();\n newTokens.push([Token.AT_RULE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n newTokens = allTokens;\n\n level = levels.pop();\n seekingValue = false;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE && levels[levels.length - 1] == Level.RULE) {\n // close brace after a property block at rule level, e.g. a{--custom:{color:red;}<--\n propertyToken = null;\n ruleToken = ruleTokens.pop();\n newTokens = ruleToken[2];\n\n level = levels.pop();\n seekingValue = false;\n seekingPropertyBlockClosing = true;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE) {\n // close brace after a rule, e.g. a{color:red;}<--\n propertyToken = null;\n ruleToken = null;\n newTokens = allTokens;\n\n level = levels.pop();\n seekingValue = false;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK && !isNested && position.index <= source.length - 1) {\n // stray close brace at block level, e.g. a{color:red}color:blue}<--\n externalContext.warnings.push('Unexpected \\'}\\' at ' + formatPosition([position.line, position.column, position.source]) + '.');\n buffer.push(character);\n isBufferEmpty = false;\n } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK) {\n // close brace at block level, e.g. @media screen {...}<--\n break;\n } else if (character == Marker.OPEN_ROUND_BRACKET && level == Level.RULE && seekingValue) {\n // round open bracket, e.g. a{color:hsla(<--\n buffer.push(character);\n isBufferEmpty = false;\n roundBracketLevel++;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue && roundBracketLevel == 1) {\n // round close bracket, e.g. a{color:hsla(0,0%,0%)<--\n buffer.push(character);\n isBufferEmpty = false;\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n roundBracketLevel--;\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue) {\n // round close bracket within other brackets, e.g. a{width:calc((10rem / 2)<--\n buffer.push(character);\n isBufferEmpty = false;\n roundBracketLevel--;\n } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue && !isBufferEmpty) {\n // forward slash within a property, e.g. a{background:url(image.png) 0 0/<--\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.FORWARD_SLASH && source[position.index + 1] != Marker.ASTERISK && level == Level.RULE && seekingValue) {\n // forward slash within a property after space, e.g. a{background:url(image.png) 0 0 /<--\n propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.COMMA && level == Level.RULE && seekingValue && !isBufferEmpty) {\n // comma within a property, e.g. a{background:url(image.png),<--\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.COMMA && level == Level.RULE && seekingValue) {\n // comma within a property after space, e.g. a{background:url(image.png) ,<--\n propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (character == Marker.CLOSE_SQUARE_BRACKET && propertyToken && propertyToken.length > 1 && !isBufferEmpty && isRepeatToken(buffer)) {\n buffer.push(character);\n serializedBuffer = buffer.join('').trim();\n propertyToken[propertyToken.length - 1][1] += serializedBuffer;\n\n buffer = [];\n isBufferEmpty = true;\n } else if ((isSpace || (isNewLineNix && !isNewLineWin)) && level == Level.RULE && seekingValue && propertyToken && !isBufferEmpty) {\n // space or *nix newline within property, e.g. a{margin:0 <--\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (isNewLineWin && level == Level.RULE && seekingValue && propertyToken && buffer.length > 1) {\n // win newline within property, e.g. a{margin:0\\r\\n<--\n serializedBuffer = buffer.join('').trim();\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n buffer = [];\n isBufferEmpty = true;\n } else if (isNewLineWin && level == Level.RULE && seekingValue) {\n // win newline\n buffer = [];\n isBufferEmpty = true;\n } else if (isNewLineWin && buffer.length == 1) {\n // ignore windows newline which is composed of two characters\n buffer.pop();\n isBufferEmpty = buffer.length === 0;\n } else if (!isBufferEmpty || !isSpace && !isNewLineNix && !isNewLineWin && !isCarriageReturn) {\n // any character\n buffer.push(character);\n isBufferEmpty = false;\n }\n\n wasEscaped = isEscaped;\n isEscaped = !wasEscaped && character == Marker.BACK_SLASH;\n wasCommentStart = isCommentStart;\n wasCommentEnd = isCommentEnd;\n\n position.line = (isNewLineWin || isNewLineNix || isCarriageReturn) ? position.line + 1 : position.line;\n position.column = (isNewLineWin || isNewLineNix || isCarriageReturn) ? 0 : position.column + 1;\n }\n\n if (seekingValue) {\n externalContext.warnings.push('Missing \\'}\\' at ' + formatPosition([position.line, position.column, position.source]) + '.');\n }\n\n if (seekingValue && buffer.length > 0) {\n serializedBuffer = buffer.join('').replace(TAIL_BROKEN_VALUE_PATTERN, '');\n propertyToken.push([Token.PROPERTY_VALUE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]);\n\n buffer = [];\n }\n\n if (buffer.length > 0) {\n externalContext.warnings.push('Invalid character(s) \\'' + buffer.join('') + '\\' at ' + formatPosition(metadata) + '. Ignoring.');\n }\n\n return allTokens;\n}\n\nfunction isIgnoreStartComment(buffer) {\n return IGNORE_START_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);\n}\n\nfunction isIgnoreEndComment(buffer) {\n return IGNORE_END_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH);\n}\n\nfunction originalMetadata(metadata, value, externalContext, selectorFallbacks) {\n var source = metadata[2];\n\n return externalContext.inputSourceMapTracker.isTracking(source) ?\n externalContext.inputSourceMapTracker.originalPositionFor(metadata, value.length, selectorFallbacks) :\n metadata;\n}\n\nfunction tokenTypeFrom(buffer) {\n var isAtRule = buffer[0] == Marker.AT || buffer[0] == Marker.UNDERSCORE;\n var ruleWord = buffer.join('').split(RULE_WORD_SEPARATOR_PATTERN)[0];\n\n if (isAtRule && BLOCK_RULES.indexOf(ruleWord) > -1) {\n return Token.NESTED_BLOCK;\n } else if (isAtRule && AT_RULES.indexOf(ruleWord) > -1) {\n return Token.AT_RULE;\n } else if (isAtRule) {\n return Token.AT_RULE_BLOCK;\n } else {\n return Token.RULE;\n }\n}\n\nfunction tokenScopeFrom(tokenType) {\n if (tokenType == Token.RULE) {\n return Token.RULE_SCOPE;\n } else if (tokenType == Token.NESTED_BLOCK) {\n return Token.NESTED_BLOCK_SCOPE;\n } else if (tokenType == Token.AT_RULE_BLOCK) {\n return Token.AT_RULE_BLOCK_SCOPE;\n }\n}\n\nfunction isPageMarginBox(buffer) {\n var serializedBuffer = buffer.join('').trim();\n\n return PAGE_MARGIN_BOXES.indexOf(serializedBuffer) > -1 || EXTRA_PAGE_BOXES.indexOf(serializedBuffer) > -1;\n}\n\nfunction isRepeatToken(buffer) {\n return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET);\n}\n\nmodule.exports = tokenize;\n","var fs = require('fs');\nvar path = require('path');\n\nvar applySourceMaps = require('./apply-source-maps');\nvar extractImportUrlAndMedia = require('./extract-import-url-and-media');\nvar isAllowedResource = require('./is-allowed-resource');\nvar loadOriginalSources = require('./load-original-sources');\nvar normalizePath = require('./normalize-path');\nvar rebase = require('./rebase');\nvar rebaseLocalMap = require('./rebase-local-map');\nvar rebaseRemoteMap = require('./rebase-remote-map');\nvar restoreImport = require('./restore-import');\n\nvar tokenize = require('../tokenizer/tokenize');\nvar Token = require('../tokenizer/token');\nvar Marker = require('../tokenizer/marker');\nvar hasProtocol = require('../utils/has-protocol');\nvar isImport = require('../utils/is-import');\nvar isRemoteResource = require('../utils/is-remote-resource');\n\nvar UNKNOWN_URI = 'uri:unknown';\n\nfunction readSources(input, context, callback) {\n return doReadSources(input, context, function (tokens) {\n return applySourceMaps(tokens, context, function () {\n return loadOriginalSources(context, function () { return callback(tokens); });\n });\n });\n}\n\nfunction doReadSources(input, context, callback) {\n if (typeof input == 'string') {\n return fromString(input, context, callback);\n } else if (Buffer.isBuffer(input)) {\n return fromString(input.toString(), context, callback);\n } else if (Array.isArray(input)) {\n return fromArray(input, context, callback);\n } else if (typeof input == 'object') {\n return fromHash(input, context, callback);\n }\n}\n\nfunction fromString(input, context, callback) {\n context.source = undefined;\n context.sourcesContent[undefined] = input;\n context.stats.originalSize += input.length;\n\n return fromStyles(input, context, { inline: context.options.inline }, callback);\n}\n\nfunction fromArray(input, context, callback) {\n var inputAsImports = input.reduce(function (accumulator, uriOrHash) {\n if (typeof uriOrHash === 'string') {\n return addStringSource(uriOrHash, accumulator);\n } else {\n return addHashSource(uriOrHash, context, accumulator);\n }\n\n }, []);\n\n return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);\n}\n\nfunction fromHash(input, context, callback) {\n var inputAsImports = addHashSource(input, context, []);\n return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback);\n}\n\nfunction addStringSource(input, imports) {\n imports.push(restoreAsImport(normalizeUri(input)));\n return imports;\n}\n\nfunction addHashSource(input, context, imports) {\n var uri;\n var normalizedUri;\n var source;\n\n for (uri in input) {\n source = input[uri];\n normalizedUri = normalizeUri(uri);\n\n imports.push(restoreAsImport(normalizedUri));\n\n context.sourcesContent[normalizedUri] = source.styles;\n\n if (source.sourceMap) {\n trackSourceMap(source.sourceMap, normalizedUri, context);\n }\n }\n\n return imports;\n}\n\nfunction normalizeUri(uri) {\n var currentPath = path.resolve('');\n var absoluteUri;\n var relativeToCurrentPath;\n var normalizedUri;\n\n if (isRemoteResource(uri)) {\n return uri;\n }\n\n absoluteUri = path.isAbsolute(uri) ?\n uri :\n path.resolve(uri);\n relativeToCurrentPath = path.relative(currentPath, absoluteUri);\n normalizedUri = normalizePath(relativeToCurrentPath);\n\n return normalizedUri;\n}\n\nfunction trackSourceMap(sourceMap, uri, context) {\n var parsedMap = typeof sourceMap == 'string' ?\n JSON.parse(sourceMap) :\n sourceMap;\n var rebasedMap = isRemoteResource(uri) ?\n rebaseRemoteMap(parsedMap, uri) :\n rebaseLocalMap(parsedMap, uri || UNKNOWN_URI, context.options.rebaseTo);\n\n context.inputSourceMapTracker.track(uri, rebasedMap);\n}\n\nfunction restoreAsImport(uri) {\n return restoreImport('url(' + uri + ')', '') + Marker.SEMICOLON;\n}\n\nfunction fromStyles(styles, context, parentInlinerContext, callback) {\n var tokens;\n var rebaseConfig = {};\n\n if (!context.source) {\n rebaseConfig.fromBase = path.resolve('');\n rebaseConfig.toBase = context.options.rebaseTo;\n } else if (isRemoteResource(context.source)) {\n rebaseConfig.fromBase = context.source;\n rebaseConfig.toBase = context.source;\n } else if (path.isAbsolute(context.source)) {\n rebaseConfig.fromBase = path.dirname(context.source);\n rebaseConfig.toBase = context.options.rebaseTo;\n } else {\n rebaseConfig.fromBase = path.dirname(path.resolve(context.source));\n rebaseConfig.toBase = context.options.rebaseTo;\n }\n\n tokens = tokenize(styles, context);\n tokens = rebase(tokens, context.options.rebase, context.validator, rebaseConfig);\n\n return allowsAnyImports(parentInlinerContext.inline) ?\n inline(tokens, context, parentInlinerContext, callback) :\n callback(tokens);\n}\n\nfunction allowsAnyImports(inline) {\n return !(inline.length == 1 && inline[0] == 'none');\n}\n\nfunction inline(tokens, externalContext, parentInlinerContext, callback) {\n var inlinerContext = {\n afterContent: false,\n callback: callback,\n errors: externalContext.errors,\n externalContext: externalContext,\n fetch: externalContext.options.fetch,\n inlinedStylesheets: parentInlinerContext.inlinedStylesheets || externalContext.inlinedStylesheets,\n inline: parentInlinerContext.inline,\n inlineRequest: externalContext.options.inlineRequest,\n inlineTimeout: externalContext.options.inlineTimeout,\n isRemote: parentInlinerContext.isRemote || false,\n localOnly: externalContext.localOnly,\n outputTokens: [],\n rebaseTo: externalContext.options.rebaseTo,\n sourceTokens: tokens,\n warnings: externalContext.warnings\n };\n\n return doInlineImports(inlinerContext);\n}\n\nfunction doInlineImports(inlinerContext) {\n var token;\n var i, l;\n\n for (i = 0, l = inlinerContext.sourceTokens.length; i < l; i++) {\n token = inlinerContext.sourceTokens[i];\n\n if (token[0] == Token.AT_RULE && isImport(token[1])) {\n inlinerContext.sourceTokens.splice(0, i);\n return inlineStylesheet(token, inlinerContext);\n } else if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) {\n inlinerContext.outputTokens.push(token);\n } else {\n inlinerContext.outputTokens.push(token);\n inlinerContext.afterContent = true;\n }\n }\n\n inlinerContext.sourceTokens = [];\n return inlinerContext.callback(inlinerContext.outputTokens);\n}\n\nfunction inlineStylesheet(token, inlinerContext) {\n var uriAndMediaQuery = extractImportUrlAndMedia(token[1]);\n var uri = uriAndMediaQuery[0];\n var mediaQuery = uriAndMediaQuery[1];\n var metadata = token[2];\n\n return isRemoteResource(uri) ?\n inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) :\n inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext);\n}\n\nfunction inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) {\n var isAllowed = isAllowedResource(uri, true, inlinerContext.inline);\n var originalUri = uri;\n var isLoaded = uri in inlinerContext.externalContext.sourcesContent;\n var isRuntimeResource = !hasProtocol(uri);\n\n if (inlinerContext.inlinedStylesheets.indexOf(uri) > -1) {\n inlinerContext.warnings.push('Ignoring remote @import of \"' + uri + '\" as it has already been imported.');\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n } else if (inlinerContext.localOnly && inlinerContext.afterContent) {\n inlinerContext.warnings.push('Ignoring remote @import of \"' + uri + '\" as no callback given and after other content.');\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n } else if (isRuntimeResource) {\n inlinerContext.warnings.push('Skipping remote @import of \"' + uri + '\" as no protocol given.');\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n } else if (inlinerContext.localOnly && !isLoaded) {\n inlinerContext.warnings.push('Skipping remote @import of \"' + uri + '\" as no callback given.');\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n } else if (!isAllowed && inlinerContext.afterContent) {\n inlinerContext.warnings.push('Ignoring remote @import of \"' + uri + '\" as resource is not allowed and after other content.');\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n } else if (!isAllowed) {\n inlinerContext.warnings.push('Skipping remote @import of \"' + uri + '\" as resource is not allowed.');\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n return doInlineImports(inlinerContext);\n }\n\n inlinerContext.inlinedStylesheets.push(uri);\n\n function whenLoaded(error, importedStyles) {\n if (error) {\n inlinerContext.errors.push('Broken @import declaration of \"' + uri + '\" - ' + error);\n\n return process.nextTick(function () {\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n doInlineImports(inlinerContext);\n });\n }\n\n inlinerContext.inline = inlinerContext.externalContext.options.inline;\n inlinerContext.isRemote = true;\n\n inlinerContext.externalContext.source = originalUri;\n inlinerContext.externalContext.sourcesContent[uri] = importedStyles;\n inlinerContext.externalContext.stats.originalSize += importedStyles.length;\n\n return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {\n importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);\n\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n\n return doInlineImports(inlinerContext);\n });\n }\n\n return isLoaded ?\n whenLoaded(null, inlinerContext.externalContext.sourcesContent[uri]) :\n inlinerContext.fetch(uri, inlinerContext.inlineRequest, inlinerContext.inlineTimeout, whenLoaded);\n}\n\nfunction inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) {\n var currentPath = path.resolve('');\n var absoluteUri = path.isAbsolute(uri) ?\n path.resolve(currentPath, uri[0] == '/' ? uri.substring(1) : uri) :\n path.resolve(inlinerContext.rebaseTo, uri);\n var relativeToCurrentPath = path.relative(currentPath, absoluteUri);\n var importedStyles;\n var isAllowed = isAllowedResource(uri, false, inlinerContext.inline);\n var normalizedPath = normalizePath(relativeToCurrentPath);\n var isLoaded = normalizedPath in inlinerContext.externalContext.sourcesContent;\n\n if (inlinerContext.inlinedStylesheets.indexOf(absoluteUri) > -1) {\n inlinerContext.warnings.push('Ignoring local @import of \"' + uri + '\" as it has already been imported.');\n } else if (!isLoaded && (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile())) {\n inlinerContext.errors.push('Ignoring local @import of \"' + uri + '\" as resource is missing.');\n } else if (!isAllowed && inlinerContext.afterContent) {\n inlinerContext.warnings.push('Ignoring local @import of \"' + uri + '\" as resource is not allowed and after other content.');\n } else if (inlinerContext.afterContent) {\n inlinerContext.warnings.push('Ignoring local @import of \"' + uri + '\" as after other content.');\n } else if (!isAllowed) {\n inlinerContext.warnings.push('Skipping local @import of \"' + uri + '\" as resource is not allowed.');\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1));\n } else {\n importedStyles = isLoaded ?\n inlinerContext.externalContext.sourcesContent[normalizedPath] :\n fs.readFileSync(absoluteUri, 'utf-8');\n\n inlinerContext.inlinedStylesheets.push(absoluteUri);\n inlinerContext.inline = inlinerContext.externalContext.options.inline;\n\n inlinerContext.externalContext.source = normalizedPath;\n inlinerContext.externalContext.sourcesContent[normalizedPath] = importedStyles;\n inlinerContext.externalContext.stats.originalSize += importedStyles.length;\n\n return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function (importedTokens) {\n importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata);\n\n inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens);\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n\n return doInlineImports(inlinerContext);\n });\n }\n\n inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1);\n\n return doInlineImports(inlinerContext);\n}\n\nfunction wrapInMedia(tokens, mediaQuery, metadata) {\n if (mediaQuery) {\n return [[Token.NESTED_BLOCK, [[Token.NESTED_BLOCK_SCOPE, '@media ' + mediaQuery, metadata]], tokens]];\n } else {\n return tokens;\n }\n}\n\nmodule.exports = readSources;\n","var all = require('./helpers').all;\n\nfunction store(serializeContext, token) {\n var value = typeof token == 'string' ?\n token :\n token[1];\n var wrap = serializeContext.wrap;\n\n wrap(serializeContext, value);\n track(serializeContext, value);\n serializeContext.output.push(value);\n}\n\nfunction wrap(serializeContext, value) {\n if (serializeContext.column + value.length > serializeContext.format.wrapAt) {\n track(serializeContext, serializeContext.format.breakWith);\n serializeContext.output.push(serializeContext.format.breakWith);\n }\n}\n\nfunction track(serializeContext, value) {\n var parts = value.split('\\n');\n\n serializeContext.line += parts.length - 1;\n serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);\n}\n\nfunction serializeStyles(tokens, context) {\n var serializeContext = {\n column: 0,\n format: context.options.format,\n indentBy: 0,\n indentWith: '',\n line: 1,\n output: [],\n spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,\n store: store,\n wrap: context.options.format.wrapAt ?\n wrap :\n function () { /* noop */ }\n };\n\n all(serializeContext, tokens);\n\n return {\n styles: serializeContext.output.join('')\n };\n}\n\nmodule.exports = serializeStyles;\n","var SourceMapGenerator = require('source-map').SourceMapGenerator;\nvar all = require('./helpers').all;\n\nvar isRemoteResource = require('../utils/is-remote-resource');\n\nvar isWindows = process.platform == 'win32';\n\nvar NIX_SEPARATOR_PATTERN = /\\//g;\nvar UNKNOWN_SOURCE = '$stdin';\nvar WINDOWS_SEPARATOR = '\\\\';\n\nfunction store(serializeContext, element) {\n var fromString = typeof element == 'string';\n var value = fromString ? element : element[1];\n var mappings = fromString ? null : element[2];\n var wrap = serializeContext.wrap;\n\n wrap(serializeContext, value);\n track(serializeContext, value, mappings);\n serializeContext.output.push(value);\n}\n\nfunction wrap(serializeContext, value) {\n if (serializeContext.column + value.length > serializeContext.format.wrapAt) {\n track(serializeContext, serializeContext.format.breakWith, false);\n serializeContext.output.push(serializeContext.format.breakWith);\n }\n}\n\nfunction track(serializeContext, value, mappings) {\n var parts = value.split('\\n');\n\n if (mappings) {\n trackAllMappings(serializeContext, mappings);\n }\n\n serializeContext.line += parts.length - 1;\n serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);\n}\n\nfunction trackAllMappings(serializeContext, mappings) {\n for (var i = 0, l = mappings.length; i < l; i++) {\n trackMapping(serializeContext, mappings[i]);\n }\n}\n\nfunction trackMapping(serializeContext, mapping) {\n var line = mapping[0];\n var column = mapping[1];\n var originalSource = mapping[2];\n var source = originalSource;\n var storedSource = source || UNKNOWN_SOURCE;\n\n if (isWindows && source && !isRemoteResource(source)) {\n storedSource = source.replace(NIX_SEPARATOR_PATTERN, WINDOWS_SEPARATOR);\n }\n\n serializeContext.outputMap.addMapping({\n generated: {\n line: serializeContext.line,\n column: serializeContext.column\n },\n source: storedSource,\n original: {\n line: line,\n column: column\n }\n });\n\n if (serializeContext.inlineSources && (originalSource in serializeContext.sourcesContent)) {\n serializeContext.outputMap.setSourceContent(storedSource, serializeContext.sourcesContent[originalSource]);\n }\n}\n\nfunction serializeStylesAndSourceMap(tokens, context) {\n var serializeContext = {\n column: 0,\n format: context.options.format,\n indentBy: 0,\n indentWith: '',\n inlineSources: context.options.sourceMapInlineSources,\n line: 1,\n output: [],\n outputMap: new SourceMapGenerator(),\n sourcesContent: context.sourcesContent,\n spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,\n store: store,\n wrap: context.options.format.wrapAt ?\n wrap :\n function () { /* noop */ }\n };\n\n all(serializeContext, tokens);\n\n return {\n sourceMap: serializeContext.outputMap,\n styles: serializeContext.output.join('')\n };\n}\n\nmodule.exports = serializeStylesAndSourceMap;\n","/**\n * Clean-css - https://github.com/jakubpawlowicz/clean-css\n * Released under the terms of MIT license\n *\n * Copyright (C) 2017 JakubPawlowicz.com\n */\n\nvar level0Optimize = require('./optimizer/level-0/optimize');\nvar level1Optimize = require('./optimizer/level-1/optimize');\nvar level2Optimize = require('./optimizer/level-2/optimize');\nvar validator = require('./optimizer/validator');\n\nvar compatibilityFrom = require('./options/compatibility');\nvar fetchFrom = require('./options/fetch');\nvar formatFrom = require('./options/format').formatFrom;\nvar inlineFrom = require('./options/inline');\nvar inlineRequestFrom = require('./options/inline-request');\nvar inlineTimeoutFrom = require('./options/inline-timeout');\nvar OptimizationLevel = require('./options/optimization-level').OptimizationLevel;\nvar optimizationLevelFrom = require('./options/optimization-level').optimizationLevelFrom;\nvar pluginsFrom = require('./options/plugins');\nvar rebaseFrom = require('./options/rebase');\nvar rebaseToFrom = require('./options/rebase-to');\n\nvar inputSourceMapTracker = require('./reader/input-source-map-tracker');\nvar readSources = require('./reader/read-sources');\n\nvar serializeStyles = require('./writer/simple');\nvar serializeStylesAndSourceMap = require('./writer/source-maps');\n\nvar CleanCSS = module.exports = function CleanCSS(options) {\n options = options || {};\n\n this.options = {\n batch: !!options.batch,\n compatibility: compatibilityFrom(options.compatibility),\n explicitRebaseTo: 'rebaseTo' in options,\n fetch: fetchFrom(options.fetch),\n format: formatFrom(options.format),\n inline: inlineFrom(options.inline),\n inlineRequest: inlineRequestFrom(options.inlineRequest),\n inlineTimeout: inlineTimeoutFrom(options.inlineTimeout),\n level: optimizationLevelFrom(options.level),\n plugins: pluginsFrom(options.plugins),\n rebase: rebaseFrom(options.rebase, options.rebaseTo),\n rebaseTo: rebaseToFrom(options.rebaseTo),\n returnPromise: !!options.returnPromise,\n sourceMap: !!options.sourceMap,\n sourceMapInlineSources: !!options.sourceMapInlineSources\n };\n};\n\n\n// for compatibility with optimize-css-assets-webpack-plugin\nCleanCSS.process = function (input, opts) {\n var cleanCss;\n var optsTo = opts.to;\n\n delete opts.to;\n cleanCss = new CleanCSS(Object.assign({ returnPromise: true, rebaseTo: optsTo }, opts));\n\n return cleanCss.minify(input)\n .then(function(output) {\n return { css: output.styles };\n });\n};\n\n\nCleanCSS.prototype.minify = function (input, maybeSourceMap, maybeCallback) {\n var options = this.options;\n\n if (options.returnPromise) {\n return new Promise(function (resolve, reject) {\n minifyAll(input, options, maybeSourceMap, function (errors, output) {\n return errors ?\n reject(errors) :\n resolve(output);\n });\n });\n } else {\n return minifyAll(input, options, maybeSourceMap, maybeCallback);\n }\n};\n\nfunction minifyAll(input, options, maybeSourceMap, maybeCallback) {\n if (options.batch && Array.isArray(input)) {\n return minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback);\n } else if (options.batch && (typeof input == 'object')) {\n return minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback);\n } else {\n return minify(input, options, maybeSourceMap, maybeCallback);\n }\n}\n\nfunction minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback) {\n var callback = typeof maybeCallback == 'function' ?\n maybeCallback :\n (typeof maybeSourceMap == 'function' ? maybeSourceMap : null);\n var errors = [];\n var outputAsHash = {};\n var inputValue;\n var i, l;\n\n function whenHashBatchDone(innerErrors, output) {\n outputAsHash = Object.assign(outputAsHash, output);\n errors.concat(innerErrors);\n }\n\n for (i = 0, l = input.length; i < l; i++) {\n if (typeof input[i] == 'object') {\n minifyInBatchesFromHash(input[i], options, whenHashBatchDone);\n } else {\n inputValue = input[i];\n\n outputAsHash[inputValue] = minify([inputValue], options);\n errors.concat(outputAsHash[inputValue].errors);\n }\n }\n\n return callback ?\n callback(errors.length > 0 ? errors : null, outputAsHash) :\n outputAsHash;\n}\n\nfunction minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback) {\n var callback = typeof maybeCallback == 'function' ?\n maybeCallback :\n (typeof maybeSourceMap == 'function' ? maybeSourceMap : null);\n var errors = [];\n var outputAsHash = {};\n var inputKey;\n var inputValue;\n\n for (inputKey in input) {\n inputValue = input[inputKey];\n\n outputAsHash[inputKey] = minify(inputValue.styles, options, inputValue.sourceMap);\n errors.concat(outputAsHash[inputKey].errors);\n }\n\n return callback ?\n callback(errors.length > 0 ? errors : null, outputAsHash) :\n outputAsHash;\n}\n\nfunction minify(input, options, maybeSourceMap, maybeCallback) {\n var sourceMap = typeof maybeSourceMap != 'function' ?\n maybeSourceMap :\n null;\n var callback = typeof maybeCallback == 'function' ?\n maybeCallback :\n (typeof maybeSourceMap == 'function' ? maybeSourceMap : null);\n var context = {\n stats: {\n efficiency: 0,\n minifiedSize: 0,\n originalSize: 0,\n startedAt: Date.now(),\n timeSpent: 0\n },\n cache: {\n specificity: {}\n },\n errors: [],\n inlinedStylesheets: [],\n inputSourceMapTracker: inputSourceMapTracker(),\n localOnly: !callback,\n options: options,\n source: null,\n sourcesContent: {},\n validator: validator(options.compatibility),\n warnings: []\n };\n var implicitRebaseToWarning;\n\n if (sourceMap) {\n context.inputSourceMapTracker.track(undefined, sourceMap);\n }\n\n if (options.rebase && !options.explicitRebaseTo) {\n implicitRebaseToWarning =\n 'You have set `rebase: true` without giving `rebaseTo` option, which, in this case, defaults to the current working directory. ' +\n 'You are then warned this can lead to unexpected URL rebasing (aka here be dragons)! ' +\n 'If you are OK with the clean-css output, then you can get rid of this warning by giving clean-css a `rebaseTo: process.cwd()` option.';\n context.warnings.push(implicitRebaseToWarning);\n }\n\n return runner(context.localOnly)(function () {\n return readSources(input, context, function (tokens) {\n var serialize = context.options.sourceMap ?\n serializeStylesAndSourceMap :\n serializeStyles;\n\n var optimizedTokens = optimize(tokens, context);\n var optimizedStyles = serialize(optimizedTokens, context);\n var output = withMetadata(optimizedStyles, context);\n\n return callback ?\n callback(context.errors.length > 0 ? context.errors : null, output) :\n output;\n });\n });\n}\n\nfunction runner(localOnly) {\n // to always execute code asynchronously when a callback is given\n // more at blog.izs.me/post/59142742143/designing-apis-for-asynchrony\n return localOnly ?\n function (callback) { return callback(); } :\n process.nextTick;\n}\n\nfunction optimize(tokens, context) {\n var optimized;\n\n optimized = level0Optimize(tokens, context);\n optimized = OptimizationLevel.One in context.options.level ?\n level1Optimize(tokens, context) :\n tokens;\n optimized = OptimizationLevel.Two in context.options.level ?\n level2Optimize(tokens, context, true) :\n optimized;\n\n return optimized;\n}\n\nfunction withMetadata(output, context) {\n output.stats = calculateStatsFrom(output.styles, context);\n output.errors = context.errors;\n output.inlinedStylesheets = context.inlinedStylesheets;\n output.warnings = context.warnings;\n\n return output;\n}\n\nfunction calculateStatsFrom(styles, context) {\n var finishedAt = Date.now();\n var timeSpent = finishedAt - context.stats.startedAt;\n\n delete context.stats.startedAt;\n context.stats.timeSpent = timeSpent;\n context.stats.efficiency = 1 - styles.length / context.stats.originalSize;\n context.stats.minifiedSize = styles.length;\n\n return context.stats;\n}\n","module.exports = require('./lib/clean');\n"],"names":["level0Optimize","optimize","naturalCompare","require$$0","naturalSorter","sortSelectors","override","require$$1","Breaks","Spaces","DEFAULTS","OPTION_SEPARATOR","FALSE_KEYWORD_1","FALSE_KEYWORD_2","TRUE_KEYWORD_1","TRUE_KEYWORD_2","formatFrom","normalizeValue","Marker","formatPosition","require$$2","RELATION_PATTERN","WHITESPACE_PATTERN","tidyRules","tidyBlock","tidyAtRule","Hack","removeUnused","restoreFromOptimizing","Token","wrapSingle","wrapForOptimizing","InvalidPropertyError","require$$3","require$$4","background","borderRadius","fourValues","font","multiplex","breakUp","understandable","unit","color","propertyName","time","canOverride","shallowClone","restore","roundingPrecisionFrom","defaults","OptimizationLevel","optimizationLevelFrom","plugin","propertyOptimizers","require$$5","require$$6","require$$7","shortenHex","shortenHsl","shortenRgb","split","URL_PREFIX_PATTERN","startsAsUrl","valueOptimizers","require$$8","require$$9","require$$10","require$$11","configuration","rules","body","property","value","all","helpers","store","require$$12","require$$13","serializeRules","require$$14","require$$15","IMPORT_PREFIX_PATTERN","isImport","level1Optimize","Level","isMergeable","everyValuesPair","hasInherit","hasSameValues","populateComponents","restoreWithComponents","deepClone","serializeBody","mergeIntoShorthands","sameValue","hasUnset","findComponentIn","isComponentOf","isMergeableShorthand","overridesNonComponentShorthand","overrideProperties","optimizeProperties","mergeAdjacent","rulesOverlap","specificity","specificitiesOverlap","canReorder","canReorderSingle","extractProperties","mergeMediaQueries","mergeNonAdjacentByBody","mergeNonAdjacentBySelector","cloneArray","reduceNonAdjacent","serializeAll","removeDuplicateFontAtRules","removeDuplicateMediaQueries","removeDuplicates","normalize","removeUnusedAtRules","tidyRuleDuplicates","restructure","level2Optimize","validator","compatibilityFrom","isHttpResource","isHttpsResource","url","HTTP_PROTOCOL","loadRemoteResource","fetchFrom","inline","inlineRequestFrom","inlineTimeoutFrom","pluginsFrom","rebaseFrom","rebase","path","rebaseToFrom","inputSourceMapTracker","track","isRemoteResource","hasProtocol","isAllowedResource","DATA_URI_PATTERN","matchDataUri","rebaseLocalMap","rebaseRemoteMap","isDataUriResource","fs","applySourceMaps","global","QUOTE_PREFIX_PATTERN","QUOTE_SUFFIX_PATTERN","URL_SUFFIX_PATTERN","extractImportUrlAndMedia","loadOriginalSources","normalizePath","restoreImport","isWindows","rewriteUrl","tokenize","require$$16","readSources","wrap","serializeStyles","serializeStylesAndSourceMap","require$$17","cleanModule"],"mappings":"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"}
\No newline at end of file