StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
631 KiB
1 lines
631 KiB
{"version":3,"file":"index.js","sources":["../../../node_modules/json-stringify-pretty-compact/index.js","../format.js","../../../node_modules/url/node_modules/punycode/punycode.js","../../../node_modules/url/util.js","../../../node_modules/querystring/decode.js","../../../node_modules/querystring/encode.js","../../../node_modules/querystring/index.js","../../../node_modules/url/url.js","../visit.js","../migrate/v8.js","../util/extend.js","../expression/parsing_error.js","../expression/scope.js","../expression/types.js","../../../node_modules/csscolorparser/csscolorparser.js","../util/color.js","../expression/types/collator.js","../expression/types/formatted.js","../expression/values.js","../expression/definitions/literal.js","../expression/runtime_error.js","../expression/definitions/assertion.js","../expression/definitions/format.js","../expression/definitions/coercion.js","../expression/evaluation_context.js","../expression/compound_expression.js","../expression/definitions/collator.js","../expression/is_constant.js","../expression/definitions/var.js","../expression/parsing_context.js","../expression/stops.js","../expression/definitions/step.js","../../../node_modules/@mapbox/unitbezier/index.js","../util/interpolate.js","../util/color_spaces.js","../expression/definitions/interpolate.js","../expression/definitions/coalesce.js","../expression/definitions/let.js","../expression/definitions/at.js","../expression/definitions/match.js","../expression/definitions/case.js","../expression/definitions/comparison.js","../expression/definitions/number_format.js","../expression/definitions/length.js","../expression/definitions/index.js","../util/result.js","../util/properties.js","../util/get_type.js","../function/index.js","../expression/index.js","../function/convert.js","../feature_filter/index.js","../feature_filter/convert.js","../migrate/expressions.js","../migrate.js","../composite.js","../util/deep_equal.js","../diff.js","../error/validation_error.js","../error/parsing_error.js","../validate/validate_constants.js","../util/unbundle_jsonlint.js","../validate/validate_object.js","../validate/validate_array.js","../validate/validate_number.js","../validate/validate_function.js","../validate/validate_expression.js","../validate/validate_boolean.js","../validate/validate_color.js","../validate/validate_enum.js","../validate/validate_filter.js","../validate/validate_property.js","../validate/validate_paint_property.js","../validate/validate_layout_property.js","../validate/validate_layer.js","../validate/validate_source.js","../validate/validate_light.js","../validate/validate_string.js","../validate/validate_formatted.js","../validate/validate.js","../validate/validate_glyphs_url.js","../validate_style.min.js","../../../node_modules/@mapbox/jsonlint-lines-primitives/lib/jsonlint.js","../validate_style.js","../style-spec.js"],"sourcesContent":["\"use strict\";\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nmodule.exports = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n","\nimport reference from './reference/latest.js';\nimport stringifyPretty from 'json-stringify-pretty-compact';\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * Format a Mapbox GL Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a Mapbox GL Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('mapbox-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n style = sortKeysBy(style, reference.$root);\n\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, reference.layer));\n }\n\n return stringifyPretty(style, {indent: space});\n}\n\nexport default format;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// @flow\n\nimport Reference from './reference/v8.json';\nimport type {StylePropertySpecification} from './style-spec';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification,\n DataDrivenPropertyValueSpecification\n} from './types';\n\nfunction getPropertyReference(propertyName): StylePropertySpecification {\n for (let i = 0; i < Reference.layout.length; i++) {\n for (const key in Reference[Reference.layout[i]]) {\n if (key === propertyName) return (Reference[Reference.layout[i]][key]: any);\n }\n }\n for (let i = 0; i < Reference.paint.length; i++) {\n for (const key in Reference[Reference.paint[i]]) {\n if (key === propertyName) return (Reference[Reference.paint[i]][key]: any);\n }\n }\n\n return (null: any);\n}\n\nexport function eachSource(style: StyleSpecification, callback: (SourceSpecification) => void) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\n\nexport function eachLayer(style: StyleSpecification, callback: (LayerSpecification) => void) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\n\ntype PropertyCallback = ({\n path: [string, 'paint' | 'layout', string], // [layerid, paint/layout, property key]\n key: string,\n value: PropertyValueSpecification<mixed> | DataDrivenPropertyValueSpecification<mixed>,\n reference: StylePropertySpecification,\n set: (PropertyValueSpecification<mixed> | DataDrivenPropertyValueSpecification<mixed>) => void\n}) => void;\n\nexport function eachProperty(\n style: StyleSpecification,\n options: {paint?: boolean, layout?: boolean},\n callback: PropertyCallback\n) {\n function inner(layer, propertyType: 'paint' | 'layout') {\n const properties = (layer[propertyType]: any);\n if (!properties) return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n","\nimport URL from 'url';\nimport {eachSource, eachLayer, eachProperty} from '../visit';\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\n\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n } else {\n return value;\n }\n}\n\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\n\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from]; delete obj[from];\n}\n\nexport default function(style) {\n style.version = 8;\n\n // Rename properties, reverse coordinates in source and layers\n eachSource(style, (source) => {\n if (source.type === 'video' && source.url !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n\n eachPaint(layer, (paint) => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n\n // Inline Constants\n eachProperty(style, {paint: true, layout: true}, (property) => {\n const value = resolveConstant(style, property.value);\n\n if (isFunction(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n\n property.set(value);\n });\n delete style.constants;\n\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n\n if (paint['icon-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n\n function migrateFontstackURL(input) {\n const inputParsed = URL.parse(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n\n } else if (inputParsed.hostname === 'fontstack') {\n assert(decodeURI(inputParsed.pathname) === '/{fontstack}/{range}.pbf');\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n\n } else if (inputParsed.hostname === 'fonts') {\n assert(inputPathnameParts[1] === 'v1');\n assert(decodeURI(inputPathnameParts[3]) === '{fontstack}');\n assert(decodeURI(inputPathnameParts[4]) === '{range}.pbf');\n return `mapbox://fonts/${inputPathnameParts[2]}/{fontstack}/{range}.pbf`;\n\n } else {\n assert(false);\n }\n\n function assert(predicate) {\n if (!predicate) {\n throw new Error(`Invalid font url: \"${input}\"`);\n }\n }\n }\n\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\n }\n\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n return font;\n\n } else if (typeof font === 'string') {\n return splitAndTrim(font);\n\n } else if (typeof font === 'object') {\n font.stops.forEach((stop) => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n\n } else {\n throw new Error(\"unexpected font value\");\n }\n }\n\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n\n return style;\n}\n","\nexport default function (output, ...inputs) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n","// @flow\n\nclass ParsingError extends Error {\n key: string;\n message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nexport default ParsingError;\n","// @flow\n\nimport type {Expression} from './expression';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n parent: ?Scope;\n bindings: {[string]: Expression};\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>) {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nexport default Scope;\n","// @flow\n\nexport type NullTypeT = { kind: 'null' };\nexport type NumberTypeT = { kind: 'number' };\nexport type StringTypeT = { kind: 'string' };\nexport type BooleanTypeT = { kind: 'boolean' };\nexport type ColorTypeT = { kind: 'color' };\nexport type ObjectTypeT = { kind: 'object' };\nexport type ValueTypeT = { kind: 'value' };\nexport type ErrorTypeT = { kind: 'error' };\nexport type CollatorTypeT = { kind: 'collator' };\nexport type FormattedTypeT = { kind: 'formatted' };\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type =\n NullTypeT |\n NumberTypeT |\n StringTypeT |\n BooleanTypeT |\n ColorTypeT |\n ObjectTypeT |\n ValueTypeT |\n ArrayType | // eslint-disable-line no-use-before-define\n ErrorTypeT |\n CollatorTypeT |\n FormattedTypeT\n\nexport type ArrayType = {\n kind: 'array',\n itemType: Type,\n N: ?number\n}\n\nexport const NullType = { kind: 'null' };\nexport const NumberType = { kind: 'number' };\nexport const StringType = { kind: 'string' };\nexport const BooleanType = { kind: 'boolean' };\nexport const ColorType = { kind: 'color' };\nexport const ObjectType = { kind: 'object' };\nexport const ValueType = { kind: 'value' };\nexport const ErrorType = { kind: 'error' };\nexport const CollatorType = { kind: 'collator' };\nexport const FormattedType = { kind: 'formatted' };\n\nexport function array(itemType: Type, N: ?number): ArrayType {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function toString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType)\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): ?string {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${toString(expected)} but found ${toString(t)} instead.`;\n}\n","// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","// @flow\n\nimport { parseCSSColor } from 'csscolorparser';\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(r: number, g: number, b: number, a: number = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n static black: Color;\n static white: Color;\n static transparent: Color;\n static red: Color;\n\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input: ?string): Color | void {\n if (!input) {\n return undefined;\n }\n\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return undefined;\n }\n\n const rgba = parseCSSColor(input);\n if (!rgba) {\n return undefined;\n }\n\n return new Color(\n rgba[0] / 255 * rgba[3],\n rgba[1] / 255 * rgba[3],\n rgba[2] / 255 * rgba[3],\n rgba[3]\n );\n }\n\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString(): string {\n const [r, g, b, a] = this.toArray();\n return `rgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})`;\n }\n\n toArray(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n}\n\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\nexport default Color;\n","// @flow\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\n\ndeclare var Intl: {\n Collator: Class<Intl$Collator>\n};\n\ndeclare class Intl$Collator {\n constructor (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n static (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n compare (a: string, b: string): number;\n\n resolvedOptions(): any;\n}\n\ntype CollatorOptions = {\n localeMatcher?: 'lookup' | 'best fit',\n usage?: 'sort' | 'search',\n sensitivity?: 'base' | 'accent' | 'case' | 'variant',\n ignorePunctuation?: boolean,\n numeric?: boolean,\n caseFirst?: 'upper' | 'lower' | 'false'\n}\n\nexport default class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl$Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n { sensitivity: this.sensitivity, usage: 'search' });\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n","// @flow\n\nimport type Color from '../../util/color';\n\nexport class FormattedSection {\n text: string;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n\n constructor(text: string, scale: number | null, fontStack: string | null, textColor: Color | null) {\n this.text = text;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\n\nexport default class Formatted {\n sections: Array<FormattedSection>;\n\n constructor(sections: Array<FormattedSection>) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null)]);\n }\n\n toString(): string {\n return this.sections.map(section => section.text).join('');\n }\n\n serialize(): Array<mixed> {\n const serialized = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.text);\n const options = {};\n if (section.fontStack) {\n options[\"text-font\"] = [\"literal\", section.fontStack.split(',')];\n }\n if (section.scale) {\n options[\"font-scale\"] = section.scale;\n }\n if (section.textColor) {\n options[\"text-color\"] = [\"rgba\"].concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport Color from '../util/color';\nimport Collator from './types/collator';\nimport Formatted from './types/formatted';\nimport { NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, array } from './types';\n\nimport type { Type } from './types';\n\nexport function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): ?string {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | Collator | Formatted | $ReadOnlyArray<Value> | { +[string]: Value }\n\nexport function isValue(mixed: mixed): boolean {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: ?Type;\n\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n assert(typeof value === 'object');\n return ObjectType;\n }\n}\n\nexport function toString(value: Value) {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nexport { Color, Collator };\n","// @flow\n\nimport assert from 'assert';\nimport { isValue, typeOf, Color } from '../values';\nimport Formatted from '../types/formatted';\n\nimport type { Type } from '../types';\nimport type { Value } from '../values';\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\n\nclass Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n\n const value = (args[1]: any);\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate() {\n return this.value;\n }\n\n eachChild() {}\n\n possibleOutputs() {\n return [this.value];\n }\n\n serialize(): Array<mixed> {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\"literal\", this.value];\n } else if (this.value instanceof Color) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return [\"rgba\"].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n assert(this.value === null ||\n typeof this.value === 'string' ||\n typeof this.value === 'number' ||\n typeof this.value === 'boolean');\n return (this.value: any);\n }\n }\n}\n\nexport default Literal;\n","// @flow\n\nclass RuntimeError {\n name: string;\n message: string;\n\n constructor(message: string) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n\n toJSON() {\n return this.message;\n }\n}\n\nexport default RuntimeError;\n","// @flow\n\nimport assert from 'assert';\n\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n toString,\n array\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport { typeOf } from '../values';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nclass Assertion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n let i = 1;\n let type;\n\n const name: string = (args[0]: any);\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n\n type = array(itemType, N);\n } else {\n assert(types[name], name);\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Assertion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${toString(this.type)}, but found ${toString(typeOf(value))} instead.`);\n }\n }\n\n assert(false);\n return null;\n }\n\n eachChild(fn: (Expression) => void) {\n this.args.forEach(fn);\n }\n\n possibleOutputs(): Array<Value | void> {\n return [].concat(...this.args.map((arg) => arg.possibleOutputs()));\n }\n\n serialize(): Array<mixed> {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' ||\n itemType.kind === 'number' ||\n itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nexport default Assertion;\n","// @flow\n\nimport { NumberType, ValueType, FormattedType, array, StringType, ColorType } from '../types';\nimport Formatted, { FormattedSection } from '../types/formatted';\nimport { toString } from '../values';\n\nimport type { Expression } from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type { Type } from '../types';\n\ntype FormattedSectionExpression = {\n text: Expression,\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n}\n\nexport default class FormatExpression implements Expression {\n type: Type;\n sections: Array<FormattedSectionExpression>;\n\n constructor(sections: Array<FormattedSectionExpression>) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 3) {\n return context.error(`Expected at least two arguments.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const sections: Array<FormattedSectionExpression> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const text = context.parse(args[i], 1, ValueType);\n if (!text) return null;\n const kind = text.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null')\n return context.error(`Formatted text type must be 'string', 'value', or 'null'.`);\n\n const options = (args[i + 1]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`Format options argument must be an object.`);\n\n let scale = null;\n if (options['font-scale']) {\n scale = context.parse(options['font-scale'], 1, NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (options['text-font']) {\n font = context.parse(options['text-font'], 1, array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (options['text-color']) {\n textColor = context.parse(options['text-color'], 1, ColorType);\n if (!textColor) return null;\n }\n sections.push({text, scale, font, textColor});\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Formatted(\n this.sections.map(section =>\n new FormattedSection(\n toString(section.text.evaluate(ctx)),\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? section.font.evaluate(ctx).join(',') : null,\n section.textColor ? section.textColor.evaluate(ctx) : null\n )\n )\n );\n }\n\n eachChild(fn: (Expression) => void) {\n for (const section of this.sections) {\n fn(section.text);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n\n possibleOutputs() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return [undefined];\n }\n\n serialize() {\n const serialized = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.text.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types';\nimport {Color, toString as valueToString, validateRGBA} from '../values';\nimport RuntimeError from '../runtime_error';\nimport Formatted from '../types/formatted';\nimport FormatExpression from '../definitions/format';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n const name: string = (args[0]: any);\n assert(types[name], name);\n\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const type = types[name];\n\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Coercion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color((input[0]: any) / 255, (input[1]: any) / 255, (input[2]: any) / 255, (input[3]: any));\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : String(JSON.stringify(input))}'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n } else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else {\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (Expression) => void) {\n this.args.forEach(fn);\n }\n\n possibleOutputs(): Array<Value | void> {\n return [].concat(...this.args.map((arg) => arg.possibleOutputs()));\n }\n\n serialize() {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{text: this.args[0], scale: null, font: null, textColor: null}]).serialize();\n }\n const serialized = [`to-${this.type.kind}`];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coercion;\n","// @flow\n\nimport { Color } from './values';\nimport type { FormattedSection } from './types/formatted';\nimport type { GlobalProperties, Feature, FeatureState } from './index';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nclass EvaluationContext {\n globals: GlobalProperties;\n feature: ?Feature;\n featureState: ?FeatureState;\n formattedSection: ?FormattedSection;\n\n _parseColorCache: {[string]: ?Color};\n\n constructor() {\n this.globals = (null: any);\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n }\n\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n properties() {\n return this.feature && this.feature.properties || {};\n }\n\n parseColor(input: string): ?Color {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nexport default EvaluationContext;\n","// @flow\n\nimport { toString } from './types';\n\nimport ParsingContext from './parsing_context';\nimport EvaluationContext from './evaluation_context';\nimport assert from 'assert';\n\nimport type { Expression, ExpressionRegistry } from './expression';\nimport type { Type } from './types';\nimport type { Value } from './values';\n\nexport type Varargs = {| type: Type |};\ntype Signature = Array<Type> | Varargs;\ntype Evaluate = (EvaluationContext, Array<Expression>) => Value;\ntype Definition = [Type, Signature, Evaluate] |\n {|type: Type, overloads: Array<[Signature, Evaluate]>|};\n\nclass CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array<Expression>;\n\n static definitions: { [string]: Definition };\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array<Expression>) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (Expression) => void) {\n this.args.forEach(fn);\n }\n\n possibleOutputs() {\n return [undefined];\n }\n\n serialize(): Array<mixed> {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n const op: string = (args[0]: any);\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloads = availableOverloads.filter(([signature]) => (\n !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n\n let signatureContext: ParsingContext = (null: any);\n\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array<Expression> = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n params.type;\n\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n\n assert(!signatureContext || signatureContext.errors.length > 0);\n\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed) return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: { [string]: Definition }\n ) {\n assert(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString).join(', ')})`;\n } else {\n return `(${toString(signature.type)}...)`;\n }\n}\n\nexport default CompoundExpression;\n","// @flow\n\nimport { StringType, BooleanType, CollatorType } from '../types';\nimport Collator from '../types/collator';\n\nimport type { Expression } from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type { Type } from '../types';\n\nexport default class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const options = (args[1]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n\n const caseSensitive = context.parse(\n options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = context.parse(\n options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n possibleOutputs() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possibleOutputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possibleOutputs anyway, so we can get away with leaving this undefined for now.\n return [undefined];\n }\n\n serialize() {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\"collator\", options];\n }\n}\n","// @flow\n\nimport CompoundExpression from './compound_expression';\n\nimport type { Expression } from './expression.js';\n\nfunction isFeatureConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array<string>) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport { isFeatureConstant, isGlobalPropertyConstant, isStateConstant };\n","// @flow\n\nimport type { Type } from '../types';\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n\n return new Var(name, context.scope.get(name));\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n possibleOutputs() {\n return [undefined];\n }\n\n serialize() {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","// @flow\n\nimport Scope from './scope';\nimport { checkSubtype } from './types';\nimport ParsingError from './parsing_error';\nimport Literal from './definitions/literal';\nimport Assertion from './definitions/assertion';\nimport Coercion from './definitions/coercion';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport CollatorExpression from './definitions/collator';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant';\nimport Var from './definitions/var';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Type} from './types';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n registry: ExpressionRegistry;\n path: Array<number>;\n key: string;\n scope: Scope;\n errors: Array<ParsingError>;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: ?Type;\n\n constructor(\n registry: ExpressionRegistry,\n path: Array<number> = [],\n expectedType: ?Type,\n scope: Scope = new Scope(),\n errors: Array<ParsingError> = []\n ) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(\n expr: mixed,\n index?: number,\n expectedType?: ?Type,\n bindings?: Array<[string, Expression]>,\n options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'} = {}\n ): ?Expression {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n _parse(expr: mixed, options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'}): ?Expression {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result.\n if (!(parsed instanceof Literal) && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n\n return parsed;\n }\n\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index: number, expectedType?: ?Type, bindings?: Array<[string, Expression]>) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(\n this.registry,\n path,\n expectedType || null,\n scope,\n this.errors\n );\n }\n\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error: string, ...keys: Array<number>) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ParsingError(key, error));\n }\n\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected: Type, t: Type): ?string {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\nexport default ParsingContext;\n\nfunction isConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'line-progress', 'accumulated', 'is-supported-script']);\n}\n","// @flow\n\nimport RuntimeError from './runtime_error';\n\nimport type { Expression } from './expression';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array<number>, input: number) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","// @flow\n\nimport { NumberType } from '../types';\n\nimport { findStopLessThanOrEqualTo } from '../stops';\n\nimport type { Stops } from '../stops';\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\nclass Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n\n const labelKey = i;\n const valueKey = i + 1;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n possibleOutputs(): Array<Value | void> {\n return [].concat(...this.outputs.map((output) => output.possibleOutputs()));\n }\n\n serialize() {\n const serialized = [\"step\", this.input.serialize()];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\nexport default Step;\n","/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\n\nUnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\n\nUnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n};\n\nUnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') epsilon = 1e-6;\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) return t2;\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) break;\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) return t0;\n if (t2 > t1) return t1;\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) return t2;\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n};\n\nUnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n","// @flow\n\nimport Color from './color';\n\nexport function number(a: number, b: number, t: number) {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number) {\n return new Color(\n number(from.r, to.r, t),\n number(from.g, to.g, t),\n number(from.b, to.b, t),\n number(from.a, to.a, t)\n );\n}\n\nexport function array(from: Array<number>, to: Array<number>, t: number): Array<number> {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n","// @flow\n\nimport Color from './color';\n\nimport {number as interpolateNumber} from './interpolate';\n\ntype LABColor = {\n l: number,\n a: number,\n b: number,\n alpha: number\n};\n\ntype HCLColor = {\n h: number,\n c: number,\n l: number,\n alpha: number\n};\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\n// Utilities\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n// LAB\nfunction rgbToLab(rgbColor: Color): LABColor {\n const b = rgb2xyz(rgbColor.r),\n a = rgb2xyz(rgbColor.g),\n l = rgb2xyz(rgbColor.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\n\nfunction labToRgb(labColor: LABColor): Color {\n let y = (labColor.l + 16) / 116,\n x = isNaN(labColor.a) ? y : y + labColor.a / 500,\n z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(\n xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n labColor.alpha\n );\n}\n\nfunction interpolateLab(from: LABColor, to: LABColor, t: number) {\n return {\n l: interpolateNumber(from.l, to.l, t),\n a: interpolateNumber(from.a, to.a, t),\n b: interpolateNumber(from.b, to.b, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\n// HCL\nfunction rgbToHcl(rgbColor: Color): HCLColor {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\n\nfunction hclToRgb(hclColor: HCLColor): Color {\n const h = hclColor.h * deg2rad,\n c = hclColor.c,\n l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\n\nfunction interpolateHue(a: number, b: number, t: number) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\n\nfunction interpolateHcl(from: HCLColor, to: HCLColor, t: number) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: interpolateNumber(from.c, to.c, t),\n l: interpolateNumber(from.l, to.l, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\nexport const lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\n\nexport const hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport * as interpolate from '../../util/interpolate';\nimport { toString, NumberType, ColorType } from '../types';\nimport { findStopLessThanOrEqualTo } from '../stops';\nimport { hcl, lab } from '../../util/color_spaces';\n\nimport type { Stops } from '../stops';\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\nexport type InterpolationType =\n { name: 'linear' } |\n { name: 'exponential', base: number } |\n { name: 'cubic-bezier', controlPoints: [number, number, number, number] };\n\nclass Interpolate implements Expression {\n type: Type;\n\n operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab';\n interpolation: InterpolationType;\n input: Expression;\n labels: Array<number>;\n outputs: Array<Expression>;\n\n constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static interpolationFactor(interpolation: InterpolationType, input: number, lower: number, upper: number) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: (controlPoints: any)\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n !(\n outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number'\n )\n ) {\n return context.error(`Type ${toString(outputType)} is not interpolatable.`);\n }\n\n return new Interpolate(outputType, (operator: any), interpolation, input, stops);\n }\n\n evaluate(ctx: EvaluationContext) {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n\n if (this.operator === 'interpolate') {\n return (interpolate[this.type.kind.toLowerCase()]: any)(outputLower, outputUpper, t); // eslint-disable-line import/namespace\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n possibleOutputs(): Array<Value | void> {\n return [].concat(...this.outputs.map((output) => output.possibleOutputs()));\n }\n\n serialize(): Array<mixed> {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = [\"linear\"];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = [\"linear\"];\n } else {\n interpolation = [\"exponential\", this.interpolation.base];\n }\n } else {\n interpolation = [\"cubic-bezier\" ].concat(this.interpolation.controlPoints);\n }\n\n const serialized = [this.operator, interpolation, this.input.serialize()];\n\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(\n this.labels[i],\n this.outputs[i].serialize()\n );\n }\n return serialized;\n }\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport default Interpolate;\n","// @flow\n\nimport assert from 'assert';\n\nimport { checkSubtype, ValueType } from '../types';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\nclass Coalesce implements Expression {\n type: Type;\n args: Array<Expression>;\n\n constructor(type: Type, args: Array<Expression>) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length < 2) {\n return context.error(\"Expectected at least one argument.\");\n }\n let outputType: Type = (null: any);\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert(outputType);\n\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce((outputType: any), parsedArgs);\n }\n\n evaluate(ctx: EvaluationContext) {\n let result = null;\n for (const arg of this.args) {\n result = arg.evaluate(ctx);\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (Expression) => void) {\n this.args.forEach(fn);\n }\n\n possibleOutputs(): Array<Value | void> {\n return [].concat(...this.args.map((arg) => arg.possibleOutputs()));\n }\n\n serialize() {\n const serialized = [\"coalesce\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coalesce;\n","// @flow\n\nimport type { Type } from '../types';\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n evaluate(ctx: EvaluationContext) {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n possibleOutputs() {\n return this.result.possibleOutputs();\n }\n\n serialize() {\n const serialized = [\"let\"];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nexport default Let;\n","// @flow\n\nimport { array, ValueType, NumberType } from '../types';\n\nimport RuntimeError from '../runtime_error';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Type, ArrayType } from '../types';\nimport type { Value } from '../values';\n\nclass At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t: ArrayType = (input.type: any);\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const index = ((this.index.evaluate(ctx): any): number);\n const array = ((this.input.evaluate(ctx): any): Array<Value>);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n possibleOutputs() {\n return [undefined];\n }\n\n serialize() {\n return [\"at\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default At;\n","// @flow\n\nimport assert from 'assert';\n\nimport { typeOf } from '../values';\nimport { ValueType, type Type } from '../types';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\n\n// Map input label values to output expression index\ntype Cases = {[number | string]: number};\n\nclass Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array<Expression>;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array<Expression>, otherwise: Expression) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(inputType && outputType);\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType: any), input.type)) {\n return null;\n }\n\n return new Match((inputType: any), (outputType: any), input, cases, outputs, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = (this.input.evaluate(ctx): any);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n possibleOutputs(): Array<Value | void> {\n return []\n .concat(...this.outputs.map((out) => out.possibleOutputs()))\n .concat(this.otherwise.possibleOutputs());\n }\n\n serialize(): Array<mixed> {\n const serialized = [\"match\", this.input.serialize()];\n\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput: Array<[number, Array<number | string>]> = [];\n const outputLookup: {[index: number]: number} = {}; // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([this.cases[label], [label]]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n\n const coerceLabel = (label) => this.inputType.kind === 'number' ? Number(label) : label;\n\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nexport default Match;\n","// @flow\n\nimport assert from 'assert';\n\nimport { BooleanType } from '../types';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Value } from '../values';\nimport type { Type } from '../types';\n\ntype Branches = Array<[Expression, Expression]>;\n\nclass Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n return context.error(`Expected an odd number of arguments.`);\n\n let outputType: ?Type;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(outputType);\n return new Case((outputType: any), branches, otherwise);\n }\n\n evaluate(ctx: EvaluationContext) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n\n eachChild(fn: (Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n possibleOutputs(): Array<Value | void> {\n return []\n .concat(...this.branches.map(([_, out]) => out.possibleOutputs()))\n .concat(this.otherwise.possibleOutputs());\n }\n\n serialize() {\n const serialized = [\"case\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Case;\n","// @flow\n\nimport { toString, ValueType, BooleanType, CollatorType } from '../types';\nimport Assertion from './assertion';\nimport { typeOf } from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type { Expression } from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type { Type } from '../types';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=' ;\n\nfunction isComparableType(op: ComparisonOperator, type: Type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\nfunction eq(ctx, a, b) { return a === b; }\nfunction neq(ctx, a, b) { return a !== b; }\nfunction lt(ctx, a, b) { return a < b; }\nfunction gt(ctx, a, b) { return a > b; }\nfunction lteq(ctx, a, b) { return a <= b; }\nfunction gteq(ctx, a, b) { return a >= b; }\n\nfunction eqCollate(ctx, a, b, c) { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx, a, b, c) { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx, a, b, c) { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx, a, b, c) { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx, a, b, c) { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx, a, b, c) { return c.compare(a, b) >= 0; }\n\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op: ComparisonOperator, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: ?Expression;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator: ?Expression) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n\n const op: ComparisonOperator = (args[0]: any);\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString(rhs.type)}'.`);\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`);\n }\n\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n possibleOutputs() {\n return [true, false];\n }\n\n serialize() {\n const serialized = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals = makeComparison('==', eq, eqCollate);\nexport const NotEquals = makeComparison('!=', neq, neqCollate);\nexport const LessThan = makeComparison('<', lt, ltCollate);\nexport const GreaterThan = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nexport const GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n","// @flow\n\nimport { StringType, NumberType } from '../types';\n\nimport type { Expression } from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type { Type } from '../types';\n\ndeclare var Intl: {\n NumberFormat: Class<Intl$NumberFormat>\n};\n\ndeclare class Intl$NumberFormat {\n constructor (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n static (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n format(a: number): string;\n\n resolvedOptions(): any;\n}\n\ntype NumberFormatOptions = {\n style?: 'decimal' | 'currency' | 'percent';\n currency?: null | string;\n minimumFractionDigits?: null | string;\n maximumFractionDigits?: null | string;\n};\n\nexport default class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext): ?Expression {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = (args[2]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) return null;\n }\n\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style: this.currency ? \"currency\" : \"decimal\",\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n possibleOutputs() {\n return [undefined];\n }\n\n serialize() {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\"number-format\", this.number.serialize(), options];\n }\n}\n","// @flow\n\nimport { NumberType, toString } from '../types';\n\nimport { typeOf } from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type { Expression } from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type { Type } from '../types';\n\nclass Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray<mixed>, context: ParsingContext) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (Expression) => void) {\n fn(this.input);\n }\n\n possibleOutputs() {\n return [undefined];\n }\n\n serialize() {\n const serialized = [\"length\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Length;\n","// @flow\n\nimport {\n type Type,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n toString as typeToString\n} from '../types';\n\nimport { typeOf, Color, validateRGBA, toString as valueToString } from '../values';\nimport CompoundExpression from '../compound_expression';\nimport RuntimeError from '../runtime_error';\nimport Let from './let';\nimport Var from './var';\nimport Literal from './literal';\nimport Assertion from './assertion';\nimport Coercion from './coercion';\nimport At from './at';\nimport Match from './match';\nimport Case from './case';\nimport Step from './step';\nimport Interpolate from './interpolate';\nimport Coalesce from './coalesce';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison';\nimport CollatorExpression from './collator';\nimport NumberFormat from './number_format';\nimport FormatExpression from './format';\nimport Length from './length';\n\nimport type { Varargs } from '../compound_expression';\nimport type { ExpressionRegistry } from '../expression';\n\nconst expressions: ExpressionRegistry = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var\n};\n\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error) throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\n\nfunction has(key, obj) {\n return key in obj;\n}\n\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\n\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\n\nfunction varargs(type: Type): Varargs {\n return { type };\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[(k: any).value] === (v: any).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v: any).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v: any).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = (v: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k: any).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => ctx.id() !== null\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => (v: any).value.indexOf(ctx.properties()[(k: any).value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[(k: any).value], (v: any).value, 0, (v: any).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nexport default expressions;\n","// @flow\n\n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result<T, E> =\n | {| result: 'success', value: T |}\n | {| result: 'error', value: E |};\n\nexport function success<T, E>(value: T): Result<T, E> {\n return { result: 'success', value };\n}\n\nexport function error<T, E>(value: E): Result<T, E> {\n return { result: 'error', value };\n}\n","// @flow\n\nimport type {StylePropertySpecification} from '../style-spec';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","\nexport default function getType(val) {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n","\nimport * as colorSpaces from '../util/color_spaces';\nimport Color from '../util/color';\nimport extend from '../util/extend';\nimport getType from '../util/get_type';\nimport * as interpolate from '../util/interpolate';\nimport Interpolate from '../expression/definitions/interpolate';\nimport Formatted from '../expression/types/formatted';\nimport { supportsInterpolation } from '../util/properties';\nimport { findStopLessThanOrEqualTo } from '../expression/stops';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction identityFunction(x) {\n return x;\n}\n\nexport function createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n\n if (isColor) {\n parameters = extend({}, parameters);\n\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], Color.parse(stop[1])];\n });\n }\n\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) { // eslint-disable-line import/namespace\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\n\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n\n const interpolationType = {name: 'linear'};\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n if (c !== undefined) return c;\n}\n\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n parameters.stops[index][0],\n parameters.stops[index + 1][0]);\n\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction; // eslint-disable-line import/namespace\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace]; // eslint-disable-line import/namespace\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n\n return interp(outputLower, outputUpper, t);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport extend from '../util/extend';\nimport ParsingError from './parsing_error';\nimport ParsingContext from './parsing_context';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport Step from './definitions/step';\nimport Interpolate from './definitions/interpolate';\nimport Coalesce from './definitions/coalesce';\nimport Let from './definitions/let';\nimport definitions from './definitions';\nimport * as isConstant from './is_constant';\nimport RuntimeError from './runtime_error';\nimport { success, error } from '../util/result';\nimport { supportsPropertyExpression, supportsZoomExpression, supportsInterpolation } from '../util/properties';\n\nimport type {Type, EvaluationKind} from './types';\nimport type {Value} from './values';\nimport type {Expression} from './expression';\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {Result} from '../util/result';\nimport type {InterpolationType} from './definitions/interpolate';\nimport type {PropertyValueSpecification} from '../types';\nimport type {FormattedSection} from './types/formatted';\n\nexport type Feature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'MultiPoint' | 'LineString' | 'MultiLineString' | 'Polygon' | 'MultiPolygon',\n +id?: any,\n +properties: {[string]: any},\n +patterns?: {[string]: {\"min\": string, \"mid\": string, \"max\": string}}\n};\n\nexport type FeatureState = {[string]: any};\n\nexport type GlobalProperties = $ReadOnly<{\n zoom: number,\n heatmapDensity?: number,\n lineProgress?: number,\n isSupportedScript?: (string) => boolean,\n accumulated?: Value\n}>;\n\nexport class StyleExpression {\n expression: Expression;\n\n _evaluator: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues: ?{[string]: any};\n\n constructor(expression: Expression, propertySpec: ?StylePropertySpecification) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.formattedSection = formattedSection;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.formattedSection = formattedSection || null;\n\n try {\n const val = this.expression.evaluate(this._evaluator);\n if (val === null || val === undefined) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\n\nexport function isExpression(expression: mixed) {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in definitions;\n}\n\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nexport function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result<StyleExpression, Array<ParsingError>> {\n const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n assert(parser.errors.length > 0);\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec));\n}\n\nexport class ZoomConstantExpression<Kind: EvaluationKind> {\n kind: Kind;\n isStateDependent: boolean;\n _styleExpression: StyleExpression;\n\n constructor(kind: Kind, expression: StyleExpression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, formattedSection);\n }\n}\n\nexport class ZoomDependentExpression<Kind: EvaluationKind> {\n kind: Kind;\n zoomStops: Array<number>;\n isStateDependent: boolean;\n\n _styleExpression: StyleExpression;\n interpolationType: ?InterpolationType;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array<number>, interpolationType?: InterpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport type ConstantExpression = {\n kind: 'constant',\n +evaluate: (globals: GlobalProperties, feature?: Feature) => any,\n}\n\nexport type SourceExpression = {\n kind: 'source',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection) => any,\n};\n\nexport type CameraExpression = {\n kind: 'camera',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array<number>,\n interpolationType: ?InterpolationType\n};\n\nexport type CompositeExpression = {\n kind: 'composite',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, formattedSection?: FormattedSection) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array<number>,\n interpolationType: ?InterpolationType\n};\n\nexport type StylePropertyExpression =\n | ConstantExpression\n | SourceExpression\n | CameraExpression\n | CompositeExpression;\n\nexport function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result<StylePropertyExpression, Array<ParsingError>> {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n\n const parsed = expression.value.expression;\n\n const isFeatureConstant = isConstant.isFeatureConstant(parsed);\n if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n\n const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success(isFeatureConstant ?\n (new ZoomConstantExpression('constant', expression.value): ConstantExpression) :\n (new ZoomConstantExpression('source', expression.value): SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success(isFeatureConstant ?\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) :\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression));\n}\n\nimport { isFunction, createFunction } from '../function';\nimport { Color } from './values';\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction<T> {\n _parameters: PropertyValueSpecification<T>;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => any;\n interpolationFactor: ?(input: number, lower: number, upper: number) => number;\n zoomStops: ?Array<number>;\n\n constructor(parameters: PropertyValueSpecification<T>, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize(serialized: {_parameters: PropertyValueSpecification<T>, _specification: StylePropertySpecification}) {\n return ((new StylePropertyFunction(serialized._parameters, serialized._specification)): StylePropertyFunction<T>);\n }\n\n static serialize(input: StylePropertyFunction<T>) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression<T>(value: PropertyValueSpecification<T>, specification: StylePropertySpecification): StylePropertyExpression {\n if (isFunction(value)) {\n return (new StylePropertyFunction(value, specification): any);\n\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n\n } else {\n let constant: any = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression: Expression): Step | Interpolate | ParsingError | null {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n\n } else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n\n result = expression;\n }\n\n if (result instanceof ParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nimport { ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, array } from './types';\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && isFunction(spec.default)) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n","// @flow\n\nimport assert from 'assert';\nimport type {StylePropertySpecification} from '../style-spec';\n\nexport default convertFunction;\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nfunction convertFunction(parameters: any, propertySpec: StylePropertySpecification) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n\n stops = stops.map((stop) => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n });\n\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\n\nfunction convertIdentityFunction(parameters, propertySpec): Array<mixed> {\n const get = ['get', parameters.property];\n\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\n\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\n}\n\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n\n return expression;\n } else {\n const expression = ['step', ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n }\n}\n\nfunction coalesce(a, b) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n}\n\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n assert(parameters.stops.length > 0 && parameters.stops.length <= 2);\n const expression = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n expression.push(convertLiteral(coalesce(parameters.default, propertySpec.default)));\n return expression;\n } else if (type === 'categorical') {\n const expression = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(convertLiteral(coalesce(parameters.default, propertySpec.default)));\n return expression;\n } else if (type === 'interval') {\n const expression = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [getInterpolateOperator(parameters), ['exponential', base], ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\n\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), ['exponential', base], input];\n } else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n}\n\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\n\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\n\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n assert(propertySpec.expression);\n return (propertySpec.expression: any).interpolated ? 'exponential' : 'interval';\n }\n}\n\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nexport function convertTokenString(s: string) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0) result.push(literal);\n result.push(['get', match[1]]);\n }\n\n if (result.length === 1) {\n return s;\n }\n\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n\n return result;\n}\n\n","// @flow\n\nimport { createExpression } from '../expression';\n\nimport type {GlobalProperties} from '../expression';\nexport type FeatureFilter = (globalProperties: GlobalProperties, feature: VectorTileFeature) => boolean;\n\nexport default createFilter;\nexport { isExpressionFilter };\n\nfunction isExpressionFilter(filter: any) {\n if (filter === true || filter === false) {\n return true;\n }\n\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n\n case 'in':\n case '!in':\n case '!has':\n case 'none':\n return false;\n\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n\n default:\n return true;\n }\n}\n\nconst filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': ['zoom', 'feature']\n }\n};\n\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter: any): FeatureFilter {\n if (filter === null || filter === undefined) {\n return () => true;\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n\n const compiled = createExpression(filter, filterSpec);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n return (globalProperties: GlobalProperties, feature: VectorTileFeature) => compiled.value.evaluate(globalProperties, feature);\n }\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction convertFilter(filter: ?Array<any>): mixed {\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n true;\n return converted;\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\n\nfunction convertDisjunctionOp(filters: Array<Array<any>>) {\n return ['any'].concat(filters.map(convertFilter));\n}\n\nfunction convertInOp(property: string, values: Array<any>) {\n if (values.length === 0) { return false; }\n switch (property) {\n case '$type':\n return [`filter-type-in`, ['literal', values]];\n case '$id':\n return [`filter-id-in`, ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [`filter-has`, property];\n }\n}\n\nfunction convertNegation(filter: mixed) {\n return ['!', filter];\n}\n","// @flow\n\nimport { isExpressionFilter } from './index';\n\nimport type { FilterSpecification } from '../types';\n\ntype ExpectedTypes = {[string]: 'string' | 'number' | 'boolean'};\n\n/**\n * Convert the given legacy filter to (the JSON representation of) an\n * equivalent expression\n * @private\n */\nexport default function convertFilter(filter: FilterSpecification): mixed {\n return _convertFilter(filter, {});\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evalaution error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes): mixed {\n if (isExpressionFilter(filter)) { return filter; }\n\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n\n let converted;\n\n if (\n op === '==' ||\n op === '!=' ||\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>='\n ) {\n const [, property, value] = (filter: any);\n converted = convertComparisonOp(property, value, op, expectedTypes);\n } else if (op === 'any') {\n const children = (filter: any).slice(1).map(f => {\n const types = {};\n const child = _convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false];\n });\n return ['any'].concat(children);\n } else if (op === 'all') {\n const children = (filter: any).slice(1).map(f => _convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all'].concat(children) : [].concat(...children);\n } else if (op === 'none') {\n return ['!', _convertFilter(['any'].concat(filter.slice(1)), {})];\n } else if (op === 'in') {\n converted = convertInOp((filter[1]: any), filter.slice(2));\n } else if (op === '!in') {\n converted = convertInOp((filter[1]: any), filter.slice(2), true);\n } else if (op === 'has') {\n converted = convertHasOp((filter[1]: any));\n } else if (op === '!has') {\n converted = ['!', convertHasOp((filter[1]: any))];\n } else {\n converted = true;\n }\n\n return converted;\n}\n\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes: ExpectedTypes) {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0) return true;\n if (conditions.length === 1) return conditions[0];\n return ['all'].concat(conditions);\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string, expectedTypes: ?ExpectedTypes) {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n if (expectedTypes && value !== null) {\n const type = ((typeof value): any);\n expectedTypes[property] = type;\n }\n\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property], // missing property != null for legacy filters\n ['==', get, null]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]], // missing property != null for legacy filters\n ['!=', get, null]\n ];\n }\n\n return [op, get, value];\n}\n\nfunction convertInOp(property: string, values: Array<any>, negate = false) {\n if (values.length === 0) return negate;\n\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n\n return [ negate ? 'all' : 'any' ].concat(\n values.map(v => [negate ? '!=' : '==', get, v])\n );\n}\n\nfunction convertHasOp(property: string) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return ['!=', ['id'], null];\n } else {\n return ['has', property];\n }\n}\n","// @flow\n\nimport {\n eachLayer,\n eachProperty\n} from '../visit';\nimport { isExpression } from '../expression';\nimport convertFunction, {convertTokenString} from '../function/convert';\nimport convertFilter from '../feature_filter/convert';\n\nimport type { StyleSpecification } from '../types';\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n */\nexport default function(style: StyleSpecification) {\n const converted = [];\n\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = (convertFilter(layer.filter): any);\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, value, reference, set}) => {\n if (isExpression(value)) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n\n","\nimport migrateToV8 from './migrate/v8';\nimport migrateToExpressions from './migrate/expressions';\n\n/**\n * Migrate a Mapbox GL Style to the latest version.\n *\n * @private\n * @alias migrate\n * @param {object} style a Mapbox GL Style\n * @returns {Object} a migrated style\n * @example\n * var fs = require('fs');\n * var migrate = require('mapbox-gl-style-spec').migrate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport default function(style) {\n let migrated = false;\n\n if (style.version === 7) {\n style = migrateToV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n migrated = migrateToExpressions(style);\n migrated = true;\n }\n\n if (!migrated) {\n throw new Error('cannot migrate from', style.version);\n }\n\n return style;\n}\n","\nexport default function (style) {\n const styleIDs = [];\n const sourceIDs = [];\n const compositedSourceLayers = [];\n\n for (const id in style.sources) {\n const source = style.sources[id];\n\n if (source.type !== \"vector\")\n continue;\n\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n\n if (styleIDs.length < 2)\n return style;\n\n styleIDs.forEach((id) => {\n delete style.sources[id];\n });\n\n const compositeID = sourceIDs.join(\",\");\n\n style.sources[compositeID] = {\n \"type\": \"vector\",\n \"url\": `mapbox://${compositeID}`\n };\n\n style.layers.forEach((layer) => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n\n return style;\n}\n","// @flow\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a: ?mixed, b: ?mixed): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","\nimport isEqual from './util/deep_equal';\n\nconst operations = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight'\n\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({ command: operations.addSource, args: [sourceId, after[sourceId]] });\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({ command: operations.removeSource, args: [sourceId] });\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!isEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({ command: operations.setGeoJSONSourceData, args: [sourceId, after[sourceId].data] });\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({ command: operations.removeLayer, args: [layerId] });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({ command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId] });\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({ command: operations.removeLayer, args: [layerId] });\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({ command: operations.addLayer, args: [afterLayer, insertBeforeLayerId] });\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({ command: operations.setFilter, args: [layerId, afterLayer.filter] });\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({ command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom] });\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({ command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]] });\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({ command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]] });\n }\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nfunction diffStyles(before, after) {\n if (!before) return [{ command: operations.setStyle, args: [after] }];\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{ command: operations.setStyle, args: [after] }];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({ command: operations.setCenter, args: [after.center] });\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({ command: operations.setZoom, args: [after.zoom] });\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({ command: operations.setBearing, args: [after.bearing] });\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({ command: operations.setPitch, args: [after.pitch] });\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({ command: operations.setSprite, args: [after.sprite] });\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({ command: operations.setGlyphs, args: [after.glyphs] });\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({ command: operations.setTransition, args: [after.transition] });\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({ command: operations.setLight, args: [after.light] });\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (sourcesRemoved[layer.source]) {\n commands.push({ command: operations.removeLayer, args: [layer.id] });\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{ command: operations.setStyle, args: [after] }];\n }\n\n return commands;\n}\n\nexport default diffStyles;\nexport { operations };\n","\nexport default class ValidationError {\n constructor(key, value, message, identifier) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n","\nfunction ParsingError(error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n}\n\nexport default ParsingError;\n","\nimport ValidationError from '../error/validation_error';\n\nexport default function validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n } else {\n return [];\n }\n}\n","function isPrimitive(value) {\n return value instanceof Number || value instanceof String || value instanceof Boolean;\n}\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value) {\n if (isPrimitive(value)) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !isPrimitive(value)) {\n const unbundledValue = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validateSpec from './validate';\n\nexport default function validateObject(options) {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n let errors = [];\n\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n } else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n }, object));\n }\n\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport validate from './validate';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec = {\n \"type\": arraySpec.value,\n \"values\": arraySpec.values\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const type = getType(value);\n\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)];\n }\n\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validate from './validate';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateNumber from './validate_number';\nimport { isExpression } from '../expression';\nimport { unbundle, deepUnbundle } from '../util/unbundle_jsonlint';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties';\n\nexport default function validateFunction(options) {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction =\n getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n\n let errors = [];\n const value = options.value;\n\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n\n return errors;\n }\n\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: { zoom: {} },\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: { zoom: validateNumber, value: validateStopDomainValue }\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${value}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[value] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error';\n\nimport { createExpression, createPropertyExpression } from '../expression';\nimport { deepUnbundle } from '../util/unbundle_jsonlint';\nimport { isStateConstant, isGlobalPropertyConstant, isFeatureConstant } from '../expression/is_constant';\n\nexport default function validateExpression(options: any): Array<ValidationError> {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n\n const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n expressionObj.possibleOutputs().indexOf(undefined) !== -1) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n\n return [];\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport { parseCSSColor } from 'csscolorparser';\n\nexport default function validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n\n if (parseCSSColor(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","\nimport ValidationError from '../error/validation_error';\nimport { unbundle } from '../util/unbundle_jsonlint';\n\nexport default function validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n } else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n","\nimport ValidationError from '../error/validation_error';\nimport validateExpression from './validate_expression';\nimport validateEnum from './validate_enum';\nimport getType from '../util/get_type';\nimport { unbundle, deepUnbundle } from '../util/unbundle_jsonlint';\nimport extend from '../util/extend';\nimport { isExpressionFilter } from '../feature_filter';\n\nexport default function validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: { value: 'boolean' }\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n const styleSpec = options.styleSpec;\n let type;\n\n let errors = [];\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n\n }\n\n return errors;\n}\n","\nimport validate from './validate';\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport { isFunction } from '../function';\nimport { unbundle, deepUnbundle } from '../util/unbundle_jsonlint';\nimport { supportsPropertyExpression } from '../util/properties';\n\nexport default function validateProperty(options, propertyType) {\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n\n if (!layerSpec) return [];\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(\n key, value,\n `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)];\n }\n\n const errors = [];\n\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","\nimport validateProperty from './validate_property';\n\nexport default function validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n","\nimport validateProperty from './validate_property';\n\nexport default function validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n","\nimport ValidationError from '../error/validation_error';\nimport { unbundle } from '../util/unbundle_jsonlint';\nimport validateObject from './validate_object';\nimport validateFilter from './validate_filter';\nimport validatePaintProperty from './validate_paint_property';\nimport validateLayoutProperty from './validate_layout_property';\nimport validateSpec from './validate';\nimport extend from '../util/extend';\n\nexport default function validateLayer(options) {\n let errors = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({layerType: type}, options));\n }\n }\n });\n }\n }\n }));\n\n return errors;\n}\n","\nimport ValidationError from '../error/validation_error';\nimport { unbundle } from '../util/unbundle_jsonlint';\nimport validateObject from './validate_object';\nimport validateEnum from './validate_enum';\nimport validateExpression from './validate_expression';\n\nexport default function validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type);\n let errors;\n\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec\n });\n return errors;\n\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n\n case 'canvas':\n return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')];\n\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: {values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']},\n style,\n styleSpec\n });\n }\n}\n","\nimport ValidationError from '../error/validation_error';\nimport getType from '../util/get_type';\nimport validate from './validate';\n\nexport default function validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","\nimport getType from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nexport default function validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n\n return [];\n}\n","// @flow\nimport validateExpression from './validate_expression';\nimport validateString from './validate_string';\n\nexport default function validateFormatted(options: any) {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","\nimport extend from '../util/extend';\nimport { unbundle, deepUnbundle } from '../util/unbundle_jsonlint';\nimport { isExpression } from '../expression';\nimport { isFunction } from '../function';\n\nimport validateFunction from './validate_function';\nimport validateExpression from './validate_expression';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateBoolean from './validate_boolean';\nimport validateNumber from './validate_number';\nimport validateColor from './validate_color';\nimport validateConstants from './validate_constants';\nimport validateEnum from './validate_enum';\nimport validateFilter from './validate_filter';\nimport validateLayer from './validate_layer';\nimport validateSource from './validate_source';\nimport validateLight from './validate_light';\nimport validateString from './validate_string';\nimport validateFormatted from './validate_formatted';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'string': validateString,\n 'formatted': validateFormatted\n};\n\n// Main recursive validation function. Tracks:\n//\n// - key: string representing location of validation in style tree. Used only\n// for more informative error reporting.\n// - value: current value from style being evaluated. May be anything from a\n// high level object that needs to be descended into deeper or a simple\n// scalar value.\n// - valueSpec: current spec being evaluated. Tracks value.\n// - styleSpec: current full spec being evaluated.\n\nexport default function validate(options) {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n\n if (valueSpec.expression && isFunction(unbundle(value))) {\n return validateFunction(options);\n\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n\n } else {\n const valid = validateObject(extend({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n","\nimport ValidationError from '../error/validation_error';\nimport validateString from './validate_string';\n\nexport default function(options) {\n const value = options.value;\n const key = options.key;\n\n const errors = validateString(options);\n if (errors.length) return errors;\n\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","\nimport validateConstants from './validate/validate_constants';\nimport validate from './validate/validate';\nimport latestStyleSpec from './reference/latest';\nimport validateGlyphsURL from './validate/validate_glyphs_url';\n\nimport validateSource from './validate/validate_source';\nimport validateLight from './validate/validate_light';\nimport validateLayer from './validate/validate_layer';\nimport validateFilter from './validate/validate_filter';\nimport validatePaintProperty from './validate/validate_paint_property';\nimport validateLayoutProperty from './validate/validate_layout_property';\n\n/**\n * Validate a Mapbox GL style against the style specification. This entrypoint,\n * `mapbox-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array<ValidationError>}\n * @example\n * var validate = require('mapbox-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nfunction validateStyleMin(style, styleSpec) {\n styleSpec = styleSpec || latestStyleSpec;\n\n let errors = [];\n\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*'() {\n return [];\n }\n }\n }));\n\n if (style.constants) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style.constants,\n style,\n styleSpec\n }));\n }\n\n return sortErrors(errors);\n}\n\nvalidateStyleMin.source = wrapCleanErrors(validateSource);\nvalidateStyleMin.light = wrapCleanErrors(validateLight);\nvalidateStyleMin.layer = wrapCleanErrors(validateLayer);\nvalidateStyleMin.filter = wrapCleanErrors(validateFilter);\nvalidateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\nvalidateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\n\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\n\nfunction wrapCleanErrors(inner) {\n return function(...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n\nexport default validateStyleMin;\n","/* parser generated by jison 0.4.15 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\nproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 3:\n\n this.$ = null;\n \nbreak;\ncase 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 6:\nreturn this.$ = $$[$0-1];\nbreak;\ncase 13:\nthis.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 14: case 19:\nthis.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0]];\nbreak;\ncase 16:\nthis.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\nbreak;\ncase 17:\nthis.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\nbreak;\ncase 18:\nthis.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 20:\nthis.$ = [$$[$0]];\nbreak;\ncase 21:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\ndefaultActions: {16:[2,6]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 6\nbreak;\ncase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\nbreak;\ncase 3:return 17\nbreak;\ncase 4:return 18\nbreak;\ncase 5:return 23\nbreak;\ncase 6:return 24\nbreak;\ncase 7:return 22\nbreak;\ncase 8:return 21\nbreak;\ncase 9:return 10\nbreak;\ncase 10:return 11\nbreak;\ncase 11:return 8\nbreak;\ncase 12:return 14\nbreak;\ncase 13:return 'INVALID'\nbreak;\n}\n},\nrules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\n}\n","\nimport validateStyleMin from './validate_style.min';\nimport ParsingError from './error/parsing_error';\nimport jsonlint from '@mapbox/jsonlint-lines-primitives';\nimport {v8} from './style-spec';\n\n/**\n * Validate a Mapbox GL style against the style specification.\n *\n * @private\n * @alias validate\n * @param {Object|String|Buffer} style The style to be validated. If a `String`\n * or `Buffer` is provided, the returned errors will contain line numbers.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the spec version is inferred from the stylesheet.\n * @returns {Array<ValidationError|ParsingError>}\n * @example\n * var validate = require('mapbox-gl-style-spec').validate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * var errors = validate(style);\n */\n\nexport default function validateStyle(style, styleSpec) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n style = jsonlint.parse(style.toString());\n } catch (e) {\n return [new ParsingError(e)];\n }\n }\n\n styleSpec = styleSpec || v8;\n\n return validateStyleMin(style, styleSpec);\n}\n\nexport const source = validateStyleMin.source;\nexport const light = validateStyleMin.light;\nexport const layer = validateStyleMin.layer;\nexport const filter = validateStyleMin.filter;\nexport const paintProperty = validateStyleMin.paintProperty;\nexport const layoutProperty = validateStyleMin.layoutProperty;\n","// @flow\n\ntype ExpressionType = 'data-driven' | 'cross-faded' | 'cross-faded-data-driven' | 'color-ramp' | 'data-constant' | 'constant';\ntype ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress'>;\n\ntype ExpressionSpecification = {\n interpolated: boolean,\n parameters: ExpressionParameters\n}\n\nexport type StylePropertySpecification = {\n type: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: number\n} | {\n type: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n tokens?: boolean\n} | {\n type: 'boolean',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: boolean\n} | {\n type: 'enum',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n values: {[string]: {}},\n transition: boolean,\n default?: string\n} | {\n type: 'color',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n overridable: boolean\n} | {\n type: 'array',\n value: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array<number>\n} | {\n type: 'array',\n value: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array<string>\n};\n\nimport v8 from './reference/v8.json';\nimport latest from './reference/latest';\nimport format from './format';\nimport migrate from './migrate';\nimport composite from './composite';\nimport diff from './diff';\nimport ValidationError from './error/validation_error';\nimport ParsingError from './error/parsing_error';\nimport { StyleExpression, isExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction } from './expression';\nimport featureFilter from './feature_filter';\nimport convertFilter from './feature_filter/convert';\nimport Color from './util/color';\nimport { createFunction, isFunction } from './function';\nimport convertFunction from './function/convert';\nimport { eachSource, eachLayer, eachProperty } from './visit';\n\nimport validate from './validate_style';\n\nconst expression = {\n StyleExpression,\n isExpression,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\n\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\n\nconst visit = { eachSource, eachLayer, eachProperty };\n\nexport {\n v8,\n latest,\n format,\n migrate,\n composite,\n diff,\n ValidationError,\n ParsingError,\n expression,\n featureFilter,\n convertFilter,\n Color,\n styleFunction as function,\n validate,\n visit\n};\n\nvalidate.parsed = validate;\nvalidate.latest = validate;\n"],"names":["sortKeysBy","obj","reference","const","result","key","undefined","format","style","space","$root","layers","map","layer","stringifyPretty","indent","global","this","require$$0","require$$1","getPropertyReference","propertyName","let","i","Reference","layout","length","paint","eachSource","callback","k","sources","eachLayer","eachProperty","options","inner","propertyType","properties","Object","keys","forEach","path","id","value","set","x","eachLayout","indexOf","eachPaint","resolveConstant","constants","isFunction","Array","isArray","stops","renameProperty","from","to","version","source","type","url","coordinates","coord","reverse","property","stop","migrateFontstackURL","input","inputParsed","URL","parse","inputPathnameParts","pathname","split","protocol","hostname","glyphs","migrateFontStack","font","splitAndTrim","string","s","trim","Error","firstSymbolLayer","symbolLayers","splice","concat","output","inputs","ParsingError","message","super","Scope","parent","bindings","ref","name","expression","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","array","itemType","N","toString","valueMemberTypes","checkSubtype","expected","t","memberType","Color","r","g","b","a","rgba","parseCSSColor","toArray","Math","round","black","white","transparent","red","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","scale","fontStack","textColor","Formatted","sections","fromString","unformatted","section","join","serialize","serialized","push","validateRGBA","isValue","mixed","item","typeOf","String","JSON","stringify","Literal","args","context","error","expectedType","evaluate","eachChild","possibleOutputs","RuntimeError","toJSON","types","number","boolean","object","Assertion","floor","parsed","ctx","fn","arg","FormatExpression","Coercion","Boolean","c","parseColor","num","Number","isNaN","valueToString","child","geometryTypes","EvaluationContext","globals","feature","featureState","formattedSection","_parseColorCache","geometryType","cached","CompoundExpression","_evaluate","op","definition","definitions","availableOverloads","overloads","filter","signature","signatureContext","ParsingContext","registry","scope","parsedArgs","argParseFailed","params","errors","ref$1","signatures","stringifySignature","actualTypes","register","CollatorExpression","isFeatureConstant","e","test","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","part","expr","index","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lastIndex","lowerIndex","upperIndex","currentIndex","currentValue","nextValue","Step","labels","outputs","label","outputType","Infinity","labelKey","valueKey","stopCount","color","d","Xn","Yn","Zn","t0","t1","t2","t3","deg2rad","PI","rad2deg","xyz2lab","pow","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","l","y","z","alpha","labToRgb","labColor","interpolateLab","interpolateNumber","rgbToHcl","h","atan2","sqrt","hclToRgb","hclColor","cos","sin","interpolateHue","interpolateHcl","lab","forward","interpolate","hcl","Interpolate","operator","interpolation","interpolationFactor","lower","upper","exponentialInterpolation","base","controlPoints","ub","UnitBezier","solve","slice","some","rest","outputLower","outputUpper","toLowerCase","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","Let","binding","At","Match","inputType","cases","otherwise","labelContext","abs","MAX_SAFE_INTEGER","out","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","isComparableType","eq","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","hasUntypedArgument","Comparison","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","v","binarySearch","j","m","varargs","typeToString","zoom","heatmapDensity","lineProgress","accumulated","LN2","E","log","n","LN10","tan","asin","acos","atan","min","max","ceil","isSupportedScript","toUpperCase","success","supportsPropertyExpression","spec","supportsZoomExpression","parameters","supportsInterpolation","interpolated","getType","val","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","featureDependent","zoomDependent","extend","default","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","create","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","bind","_","coalesce","keyType","evaluated","interp","colorspace","evaluatedLower","apply","evaluatedUpper","values","StyleExpression","_warningHistory","_evaluator","_defaultValue","getDefaultValue","_enumValues","evaluateWithoutErrorHandling","console","warn","isExpression","createExpression","parser","getExpectedType","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","isZoomConstant","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","deserialize","normalizePropertyExpression","err","constant","childResult","enum","formatted","convertLiteral","convertFunction","convertIdentityFunction","tokens","convertTokenString","convertZoomAndPropertyFunction","convertZoomFunction","convertPropertyFunction","getInterpolateOperator","featureFunctionParameters","functionType","getFunctionType","appendStopPair","fixupDegenerateStepCurve","isStep","curve","re","pos","match","exec","literal","isExpressionFilter","f","filterSpec","createFilter","convertFilter","compiled","globalProperties","converted","convertComparisonOp","convertNegation","convertDisjunctionOp","convertInOp","convertHasOp","filters","_convertFilter","expectedTypes","children","typechecks","runtimeTypeChecks","conditions","negate","uniformTypes","uniqueValues","migrated","migrateToV8","migrateToExpressions","styleIDs","sourceIDs","compositedSourceLayers","compositeID","deepEqual","operations","setStyle","addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTransition","setLight","sourceId","after","commands","command","sourcesRemoved","updateSource","canUpdateGeoJSON","before","prop","hasOwnProperty","isEqual","diffSources","data","diffLayerPropertyChanges","layerId","klass","pluckId","indexById","group","diffLayers","beforeOrder","afterOrder","beforeIndex","reduce","afterIndex","tracker","clean","beforeLayer","afterLayer","insertBeforeLayerId","lastIndexOf","minzoom","maxzoom","diffStyles","center","bearing","pitch","sprite","transition","light","removeOrAddSourceCommands","beforeLayers","ValidationError","identifier","__line__","line","parseInt","validateConstants","isPrimitive","unbundle","valueOf","deepUnbundle","unbundledValue","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","$version","function","arrayIndex","validateNumber","minimum","maximum","validateFunction","functionValueSpec","stopKeyType","stopDomainValues","previousStopDomainValue","previousStopDomainZoom","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStops","validateFunctionDefault","validateFunctionStop","validateStopDomainValue","reportValue","isFinite","validateExpression","expressionContext","expressionObj","propertyKey","validateBoolean","validateColor","validateEnum","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","layerType","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","p","sourceType","lineMetrics","validateSource","replace","source_geojson","cluster","clusterProperties","reduceExpr","mapExpr","source_video","source_image","validateLight","lightSpec","rootType","validateString","validateFormatted","VALIDATORS","valid","validateStyleMin","latestStyleSpec","validateGlyphsURL","sortErrors","wrapCleanErrors","paintProperty","layoutProperty","require","validateStyle","Buffer","jsonlint","v8","styleFunction","visit","latest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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G,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACrwB,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1B,UAAU,EAAE,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;MACvC,IAAI,IAAI,CAAC,WAAW,EAAE;UAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OACnB,MAAM;UACH,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;OACxB;GACJ;EACD,KAAK,EAAE,SAAS,KAAK,CAAC,KAAK,EAAE;MACzB,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,AAAa,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,AAAgB,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;MACxK,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;MAC3C,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACtC,IAAI,WAAW,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;MAC7B,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;UACnB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;cAClD,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;WAClC;OACJ;MACD,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;MACtC,WAAW,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;MAC7B,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;MAC7B,IAAI,OAAO,KAAK,CAAC,MAAM,IAAI,WAAW,EAAE;UACpC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;OACrB;MACD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;MACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACnB,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;MACnD,IAAI,OAAO,WAAW,CAAC,EAAE,CAAC,UAAU,KAAK,UAAU,EAAE;UACjD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC;OAC/C,MAAM;UACH,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;OAC5D;;UAOG,SAAS,GAAG,GAAG;cACX,IAAI,KAAK,CAAC;cACV,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;cAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;kBAC3B,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;eACzC;cACD,OAAO,KAAK,CAAC;WAChB;MACL,IAAI,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,AAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC;MACxF,OAAO,IAAI,EAAE;UACT,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;UAChC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;cAC5B,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;WACvC,MAAM;cACH,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE;kBACjD,MAAM,GAAG,GAAG,EAAE,CAAC;eAClB;cACD,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;WACjD;sBACW,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;kBACvE,IAAI,MAAM,GAAG,EAAE,CAAC;kBAChB,QAAQ,GAAG,EAAE,CAAC;kBACd,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;sBACpB,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;0BAClC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;uBACnD;mBACJ;kBACD,IAAI,KAAK,CAAC,YAAY,EAAE;sBACpB,MAAM,GAAG,sBAAsB,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,GAAG,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC;mBACpL,MAAM;sBACH,MAAM,GAAG,sBAAsB,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,eAAe,IAAI,MAAM,IAAI,GAAG,GAAG,cAAc,GAAG,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;mBAC7J;kBACD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;sBACpB,IAAI,EAAE,KAAK,CAAC,KAAK;sBACjB,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM;sBACxC,IAAI,EAAE,KAAK,CAAC,QAAQ;sBACpB,GAAG,EAAE,KAAK;sBACV,QAAQ,EAAE,QAAQ;mBACrB,CAAC,CAAC;eACN;UACL,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;cACjD,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,KAAK,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC;WACvG;UACD,QAAQ,MAAM,CAAC,CAAC,CAAC;UACjB,KAAK,CAAC;cACF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;cACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;cAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;cAC1B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;cACtB,MAAM,GAAG,IAAI,CAAC;cACd,IAAI,CAAC,cAAc,EAAE;kBACjB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;kBACtB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;kBACtB,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;kBAC1B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;eAIxB,MAAM;kBACH,MAAM,GAAG,cAAc,CAAC;kBACxB,cAAc,GAAG,IAAI,CAAC;eACzB;cACD,MAAM;UACV,KAAK,CAAC;cACF,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cACtC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;cACtC,KAAK,CAAC,EAAE,GAAG;kBACP,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU;kBACzD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;kBAC9C,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY;kBAC7D,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW;eACrD,CAAC;cACF,IAAI,MAAM,EAAE;kBACR,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG;sBACb,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;sBAC3C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;mBACrC,CAAC;eACL;cACD,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE;kBAChC,MAAM;kBACN,MAAM;kBACN,QAAQ;kBACR,WAAW,CAAC,EAAE;kBACd,MAAM,CAAC,CAAC,CAAC;kBACT,MAAM;kBACN,MAAM;eACT,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;cAChB,IAAI,OAAO,CAAC,KAAK,WAAW,EAAE;kBAC1B,OAAO,CAAC,CAAC;eACZ;cACD,IAAI,GAAG,EAAE;kBACL,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;kBACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;kBACnC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;eACtC;cACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;cACrB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;cACtB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;cACnE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;cACrB,MAAM;UACV,KAAK,CAAC;cACF,OAAO,IAAI,CAAC;WACf;OACJ;MACD,OAAO,IAAI,CAAC;GACf,CAAC,CAAC;;EAEH,IAAI,KAAK,GAAG,CAAC,UAAU;EACvB,IAAI,KAAK,IAAI;;EAEb,GAAG,CAAC,CAAC;;EAEL,UAAU,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;UAClC,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;cAChB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;WACxC,MAAM;cACH,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;WACxB;OACJ;;;EAGL,QAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE;UACtB,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;UAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;UACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;UACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;UAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;UAC7C,IAAI,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC;UAClC,IAAI,CAAC,MAAM,GAAG;cACV,UAAU,EAAE,CAAC;cACb,YAAY,EAAE,CAAC;cACf,SAAS,EAAE,CAAC;cACZ,WAAW,EAAE,CAAC;WACjB,CAAC;UACF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;cACrB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;WAC7B;UACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;UAChB,OAAO,IAAI,CAAC;OACf;;;EAGL,KAAK,CAAC,YAAY;UACV,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxB,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;UAClB,IAAI,CAAC,MAAM,EAAE,CAAC;UACd,IAAI,CAAC,MAAM,EAAE,CAAC;UACd,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;UACjB,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;UACnB,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;UACxC,IAAI,KAAK,EAAE;cACP,IAAI,CAAC,QAAQ,EAAE,CAAC;cAChB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;WAC3B,MAAM;cACH,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;WAC7B;UACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;cACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;WAC1B;;UAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;UACnC,OAAO,EAAE,CAAC;OACb;;;EAGL,KAAK,CAAC,UAAU,EAAE,EAAE;UACZ,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;UACpB,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;;UAEtC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;UAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;;UAE9D,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;UACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;UACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;UACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;UAE/D,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;cAClB,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;WACrC;UACD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;UAE1B,IAAI,CAAC,MAAM,GAAG;cACV,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;cAClC,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;cAC5B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;cACtC,WAAW,EAAE,KAAK;kBACd,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC;qBAC7D,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACtE,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG;WACnC,CAAC;;UAEF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;cACrB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;WACxD;UACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;UACjC,OAAO,IAAI,CAAC;OACf;;;EAGL,IAAI,CAAC,YAAY;UACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;UAClB,OAAO,IAAI,CAAC;OACf;;;EAGL,MAAM,CAAC,YAAY;UACX,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;cAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;WAC1B,MAAM;cACH,OAAO,IAAI,CAAC,UAAU,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,kIAAkI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;kBAC9N,IAAI,EAAE,EAAE;kBACR,KAAK,EAAE,IAAI;kBACX,IAAI,EAAE,IAAI,CAAC,QAAQ;eACtB,CAAC,CAAC;;WAEN;UACD,OAAO,IAAI,CAAC;OACf;;;EAGL,IAAI,CAAC,UAAU,CAAC,EAAE;UACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;OACnC;;;EAGL,SAAS,CAAC,YAAY;UACd,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;UAC3E,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OAC9E;;;EAGL,aAAa,CAAC,YAAY;UAClB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;UACtB,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;cAClB,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;WACjD;UACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;OACnF;;;EAGL,YAAY,CAAC,YAAY;UACjB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;UAC3B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;UAC5C,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC;OACtD;;;EAGL,UAAU,CAAC,UAAU,KAAK,EAAE,YAAY,EAAE;UAClC,IAAI,KAAK;cACL,KAAK;cACL,MAAM,CAAC;;UAEX,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;;cAE9B,MAAM,GAAG;kBACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;kBACvB,MAAM,EAAE;sBACJ,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;sBAClC,SAAS,EAAE,IAAI,CAAC,SAAS;sBACzB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;sBACtC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;mBACvC;kBACD,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;kBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;kBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;kBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;kBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;kBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;kBACX,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;kBAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;eAClB,CAAC;cACF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;kBACrB,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;eACpD;WACJ;;UAED,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;UAC1C,IAAI,KAAK,EAAE;cACP,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;WACjC;UACD,IAAI,CAAC,MAAM,GAAG;cACV,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;cACjC,SAAS,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;cAC5B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;cACrC,WAAW,EAAE,KAAK;2BACL,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;2BAClF,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;WACzD,CAAC;UACF,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;UACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;UACjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;cACrB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;WACjE;UACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;UACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;UACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;UACjD,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACzB,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;UACxH,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;cAC1B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;WACrB;UACD,IAAI,KAAK,EAAE;cACP,OAAO,KAAK,CAAC;WAChB,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;;cAExB,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;kBAClB,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;eACvB;cACD,OAAO,KAAK,CAAC;WAChB;UACD,OAAO,KAAK,CAAC;OAChB;;;EAGL,IAAI,CAAC,YAAY;UACT,IAAI,IAAI,CAAC,IAAI,EAAE;cACX,OAAO,IAAI,CAAC,GAAG,CAAC;WACnB;UACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;cACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;WACpB;;UAED,IAAI,KAAK;cACL,KAAK;cACL,SAAS;cACT,KAAK,CAAC;UACV,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;cACb,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;cACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;WACnB;UACD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;UACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;cACnC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;cACpD,IAAI,SAAS,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;kBAChE,KAAK,GAAG,SAAS,CAAC;kBAClB,KAAK,GAAG,CAAC,CAAC;kBACV,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;sBAC9B,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;sBAC7C,IAAI,KAAK,KAAK,KAAK,EAAE;0BACjB,OAAO,KAAK,CAAC;uBAChB,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;0BACxB,KAAK,GAAG,KAAK,CAAC;0BACd,SAAS;uBACZ,MAAM;;0BAEH,OAAO,KAAK,CAAC;uBAChB;mBACJ,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;sBAC3B,MAAM;mBACT;eACJ;WACJ;UACD,IAAI,KAAK,EAAE;cACP,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;cAC7C,IAAI,KAAK,KAAK,KAAK,EAAE;kBACjB,OAAO,KAAK,CAAC;eAChB;;cAED,OAAO,KAAK,CAAC;WAChB;UACD,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;cACpB,OAAO,IAAI,CAAC,GAAG,CAAC;WACnB,MAAM;cACH,OAAO,IAAI,CAAC,UAAU,CAAC,wBAAwB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,wBAAwB,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;kBACpH,IAAI,EAAE,EAAE;kBACR,KAAK,EAAE,IAAI;kBACX,IAAI,EAAE,IAAI,CAAC,QAAQ;eACtB,CAAC,CAAC;WACN;OACJ;;;EAGL,GAAG,CAAC,SAAS,GAAG,GAAG;UACX,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;UACpB,IAAI,CAAC,EAAE;cACH,OAAO,CAAC,CAAC;WACZ,MAAM;cACH,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;WACrB;OACJ;;;EAGL,KAAK,CAAC,SAAS,KAAK,CAAC,SAAS,EAAE;UACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;OACvC;;;EAGL,QAAQ,CAAC,SAAS,QAAQ,GAAG;UACrB,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;UACvC,IAAI,CAAC,GAAG,CAAC,EAAE;cACP,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;WACpC,MAAM;cACH,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;WACjC;OACJ;;;EAGL,aAAa,CAAC,SAAS,aAAa,GAAG;UAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;cACnF,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;WACrF,MAAM;cACH,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;WAC3C;OACJ;;;EAGL,QAAQ,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;UACtB,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;UACtD,IAAI,CAAC,IAAI,CAAC,EAAE;cACR,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;WACjC,MAAM;cACH,OAAO,SAAS,CAAC;WACpB;OACJ;;;EAGL,SAAS,CAAC,SAAS,SAAS,CAAC,SAAS,EAAE;UAChC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;OACzB;;;EAGL,cAAc,CAAC,SAAS,cAAc,GAAG;UACjC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;OACrC;EACL,OAAO,EAAE,EAAE;EACX,aAAa,EAAE,SAAS,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,QAAQ,EAAE;AAC7E,EACA,OAAO,yBAAyB;EAChC,KAAK,CAAC;EACN,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,CAAC;EACf,MAAM;EACN,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;EAC/D,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,CAAC,CAAC,OAAO,EAAE;EAChB,MAAM;EACN,KAAK,EAAE,CAAC,OAAO,EAAE;EACjB,MAAM;EACN,KAAK,EAAE,CAAC,OAAO,CAAC;EAChB,MAAM;EACN,KAAK,EAAE,CAAC,OAAO,EAAE;EACjB,MAAM;EACN,KAAK,EAAE,CAAC,OAAO,SAAS;EACxB,MAAM;GACL;GACA;EACD,KAAK,EAAE,CAAC,UAAU,CAAC,6DAA6D,CAAC,oEAAoE,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;EAC7Q,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACnF,CAAC,CAAC;EACH,OAAO,KAAK,CAAC;GACZ,GAAG,CAAC;EACL,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;EACrB,SAAS,MAAM,IAAI;IACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;GACd;EACD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;EACjD,OAAO,IAAI,MAAM,CAAC;GACjB,GAAG,CAAC;;;EAGL,IAAI,OAAO2gB,eAAO,KAAK,WAAW,IAAI,QAAc,KAAK,WAAW,EAAE;EACtE,cAAc,GAAG,MAAM,CAAC;EACxB,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;EAC/B,aAAa,GAAG,YAAY,EAAE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;GAC7E;;;;;;EClpBc,SAASC,aAAT,CAAuBhrB,KAAvB,EAA8B+lB,SAA9B,EAAyC;EAAA,IACpD,IAAI/lB,KAAA,YAAiBgK,MAAjB,IAA2B,OAAOhK,KAAP,KAAiB,QAA5C,IAAwDA,KAAA,YAAiBirB,MAA7E,EAAqF;EAAA,QACjF,IAAI;EAAA,YACAjrB,KAAA,GAAQkrB,QAAA,CAASnnB,KAAT,CAAe/D,KAAA,CAAM4G,QAAN,EAAf,CAAR,CADA;EAAA,SAAJ,CAEE,OAAOsH,CAAP,EAAU;EAAA,YACR,OAAO,CAAC,IAAI/I,cAAJ,CAAiB+I,CAAjB,CAAD,CAAP,CADQ;EAAA,SAHqE;EAAA,KADjC;EAAA,IASpD6X,SAAA,GAAYA,SAAA,IAAaoF,EAAzB,CAToD;EAAA,IAWpD,OAAOX,gBAAA,CAAiBxqB,KAAjB,EAAwB+lB,SAAxB,CAAP,CAXoD;EAAA,CAtBxD;;MC+EMpgB,YAAA,GAAa;EAAA,qBACfkW,eADe;EAAA,kBAEfS,YAFe;EAAA,sBAGfC,gBAHe;EAAA,8BAIfO,wBAJe;EAAA,iCAKfS,2BALe;EAAA,4BAMfb,sBANe;EAAA,6BAOfG,uBAPe;EAAA,2BAQfK,qBARe;EAAA,CAAnBvd,CA/EA;AA0FAA,MAAMyrB,aAAA,GAAgB;EAAA,qBAClBtN,eADkB;EAAA,oBAElBlE,cAFkB;EAAA,gBAGlBjX,YAHkB;EAAA,CAAtBhD,CA1FA;AAgGAA,MAAM0rB,KAAA,GAAQ;EAAA,gBAAEjqB,UAAF;EAAA,eAAcI,SAAd;EAAA,kBAAyBC,YAAzB;EAAA,CAAd9B,CAhGA;AAkGA,AAkBA+mB,eAAA,CAASvb,MAAT,GAAkBub,aAAlB,CApHA;AAqHAA,eAAA,CAAS4E,MAAT,GAAkB5E,aAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;"} |