@formatjs/intl-numberformat 4.2.1 → 4.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +43 -0
- package/dist/polyfill-with-locales-for-test262.min.js +51 -30
- package/dist/polyfill-with-locales-for-test262.min.js.map +1 -1
- package/dist/umd/intl-numberformat.js +39 -30
- package/dist/umd/intl-numberformat.js.map +1 -1
- package/dist/umd/intl-numberformat.min.js +1 -1
- package/dist/umd/intl-numberformat.min.js.map +1 -1
- package/dist/umd/polyfill-with-locales.js +51 -30
- package/dist/umd/polyfill-with-locales.js.map +1 -1
- package/dist/umd/polyfill.js +39 -30
- package/dist/umd/polyfill.js.map +1 -1
- package/package.json +5 -5
- package/dist/currency-digits.json +0 -1
- package/dist/ilnd-numbers.json +0 -1
- package/dist/units-constants.d.ts +0 -2
- package/dist/units-constants.d.ts.map +0 -1
- package/dist/units-constants.js +0 -3
- package/dist/units-constants.js.map +0 -1
- package/lib/currency-digits.json +0 -1
- package/lib/ilnd-numbers.json +0 -1
- package/lib/units-constants.d.ts +0 -2
- package/lib/units-constants.d.ts.map +0 -1
- package/lib/units-constants.js +0 -1
- package/lib/units-constants.js.map +0 -1
- package/src/currency-digits.json +0 -1
- package/src/ilnd-numbers.json +0 -1
- package/src/units-constants.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intl-numberformat.min.js","sources":["../../../intl-utils/lib/invariant.js","../../../intl-utils/lib/polyfill-utils.js","../../../intl-utils/lib/units.js","../../../intl-utils/lib/resolve-locale.js","../../lib/format_to_parts.js","../../lib/get_internal_slots.js","../../lib/core.js","../../lib/index.js","../../lib/to_locale_string.js"],"sourcesContent":["export function invariant(condition, message, Err) {\n if (Err === void 0) { Err = Error; }\n if (!condition) {\n throw new Err(message);\n }\n}\n//# sourceMappingURL=invariant.js.map","import { invariant } from './invariant';\nimport { SANCTIONED_UNITS } from './units';\nexport function hasOwnProperty(o, key) {\n return Object.prototype.hasOwnProperty.call(o, key);\n}\n/**\n * https://tc39.es/ecma262/#sec-toobject\n * @param arg\n */\nexport function toObject(arg) {\n if (arg == null) {\n throw new TypeError('undefined/null cannot be converted to object');\n }\n return Object(arg);\n}\n/**\n * https://tc39.es/ecma262/#sec-tostring\n */\nexport function toString(o) {\n // Only symbol is irregular...\n if (typeof o === 'symbol') {\n throw TypeError('Cannot convert a Symbol value to a string');\n }\n return String(o);\n}\n/**\n * https://tc39.es/ecma402/#sec-getoption\n * @param opts\n * @param prop\n * @param type\n * @param values\n * @param fallback\n */\nexport function getOption(opts, prop, type, values, fallback) {\n // const descriptor = Object.getOwnPropertyDescriptor(opts, prop);\n var value = opts[prop];\n if (value !== undefined) {\n if (type !== 'boolean' && type !== 'string') {\n throw new TypeError('invalid type');\n }\n if (type === 'boolean') {\n value = Boolean(value);\n }\n if (type === 'string') {\n value = toString(value);\n }\n if (values !== undefined && !values.filter(function (val) { return val == value; }).length) {\n throw new RangeError(value + \" is not within \" + values.join(', '));\n }\n return value;\n }\n return fallback;\n}\n/**\n * https://tc39.es/ecma402/#sec-defaultnumberoption\n * @param val\n * @param min\n * @param max\n * @param fallback\n */\nexport function defaultNumberOption(val, min, max, fallback) {\n if (val !== undefined) {\n val = Number(val);\n if (isNaN(val) || val < min || val > max) {\n throw new RangeError(val + \" is outside of range [\" + min + \", \" + max + \"]\");\n }\n return Math.floor(val);\n }\n return fallback;\n}\n/**\n * https://tc39.es/ecma402/#sec-getnumberoption\n * @param options\n * @param property\n * @param min\n * @param max\n * @param fallback\n */\nexport function getNumberOption(options, property, minimum, maximum, fallback) {\n var val = options[property];\n return defaultNumberOption(val, minimum, maximum, fallback);\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(pl + \" InternalSlot has not been initialized\");\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\nexport function partitionPattern(pattern) {\n var result = [];\n var beginIndex = pattern.indexOf('{');\n var endIndex = 0;\n var nextIndex = 0;\n var length = pattern.length;\n while (beginIndex < pattern.length && beginIndex > -1) {\n endIndex = pattern.indexOf('}', beginIndex);\n invariant(endIndex > beginIndex, \"Invalid pattern \" + pattern);\n if (beginIndex > nextIndex) {\n result.push({\n type: 'literal',\n value: pattern.substring(nextIndex, beginIndex),\n });\n }\n result.push({\n type: pattern.substring(beginIndex + 1, endIndex),\n value: undefined,\n });\n nextIndex = endIndex + 1;\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n if (nextIndex < length) {\n result.push({\n type: 'literal',\n value: pattern.substring(nextIndex, length),\n });\n }\n return result;\n}\n/**\n * https://tc39.es/ecma402/#sec-setnfdigitoptions\n */\nexport function setNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) {\n var mnid = getNumberOption(opts, 'minimumIntegerDigits', 1, 21, 1);\n var mnfd = opts.minimumFractionDigits;\n var mxfd = opts.maximumFractionDigits;\n var mnsd = opts.minimumSignificantDigits;\n var mxsd = opts.maximumSignificantDigits;\n internalSlots.minimumIntegerDigits = mnid;\n if (mnsd !== undefined || mxsd !== undefined) {\n internalSlots.roundingType = 'significantDigits';\n mnsd = defaultNumberOption(mnsd, 1, 21, 1);\n mxsd = defaultNumberOption(mxsd, mnsd, 21, 21);\n internalSlots.minimumSignificantDigits = mnsd;\n internalSlots.maximumSignificantDigits = mxsd;\n }\n else if (mnfd !== undefined || mxfd !== undefined) {\n internalSlots.roundingType = 'fractionDigits';\n mnfd = defaultNumberOption(mnfd, 0, 20, mnfdDefault);\n var mxfdActualDefault = Math.max(mnfd, mxfdDefault);\n mxfd = defaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault);\n internalSlots.minimumFractionDigits = mnfd;\n internalSlots.maximumFractionDigits = mxfd;\n }\n else if (notation === 'compact') {\n internalSlots.roundingType = 'compactRounding';\n }\n else {\n internalSlots.roundingType = 'fractionDigits';\n internalSlots.minimumFractionDigits = mnfdDefault;\n internalSlots.maximumFractionDigits = mxfdDefault;\n }\n}\nexport function objectIs(x, y) {\n if (Object.is) {\n return Object.is(x, y);\n }\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n }\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n}\nvar NOT_A_Z_REGEX = /[^A-Z]/;\n/**\n * This follows https://tc39.es/ecma402/#sec-case-sensitivity-and-case-mapping\n * @param str string to convert\n */\nfunction toUpperCase(str) {\n return str.replace(/([a-z])/g, function (_, c) { return c.toUpperCase(); });\n}\n/**\n * https://tc39.es/ecma402/#sec-iswellformedcurrencycode\n */\nexport function isWellFormedCurrencyCode(currency) {\n currency = toUpperCase(currency);\n if (currency.length !== 3) {\n return false;\n }\n if (NOT_A_Z_REGEX.test(currency)) {\n return false;\n }\n return true;\n}\n/**\n * https://tc39.es/ecma402/#sec-formatnumberstring\n * TODO: dedup with intl-pluralrules\n */\nexport function formatNumericToString(internalSlots, x) {\n var isNegative = x < 0 || objectIs(x, -0);\n if (isNegative) {\n x = -x;\n }\n var result;\n var rourndingType = internalSlots.roundingType;\n switch (rourndingType) {\n case 'significantDigits':\n result = toRawPrecision(x, internalSlots.minimumSignificantDigits, internalSlots.maximumSignificantDigits);\n break;\n case 'fractionDigits':\n result = toRawFixed(x, internalSlots.minimumFractionDigits, internalSlots.maximumFractionDigits);\n break;\n default:\n result = toRawPrecision(x, 1, 2);\n if (result.integerDigitsCount > 1) {\n result = toRawFixed(x, 0, 0);\n }\n break;\n }\n x = result.roundedNumber;\n var string = result.formattedString;\n var int = result.integerDigitsCount;\n var minInteger = internalSlots.minimumIntegerDigits;\n if (int < minInteger) {\n var forwardZeros = repeat('0', minInteger - int);\n string = forwardZeros + string;\n }\n if (isNegative) {\n x = -x;\n }\n return { roundedNumber: x, formattedString: string };\n}\n/**\n * TODO: dedup with intl-pluralrules and support BigInt\n * https://tc39.es/ecma402/#sec-torawfixed\n * @param x a finite non-negative Number or BigInt\n * @param minFraction and integer between 0 and 20\n * @param maxFraction and integer between 0 and 20\n */\nexport function toRawFixed(x, minFraction, maxFraction) {\n var f = maxFraction;\n var n;\n {\n var exactSolve = x * Math.pow(10, f);\n var roundDown = Math.floor(exactSolve);\n var roundUp = Math.ceil(exactSolve);\n n = exactSolve - roundDown < roundUp - exactSolve ? roundDown : roundUp;\n }\n var xFinal = n / Math.pow(10, f);\n // n is a positive integer, but it is possible to be greater than 1e21.\n // In such case we will go the slow path.\n // See also: https://tc39.es/ecma262/#sec-numeric-types-number-tostring\n var m;\n if (n < 1e21) {\n m = n.toString();\n }\n else {\n m = n.toString();\n var idx1 = m.indexOf('.');\n var idx2 = m.indexOf('e+');\n var exponent = parseInt(m.substring(idx2 + 2), 10);\n m =\n m.substring(0, idx1) +\n m.substring(idx1 + 1, idx2) +\n repeat('0', exponent - (idx2 - idx1 - 1));\n }\n var int;\n if (f !== 0) {\n var k = m.length;\n if (k <= f) {\n var z = repeat('0', f + 1 - k);\n m = z + m;\n k = f + 1;\n }\n var a = m.slice(0, k - f);\n var b = m.slice(k - f);\n m = a + \".\" + b;\n int = a.length;\n }\n else {\n int = m.length;\n }\n var cut = maxFraction - minFraction;\n while (cut > 0 && m[m.length - 1] === '0') {\n m = m.slice(0, -1);\n cut--;\n }\n if (m[m.length - 1] === '.') {\n m = m.slice(0, -1);\n }\n return { formattedString: m, roundedNumber: xFinal, integerDigitsCount: int };\n}\n// https://tc39.es/ecma402/#sec-torawprecision\nexport function toRawPrecision(x, minPrecision, maxPrecision) {\n var p = maxPrecision;\n var m;\n var e;\n var xFinal;\n if (x === 0) {\n m = repeat('0', p);\n e = 0;\n xFinal = 0;\n }\n else {\n e = getMagnitude(x);\n var n = void 0;\n {\n var magnitude = e - p + 1;\n var exactSolve = \n // Preserve floating point precision as much as possible with multiplication.\n magnitude < 0 ? x * Math.pow(10, -magnitude) : x / Math.pow(10, magnitude);\n var roundDown = Math.floor(exactSolve);\n var roundUp = Math.ceil(exactSolve);\n n = exactSolve - roundDown < roundUp - exactSolve ? roundDown : roundUp;\n }\n // See: https://tc39.es/ecma262/#sec-numeric-types-number-tostring\n // No need to worry about scientific notation because it only happens for values >= 1e21,\n // which has 22 significant digits. So it will at least be divided by 10 here to bring the\n // value back into non-scientific-notation range.\n m = n.toString();\n xFinal = n * Math.pow(10, (e - p + 1));\n }\n var int;\n if (e >= p - 1) {\n m = m + repeat('0', e - p + 1);\n int = e + 1;\n }\n else if (e >= 0) {\n m = m.slice(0, e + 1) + \".\" + m.slice(e + 1);\n int = e + 1;\n }\n else {\n m = \"0.\" + repeat('0', -e - 1) + m;\n int = 1;\n }\n if (m.indexOf('.') >= 0 && maxPrecision > minPrecision) {\n var cut = maxPrecision - minPrecision;\n while (cut > 0 && m[m.length - 1] === '0') {\n m = m.slice(0, -1);\n cut--;\n }\n if (m[m.length - 1] === '.') {\n m = m.slice(0, -1);\n }\n }\n return { formattedString: m, roundedNumber: xFinal, integerDigitsCount: int };\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\n/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\n/**\n * This follows https://tc39.es/ecma402/#sec-case-sensitivity-and-case-mapping\n * @param str string to convert\n */\nfunction toLowerCase(str) {\n return str.replace(/([A-Z])/g, function (_, c) { return c.toLowerCase(); });\n}\nvar SHORTENED_SACTION_UNITS = SANCTIONED_UNITS.map(function (unit) {\n return unit.replace(/^(.*?)-/, '');\n});\n/**\n * https://tc39.es/ecma402/#sec-iswellformedunitidentifier\n * @param unit\n */\nexport function isWellFormedUnitIdentifier(unit) {\n unit = toLowerCase(unit);\n if (SHORTENED_SACTION_UNITS.indexOf(unit) > -1) {\n return true;\n }\n var units = unit.split('-per-');\n if (units.length !== 2) {\n return false;\n }\n if (SHORTENED_SACTION_UNITS.indexOf(units[0]) < 0 ||\n SHORTENED_SACTION_UNITS.indexOf(units[1]) < 0) {\n return false;\n }\n return true;\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value,\n });\n}\n//# sourceMappingURL=polyfill-utils.js.map","// https://tc39.es/ecma402/#sec-issanctionedsimpleunitidentifier\nexport var SANCTIONED_UNITS = [\n 'angle-degree',\n 'area-acre',\n 'area-hectare',\n 'concentr-percent',\n 'digital-bit',\n 'digital-byte',\n 'digital-gigabit',\n 'digital-gigabyte',\n 'digital-kilobit',\n 'digital-kilobyte',\n 'digital-megabit',\n 'digital-megabyte',\n 'digital-petabyte',\n 'digital-terabit',\n 'digital-terabyte',\n 'duration-day',\n 'duration-hour',\n 'duration-millisecond',\n 'duration-minute',\n 'duration-month',\n 'duration-second',\n 'duration-week',\n 'duration-year',\n 'length-centimeter',\n 'length-foot',\n 'length-inch',\n 'length-kilometer',\n 'length-meter',\n 'length-mile-scandinavian',\n 'length-mile',\n 'length-millimeter',\n 'length-yard',\n 'mass-gram',\n 'mass-kilogram',\n 'mass-ounce',\n 'mass-pound',\n 'mass-stone',\n 'temperature-celsius',\n 'temperature-fahrenheit',\n 'volume-fluid-ounce',\n 'volume-gallon',\n 'volume-liter',\n 'volume-milliliter',\n];\n// In CLDR, the unit name always follows the form `namespace-unit` pattern.\n// For example: `digital-bit` instead of `bit`. This function removes the namespace prefix.\nexport function removeUnitNamespace(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\n//# sourceMappingURL=units.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { invariant } from './invariant';\nimport { toObject, getOption } from './polyfill-utils';\nexport function createResolveLocale(getDefaultLocale) {\n var lookupMatcher = createLookupMatcher(getDefaultLocale);\n var bestFitMatcher = createBestFitMatcher(getDefaultLocale);\n /**\n * https://tc39.es/ecma402/#sec-resolvelocale\n */\n return function resolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n var matcher = options.localeMatcher;\n var r;\n if (matcher === 'lookup') {\n r = lookupMatcher(availableLocales, requestedLocales);\n }\n else {\n r = bestFitMatcher(availableLocales, requestedLocales);\n }\n var foundLocale = r.locale;\n var result = { locale: '', dataLocale: foundLocale };\n var supportedExtension = '-u';\n for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {\n var key = relevantExtensionKeys_1[_i];\n var foundLocaleData = localeData[foundLocale];\n invariant(typeof foundLocaleData === 'object' && foundLocaleData !== null, \"locale data \" + key + \" must be an object\");\n var keyLocaleData = foundLocaleData[key];\n invariant(Array.isArray(keyLocaleData), \"keyLocaleData for \" + key + \" must be an array\");\n var value = keyLocaleData[0];\n invariant(typeof value === 'string' || value === null, 'value must be string or null');\n var supportedExtensionAddition = '';\n if (r.extension) {\n var requestedValue = unicodeExtensionValue(r.extension, key);\n if (requestedValue !== undefined) {\n if (requestedValue !== '') {\n if (~keyLocaleData.indexOf(requestedValue)) {\n value = requestedValue;\n supportedExtensionAddition = \"-\" + key + \"-\" + value;\n }\n }\n else if (~requestedValue.indexOf('true')) {\n value = 'true';\n supportedExtensionAddition = \"-\" + key;\n }\n }\n }\n if (key in options) {\n var optionsValue = options[key];\n invariant(typeof optionsValue === 'string' ||\n typeof optionsValue === 'undefined' ||\n optionsValue === null, 'optionsValue must be String, Undefined or Null');\n if (~keyLocaleData.indexOf(optionsValue)) {\n if (optionsValue !== value) {\n value = optionsValue;\n supportedExtensionAddition = '';\n }\n }\n }\n result[key] = value;\n supportedExtension += supportedExtensionAddition;\n }\n if (supportedExtension.length > 2) {\n var privateIndex = foundLocale.indexOf('-x-');\n if (privateIndex === -1) {\n foundLocale = foundLocale + supportedExtension;\n }\n else {\n var preExtension = foundLocale.slice(0, privateIndex);\n var postExtension = foundLocale.slice(privateIndex, foundLocale.length);\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n foundLocale = Intl.getCanonicalLocales(foundLocale)[0];\n }\n result.locale = foundLocale;\n return result;\n };\n}\n/**\n * https://tc39.es/ecma402/#sec-unicodeextensionvalue\n * @param extension\n * @param key\n */\nfunction unicodeExtensionValue(extension, key) {\n invariant(key.length === 2, 'key must have 2 elements');\n var size = extension.length;\n var searchValue = \"-\" + key + \"-\";\n var pos = extension.indexOf(searchValue);\n if (pos !== -1) {\n var start = pos + 4;\n var end = start;\n var k = start;\n var done = false;\n while (!done) {\n var e = extension.indexOf('-', k);\n var len = void 0;\n if (e === -1) {\n len = size - k;\n }\n else {\n len = e - k;\n }\n if (len === 2) {\n done = true;\n }\n else if (e === -1) {\n end = size;\n done = true;\n }\n else {\n end = e;\n k = e + 1;\n }\n }\n return extension.slice(start, end);\n }\n searchValue = \"-\" + key;\n pos = extension.indexOf(searchValue);\n if (pos !== -1 && pos + 3 === size) {\n return '';\n }\n return undefined;\n}\nvar UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\n/**\n * https://tc39.es/ecma402/#sec-bestavailablelocale\n * @param availableLocales\n * @param locale\n */\nfunction bestAvailableLocale(availableLocales, locale) {\n var candidate = locale;\n while (true) {\n if (~availableLocales.indexOf(candidate)) {\n return candidate;\n }\n var pos = candidate.lastIndexOf('-');\n if (!~pos) {\n return undefined;\n }\n if (pos >= 2 && candidate[pos - 2] === '-') {\n pos -= 2;\n }\n candidate = candidate.slice(0, pos);\n }\n}\nfunction createLookupMatcher(getDefaultLocale) {\n /**\n * https://tc39.es/ecma402/#sec-lookupmatcher\n */\n return function lookupMatcher(availableLocales, requestedLocales) {\n var result = { locale: '' };\n for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {\n var locale = requestedLocales_1[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n result.locale = availableLocale;\n if (locale !== noExtensionLocale) {\n result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);\n }\n return result;\n }\n }\n result.locale = getDefaultLocale();\n return result;\n };\n}\nfunction createBestFitMatcher(getDefaultLocale) {\n return function bestFitMatcher(availableLocales, requestedLocales) {\n var result = { locale: '' };\n for (var _i = 0, requestedLocales_2 = requestedLocales; _i < requestedLocales_2.length; _i++) {\n var locale = requestedLocales_2[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n result.locale = availableLocale;\n if (locale !== noExtensionLocale) {\n result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);\n }\n return result;\n }\n }\n result.locale = getDefaultLocale();\n return result;\n };\n}\nexport function getLocaleHierarchy(locale) {\n var results = [locale];\n var localeParts = locale.split('-');\n for (var i = localeParts.length; i > 1; i--) {\n results.push(localeParts.slice(0, i - 1).join('-'));\n }\n return results;\n}\nfunction lookupSupportedLocales(availableLocales, requestedLocales) {\n var subset = [];\n for (var _i = 0, requestedLocales_3 = requestedLocales; _i < requestedLocales_3.length; _i++) {\n var locale = requestedLocales_3[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n subset.push(availableLocale);\n }\n }\n return subset;\n}\nexport function supportedLocales(availableLocales, requestedLocales, options) {\n var matcher = 'best fit';\n if (options !== undefined) {\n options = toObject(options);\n matcher = getOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');\n }\n if (matcher === 'best fit') {\n return lookupSupportedLocales(availableLocales, requestedLocales);\n }\n return lookupSupportedLocales(availableLocales, requestedLocales);\n}\nvar MissingLocaleDataError = /** @class */ (function (_super) {\n __extends(MissingLocaleDataError, _super);\n function MissingLocaleDataError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'MISSING_LOCALE_DATA';\n return _this;\n }\n return MissingLocaleDataError;\n}(Error));\nexport function isMissingLocaleDataError(e) {\n return e.type === 'MISSING_LOCALE_DATA';\n}\nexport function unpackData(locale, localeData, \n/** By default shallow merge the dictionaries. */\nreducer) {\n if (reducer === void 0) { reducer = function (all, d) { return (__assign(__assign({}, all), d)); }; }\n var localeHierarchy = getLocaleHierarchy(locale);\n var dataToMerge = localeHierarchy\n .map(function (l) { return localeData.data[l]; })\n .filter(Boolean);\n if (!dataToMerge.length) {\n throw new MissingLocaleDataError(\"Missing locale data for \\\"\" + locale + \"\\\", lookup hierarchy: \" + localeHierarchy.join(', '));\n }\n dataToMerge.reverse();\n return dataToMerge.reduce(reducer, {});\n}\n//# sourceMappingURL=resolve-locale.js.map","import { toRawFixed, } from '@formatjs/intl-utils';\nimport * as digitMapping from './data/digit-mapping.json';\n// This is from: unicode-12.1.0/General_Category/Symbol/regex.js\n// IE11 does not support unicode flag, otherwise this is just /\\p{S}/u.\nvar S_UNICODE_REGEX = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20BF\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BFF\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uFB29\\uFBB2-\\uFBC1\\uFDFC\\uFDFD\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD6C\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED5\\uDEE0-\\uDEEC\\uDEF0-\\uDEFA\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD00-\\uDD0B\\uDD0D-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95]/;\n// /^\\p{S}/u\nvar CARET_S_UNICODE_REGEX = new RegExp(\"^\" + S_UNICODE_REGEX.source);\n// /\\p{S}$/u\nvar S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + \"$\");\nvar CLDR_NUMBER_PATTERN = /[#0](?:[\\.,][#0]+)*/g;\nexport default function formatToParts(numberResult, data, pl, options) {\n var sign = numberResult.sign, exponent = numberResult.exponent, magnitude = numberResult.magnitude;\n var notation = options.notation, style = options.style, numberingSystem = options.numberingSystem;\n var defaultNumberingSystem = data.numbers.nu[0];\n // Part 1: partition and interpolate the CLDR number pattern.\n // ----------------------------------------------------------\n var compactNumberPattern = null;\n if (notation === 'compact' && magnitude) {\n compactNumberPattern = getCompactDisplayPattern(numberResult, pl, data, style, options.compactDisplay, options.currencyDisplay, numberingSystem);\n }\n // This is used multiple times\n var nonNameCurrencyPart;\n if (style === 'currency' && options.currencyDisplay !== 'name') {\n var byCurrencyDisplay = data.currencies[options.currency];\n if (byCurrencyDisplay) {\n switch (options.currencyDisplay) {\n case 'code':\n nonNameCurrencyPart = options.currency;\n break;\n case 'symbol':\n nonNameCurrencyPart = byCurrencyDisplay.symbol;\n break;\n default:\n nonNameCurrencyPart = byCurrencyDisplay.narrow;\n break;\n }\n }\n else {\n // Fallback for unknown currency\n nonNameCurrencyPart = options.currency;\n }\n }\n var numberPattern;\n if (!compactNumberPattern) {\n // Note: if the style is unit, or is currency and the currency display is name,\n // its unit parts will be interpolated in part 2. So here we can fallback to decimal.\n if (style === 'decimal' ||\n style === 'unit' ||\n (style === 'currency' && options.currencyDisplay === 'name')) {\n // Shortcut for decimal\n numberPattern = sign === 0 ? '0' : sign === -1 ? '-0' : '+0';\n }\n else if (style === 'currency') {\n var currencyData = data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem];\n // We replace number pattern part with `0` for easier postprocessing.\n numberPattern = getPatternForSign(currencyData[options.currencySign], sign).replace(CLDR_NUMBER_PATTERN, '0');\n }\n else {\n // percent\n var percentPattern = data.numbers.percent[numberingSystem] ||\n data.numbers.percent[defaultNumberingSystem];\n numberPattern = getPatternForSign(percentPattern, sign);\n }\n }\n else {\n numberPattern = compactNumberPattern;\n }\n // Handle currency spacing (both compact and non-compact).\n if (style === 'currency' && options.currencyDisplay !== 'name') {\n var currencyData = data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem];\n // See `currencySpacing` substitution rule in TR-35.\n // Here we always assume the currencyMatch is \"[:^S:]\" and surroundingMatch is \"[:digit:]\".\n //\n // Example 1: for pattern \"#,##0.00¤\" with symbol \"US$\", we replace \"¤\" with the symbol,\n // but insert an extra non-break space before the symbol, because \"[:^S:]\" matches \"U\" in\n // \"US$\" and \"[:digit:]\" matches the latn numbering system digits.\n //\n // Example 2: for pattern \"¤#,##0.00\" with symbol \"US$\", there is no spacing between symbol\n // a nd number, because `$` does not match \"[:^S:]\".\n //\n // Implementation note: here we do the best effort to infer the insertion.\n // We also assume that `beforeInsertBetween` and `afterInsertBetween` will never be `;`.\n var afterCurrency = currencyData.currencySpacing.afterInsertBetween;\n if (afterCurrency && !S_DOLLAR_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n numberPattern = numberPattern.replace('¤0', \"\\u00A4\" + afterCurrency + \"0\");\n }\n var beforeCurrency = currencyData.currencySpacing.beforeInsertBetween;\n if (beforeCurrency && !CARET_S_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n numberPattern = numberPattern.replace('0¤', \"0\" + beforeCurrency + \"\\u00A4\");\n }\n }\n // Now we start to substitute patterns\n // 1. replace strings like `0` and `#,##0.00` with `{0}`\n // 2. unquote characters (invariant: the quoted characters does not contain the special tokens)\n numberPattern = numberPattern\n .replace(CLDR_NUMBER_PATTERN, '{0}')\n .replace(/'(.)'/g, '$1');\n // The following tokens are special: `{0}`, `¤`, `%`, `-`, `+`, `{c:...}.\n var numberPatternParts = numberPattern.split(/({c:[^}]+}|\\{0\\}|[¤%\\-\\+])/g);\n var numberParts = [];\n var symbols = data.numbers.symbols[numberingSystem] ||\n data.numbers.symbols[defaultNumberingSystem];\n for (var _i = 0, numberPatternParts_1 = numberPatternParts; _i < numberPatternParts_1.length; _i++) {\n var part = numberPatternParts_1[_i];\n if (!part) {\n continue;\n }\n switch (part) {\n case '{0}': {\n // We only need to handle scientific and engineering notation here.\n numberParts.push.apply(numberParts, paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, \n // If compact number pattern exists, do not insert group separators.\n !compactNumberPattern && options.useGrouping));\n break;\n }\n case '-':\n numberParts.push({ type: 'minusSign', value: symbols.minusSign });\n break;\n case '+':\n numberParts.push({ type: 'plusSign', value: symbols.plusSign });\n break;\n case '%':\n numberParts.push({ type: 'percentSign', value: symbols.percentSign });\n break;\n case '¤':\n // Computed above when handling currency spacing.\n numberParts.push({ type: 'currency', value: nonNameCurrencyPart });\n break;\n default:\n if (/^\\{c:/.test(part)) {\n numberParts.push({\n type: 'compact',\n value: part.substring(3, part.length - 1),\n });\n }\n else {\n // literal\n numberParts.push({ type: 'literal', value: part });\n }\n break;\n }\n }\n // Part 2: interpolate unit pattern if necessary.\n // ----------------------------------------------\n switch (style) {\n case 'currency': {\n // `currencyDisplay: 'name'` has similar pattern handling as units.\n if (options.currencyDisplay === 'name') {\n var unitPattern = (data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem]).unitPattern;\n // Select plural\n var unitName = void 0;\n var currencyNameData = data.currencies[options.currency];\n if (currencyNameData) {\n unitName = selectPlural(pl, \n // NOTE: Google Chrome's Intl.NumberFormat uses the original number to determine the plurality,\n // but the mantissa for unit. We think this is a bug in ICU, but will still replicate the behavior.\n // TODO: use original number.\n numberResult.roundedNumber * Math.pow(10, exponent), currencyNameData.displayName);\n }\n else {\n // Fallback for unknown currency\n unitName = options.currency;\n }\n // Do {0} and {1} substitution\n var unitPatternParts = unitPattern.split(/(\\{[01]\\})/g);\n var result = [];\n for (var _a = 0, unitPatternParts_1 = unitPatternParts; _a < unitPatternParts_1.length; _a++) {\n var part = unitPatternParts_1[_a];\n switch (part) {\n case '{0}':\n result.push.apply(result, numberParts);\n break;\n case '{1}':\n result.push({ type: 'currency', value: unitName });\n break;\n default:\n if (part) {\n result.push({ type: 'literal', value: part });\n }\n break;\n }\n }\n return result;\n }\n else {\n return numberParts;\n }\n }\n case 'unit': {\n var unit = options.unit, unitDisplay = options.unitDisplay;\n var unitData = data.units.simple[unit];\n var unitPattern = void 0;\n if (unitData) {\n // Simple unit pattern\n unitPattern = selectPlural(pl, numberResult.roundedNumber, data.units.simple[unit][unitDisplay]);\n }\n else {\n // See: http://unicode.org/reports/tr35/tr35-general.html#perUnitPatterns\n // If cannot find unit in the simple pattern, it must be \"per\" compound pattern.\n // Implementation note: we are not following TR-35 here because we need to format to parts!\n var _b = unit.split('-per-'), numeratorUnit = _b[0], denominatorUnit = _b[1];\n unitData = data.units.simple[numeratorUnit];\n var numeratorUnitPattern = selectPlural(pl, numberResult.roundedNumber, data.units.simple[numeratorUnit][unitDisplay]);\n var perUnitPattern = data.units.simple[denominatorUnit].perUnit[unitDisplay];\n if (perUnitPattern) {\n // perUnitPattern exists, combine it with numeratorUnitPattern\n unitPattern = perUnitPattern.replace('{0}', numeratorUnitPattern);\n }\n else {\n // get compoundUnit pattern (e.g. \"{0} per {1}\"), repalce {0} with numerator pattern and {1} with\n // the denominator pattern in singular form.\n var perPattern = data.units.compound.per[unitDisplay];\n var denominatorPattern = selectPlural(pl, 1, data.units.simple[denominatorUnit][unitDisplay]);\n unitPattern = unitPattern = perPattern\n .replace('{0}', numeratorUnitPattern)\n .replace('{1}', denominatorPattern.replace('{0}', ''));\n }\n }\n var result = [];\n // We need spacing around \"{0}\" because they are not treated as \"unit\" parts, but \"literal\".\n for (var _c = 0, _d = unitPattern.split(/(\\s*\\{0\\}\\s*)/); _c < _d.length; _c++) {\n var part = _d[_c];\n var interpolateMatch = /^(\\s*)\\{0\\}(\\s*)$/.exec(part);\n if (interpolateMatch) {\n // Space before \"{0}\"\n if (interpolateMatch[1]) {\n result.push({ type: 'literal', value: interpolateMatch[1] });\n }\n // \"{0}\" itself\n result.push.apply(result, numberParts);\n // Space after \"{0}\"\n if (interpolateMatch[2]) {\n result.push({ type: 'literal', value: interpolateMatch[2] });\n }\n }\n else if (part) {\n result.push({ type: 'unit', value: part });\n }\n }\n return result;\n }\n default:\n return numberParts;\n }\n}\n// A subset of https://tc39.es/ecma402/#sec-partitionnotationsubpattern\n// Plus the exponent parts handling.\nfunction paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, useGrouping) {\n var result = [];\n // eslint-disable-next-line prefer-const\n var n = numberResult.formattedString, x = numberResult.roundedNumber;\n if (isNaN(x)) {\n return [{ type: 'nan', value: n }];\n }\n else if (!isFinite(x)) {\n return [{ type: 'infinity', value: n }];\n }\n var digitReplacementTable = digitMapping[numberingSystem];\n if (digitReplacementTable) {\n n = n.replace(/\\d/g, function (digit) { return digitReplacementTable[+digit] || digit; });\n }\n // TODO: Else use an implementation dependent algorithm to map n to the appropriate\n // representation of n in the given numbering system.\n var decimalSepIndex = n.indexOf('.');\n var integer;\n var fraction;\n if (decimalSepIndex > 0) {\n integer = n.slice(0, decimalSepIndex);\n fraction = n.slice(decimalSepIndex + 1);\n }\n else {\n integer = n;\n }\n // The weird compact and x >= 10000 check is to ensure consistency with Node.js and Chrome.\n // Note that `de` does not have compact form for thousands, but Node.js does not insert grouping separator\n // unless the rounded number is greater than 10000:\n // NumberFormat('de', {notation: 'compact', compactDisplay: 'short'}).format(1234) //=> \"1234\"\n // NumberFormat('de').format(1234) //=> \"1.234\"\n if (useGrouping && (notation !== 'compact' || x >= 10000)) {\n var groupSepSymbol = symbols.group;\n var groups = [];\n // Assuming that the group separator is always inserted between every 3 digits.\n var i = integer.length - 3;\n for (; i > 0; i -= 3) {\n groups.push(integer.slice(i, i + 3));\n }\n groups.push(integer.slice(0, i + 3));\n while (groups.length > 0) {\n var integerGroup = groups.pop();\n result.push({ type: 'integer', value: integerGroup });\n if (groups.length > 0) {\n result.push({ type: 'group', value: groupSepSymbol });\n }\n }\n }\n else {\n result.push({ type: 'integer', value: integer });\n }\n if (fraction !== undefined) {\n result.push({ type: 'decimal', value: symbols.decimal }, { type: 'fraction', value: fraction });\n }\n if ((notation === 'scientific' || notation === 'engineering') &&\n isFinite(x)) {\n result.push({ type: 'exponentSeparator', value: symbols.exponential });\n if (exponent < 0) {\n result.push({ type: 'exponentMinusSign', value: symbols.minusSign });\n exponent = -exponent;\n }\n var exponentResult = toRawFixed(exponent, 0, 0);\n result.push({\n type: 'exponentInteger',\n value: exponentResult.formattedString,\n });\n }\n return result;\n}\nfunction getPatternForSign(pattern, sign) {\n if (pattern.indexOf(';') < 0) {\n pattern = pattern + \";-\" + pattern;\n }\n var _a = pattern.split(';'), zeroPattern = _a[0], negativePattern = _a[1];\n switch (sign) {\n case 0:\n return zeroPattern;\n case -1:\n return negativePattern;\n default:\n return negativePattern.indexOf('-') >= 0\n ? negativePattern.replace(/-/g, '+')\n : \"+\" + zeroPattern;\n }\n}\n// Find the CLDR pattern for compact notation based on the magnitude of data and style.\n//\n// Example return value: \"¤ {c:laki}000;¤{c:laki} -0\" (`sw` locale):\n// - Notice the `{c:...}` token that wraps the compact literal.\n// - The consecutive zeros are normalized to single zero to match CLDR_NUMBER_PATTERN.\n//\n// Returning null means the compact display pattern cannot be found.\nfunction getCompactDisplayPattern(numberResult, pl, data, style, compactDisplay, currencyDisplay, numberingSystem) {\n var _a;\n var roundedNumber = numberResult.roundedNumber, sign = numberResult.sign, magnitude = numberResult.magnitude;\n var magnitudeKey = String(Math.pow(10, magnitude));\n var defaultNumberingSystem = data.numbers.nu[0];\n var pattern;\n if (style === 'currency' && currencyDisplay !== 'name') {\n var byNumberingSystem = data.numbers.currency;\n var currencyData = byNumberingSystem[numberingSystem] ||\n byNumberingSystem[defaultNumberingSystem];\n // NOTE: compact notation ignores currencySign!\n var compactPluralRules = (_a = currencyData.short) === null || _a === void 0 ? void 0 : _a[magnitudeKey];\n if (!compactPluralRules) {\n return null;\n }\n pattern = selectPlural(pl, roundedNumber, compactPluralRules);\n }\n else {\n var byNumberingSystem = data.numbers.decimal;\n var byCompactDisplay = byNumberingSystem[numberingSystem] ||\n byNumberingSystem[defaultNumberingSystem];\n var compactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];\n if (!compactPlaralRule) {\n return null;\n }\n pattern = selectPlural(pl, roundedNumber, compactPlaralRule);\n }\n // See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n // > If the value is precisely “0”, either explicit or defaulted, then the normal number format\n // > pattern for that sort of object is supplied.\n if (pattern === '0') {\n return null;\n }\n pattern = getPatternForSign(pattern, sign)\n // Extract compact literal from the pattern\n .replace(/([^\\s;\\-\\+\\d¤]+)/g, '{c:$1}')\n // We replace one or more zeros with a single zero so it matches `CLDR_NUMBER_PATTERN`.\n .replace(/0+/, '0');\n return pattern;\n}\nfunction selectPlural(pl, x, rules) {\n return rules[pl.select(x)] || rules.other;\n}\n//# sourceMappingURL=format_to_parts.js.map","var internalSlotMap = new WeakMap();\nexport default function getInternalSlots(x) {\n var internalSlots = internalSlotMap.get(x);\n if (!internalSlots) {\n internalSlots = Object.create(null);\n internalSlotMap.set(x, internalSlots);\n }\n return internalSlots;\n}\n//# sourceMappingURL=get_internal_slots.js.map","import { createResolveLocale, defineProperty, formatNumericToString, getMagnitude, getOption, hasOwnProperty, invariant, isWellFormedCurrencyCode, isWellFormedUnitIdentifier, objectIs, setNumberFormatDigitOptions, supportedLocales, toObject, unpackData, } from '@formatjs/intl-utils';\nimport * as currencyDigitsData from './data/currency-digits.json';\nimport { names as numberingSystemNames } from './data/numbering-systems.json';\nimport formatToParts from './format_to_parts';\n// eslint-disable-next-line import/no-cycle\nimport getInternalSlots from './get_internal_slots';\nvar VALID_NUMBERING_SYSTEM_NAMES = new Set(numberingSystemNames);\nvar RESOLVED_OPTIONS_KEYS = [\n 'locale',\n 'numberingSystem',\n 'style',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'unit',\n 'unitDisplay',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n 'useGrouping',\n 'notation',\n 'compactDisplay',\n 'signDisplay',\n];\n/**\n * Chop off the unicode extension from the locale string.\n */\nfunction removeUnicodeExtensionFromLocale(canonicalLocale) {\n var extensionIndex = canonicalLocale.indexOf('-u-');\n return extensionIndex >= 0\n ? canonicalLocale.slice(0, extensionIndex)\n : canonicalLocale;\n}\n/**\n * https://tc39.es/ecma402/#sec-currencydigits\n */\nfunction currencyDigits(c) {\n return hasOwnProperty(currencyDigitsData, c)\n ? currencyDigitsData[c]\n : 2;\n}\n/**\n * https://tc39.es/ecma402/#sec-initializenumberformat\n */\nfunction initializeNumberFormat(nf, locales, opts) {\n // @ts-ignore\n var requestedLocales = Intl.getCanonicalLocales(locales);\n var options = opts === undefined ? Object.create(null) : toObject(opts);\n var opt = Object.create(null);\n var matcher = getOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');\n opt.localeMatcher = matcher;\n var numberingSystem = getOption(options, 'numberingSystem', 'string', undefined, undefined);\n if (numberingSystem !== undefined &&\n !VALID_NUMBERING_SYSTEM_NAMES.has(numberingSystem)) {\n // 8.a. If numberingSystem does not match the Unicode Locale Identifier type nonterminal,\n // throw a RangeError exception.\n throw RangeError(\"Invalid numberingSystems: \" + numberingSystem);\n }\n opt.nu = numberingSystem;\n var localeData = NumberFormat.localeData;\n var r = createResolveLocale(NumberFormat.getDefaultLocale)(NumberFormat.availableLocales, requestedLocales, opt, \n // [[RelevantExtensionKeys]] slot, which is a constant\n ['nu'], localeData);\n var dataLocaleData = localeData[removeUnicodeExtensionFromLocale(r.locale)];\n var internalSlots = getInternalSlots(nf);\n internalSlots.locale = r.locale;\n internalSlots.dataLocale = r.dataLocale;\n internalSlots.numberingSystem = r.nu;\n internalSlots.dataLocaleData = dataLocaleData;\n setNumberFormatUnitOptions(nf, options);\n var style = internalSlots.style;\n var mnfdDefault;\n var mxfdDefault;\n if (style === 'currency') {\n var currency = internalSlots.currency;\n var cDigits = currencyDigits(currency);\n mnfdDefault = cDigits;\n mxfdDefault = cDigits;\n }\n else {\n mnfdDefault = 0;\n mxfdDefault = style === 'percent' ? 0 : 3;\n }\n var notation = getOption(options, 'notation', 'string', ['standard', 'scientific', 'engineering', 'compact'], 'standard');\n internalSlots.notation = notation;\n setNumberFormatDigitOptions(internalSlots, options, mnfdDefault, mxfdDefault, notation);\n var compactDisplay = getOption(options, 'compactDisplay', 'string', ['short', 'long'], 'short');\n if (notation === 'compact') {\n internalSlots.compactDisplay = compactDisplay;\n }\n var useGrouping = getOption(options, 'useGrouping', 'boolean', undefined, true);\n internalSlots.useGrouping = useGrouping;\n var signDisplay = getOption(options, 'signDisplay', 'string', ['auto', 'never', 'always', 'exceptZero'], 'auto');\n internalSlots.signDisplay = signDisplay;\n return nf;\n}\n/**\n * https://tc39.es/ecma402/#sec-formatnumberstring\n */\nfunction partitionNumberPattern(numberFormat, x) {\n var _a;\n var internalSlots = getInternalSlots(numberFormat);\n var pl = internalSlots.pl, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;\n var symbols = dataLocaleData.numbers.symbols[numberingSystem] ||\n dataLocaleData.numbers.symbols[dataLocaleData.numbers.nu[0]];\n var magnitude = 0;\n var exponent = 0;\n var n;\n if (isNaN(x)) {\n n = symbols.nan;\n }\n else if (!isFinite(x)) {\n n = symbols.infinity;\n }\n else {\n if (internalSlots.style === 'percent') {\n x *= 100;\n }\n _a = computeExponent(numberFormat, x), exponent = _a[0], magnitude = _a[1];\n // Preserve more precision by doing multiplication when exponent is negative.\n x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);\n var formatNumberResult = formatNumericToString(internalSlots, x);\n n = formatNumberResult.formattedString;\n x = formatNumberResult.roundedNumber;\n }\n // Based on https://tc39.es/ecma402/#sec-getnumberformatpattern\n // We need to do this before `x` is rounded.\n var sign;\n var signDisplay = internalSlots.signDisplay;\n switch (signDisplay) {\n case 'never':\n sign = 0;\n break;\n case 'auto':\n if (objectIs(x, 0) || x > 0 || isNaN(x)) {\n sign = 0;\n }\n else {\n sign = -1;\n }\n break;\n case 'always':\n if (objectIs(x, 0) || x > 0 || isNaN(x)) {\n sign = 1;\n }\n else {\n sign = -1;\n }\n break;\n default:\n // x === 0 -> x is 0 or x is -0\n if (x === 0 || isNaN(x)) {\n sign = 0;\n }\n else if (x > 0) {\n sign = 1;\n }\n else {\n sign = -1;\n }\n }\n return formatToParts({ roundedNumber: x, formattedString: n, exponent: exponent, magnitude: magnitude, sign: sign }, internalSlots.dataLocaleData, pl, internalSlots);\n}\nfunction formatNumericToParts(numberFormat, x) {\n return partitionNumberPattern(numberFormat, x);\n}\n/**\n * https://tc39.es/ecma402/#sec-intl-numberformat-constructor\n */\nexport var NumberFormat = function (locales, options) {\n // Cannot use `new.target` bc of IE11 & TS transpiles it to something else\n if (!this || !(this instanceof NumberFormat)) {\n return new NumberFormat(locales, options);\n }\n initializeNumberFormat(this, locales, options);\n var internalSlots = getInternalSlots(this);\n var dataLocale = internalSlots.dataLocale;\n var dataLocaleData = NumberFormat.localeData[dataLocale];\n invariant(dataLocaleData !== undefined, \"Cannot load locale-dependent data for \" + dataLocale + \".\");\n internalSlots.pl = new Intl.PluralRules(dataLocale, {\n minimumFractionDigits: internalSlots.minimumFractionDigits,\n maximumFractionDigits: internalSlots.maximumFractionDigits,\n minimumIntegerDigits: internalSlots.minimumIntegerDigits,\n minimumSignificantDigits: internalSlots.minimumSignificantDigits,\n maximumSignificantDigits: internalSlots.maximumSignificantDigits,\n });\n};\ndefineProperty(NumberFormat.prototype, 'formatToParts', {\n value: function formatToParts(x) {\n return formatNumericToParts(this, toNumeric(x));\n },\n});\ndefineProperty(NumberFormat.prototype, 'resolvedOptions', {\n value: function resolvedOptions() {\n if (typeof this !== 'object' || !(this instanceof NumberFormat)) {\n throw TypeError('Method Intl.NumberFormat.prototype.resolvedOptions called on incompatible receiver');\n }\n var internalSlots = getInternalSlots(this);\n var ro = {};\n for (var _i = 0, RESOLVED_OPTIONS_KEYS_1 = RESOLVED_OPTIONS_KEYS; _i < RESOLVED_OPTIONS_KEYS_1.length; _i++) {\n var key = RESOLVED_OPTIONS_KEYS_1[_i];\n var value = internalSlots[key];\n if (value !== undefined) {\n ro[key] = value;\n }\n }\n return ro;\n },\n});\nvar formatDescriptor = {\n enumerable: false,\n configurable: true,\n get: function () {\n if (typeof this !== 'object' || !(this instanceof NumberFormat)) {\n throw TypeError('Intl.NumberFormat format property accessor called on incompatible receiver');\n }\n var internalSlots = getInternalSlots(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var numberFormat = this;\n var boundFormat = internalSlots.boundFormat;\n if (boundFormat === undefined) {\n // https://tc39.es/proposal-unified-intl-numberformat/section11/numberformat_diff_out.html#sec-number-format-functions\n boundFormat = function (value) {\n // TODO: check bigint\n var x = toNumeric(value);\n return numberFormat\n .formatToParts(x)\n .map(function (x) { return x.value; })\n .join('');\n };\n try {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/format-function-name.js\n Object.defineProperty(boundFormat, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: '',\n });\n }\n catch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n }\n internalSlots.boundFormat = boundFormat;\n }\n return boundFormat;\n },\n};\ntry {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/name.js\n Object.defineProperty(formatDescriptor.get, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 'get format',\n });\n}\ncatch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n}\nObject.defineProperty(NumberFormat.prototype, 'format', formatDescriptor);\n// Static properties\ndefineProperty(NumberFormat, 'supportedLocalesOf', {\n value: function supportedLocalesOf(locales, options) {\n return supportedLocales(NumberFormat.availableLocales, Intl.getCanonicalLocales(locales), options);\n },\n});\nNumberFormat.__addLocaleData = function __addLocaleData() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var datum = data_1[_a];\n var availableLocales = datum.availableLocales;\n for (var _b = 0, availableLocales_1 = availableLocales; _b < availableLocales_1.length; _b++) {\n var locale = availableLocales_1[_b];\n try {\n NumberFormat.localeData[locale] = unpackData(locale, datum);\n }\n catch (e) {\n // Ignore if we got no data\n }\n }\n }\n NumberFormat.availableLocales = Object.keys(NumberFormat.localeData);\n if (!NumberFormat.__defaultLocale) {\n NumberFormat.__defaultLocale = NumberFormat.availableLocales[0];\n }\n};\nNumberFormat.__defaultLocale = 'en';\nNumberFormat.localeData = {};\nNumberFormat.availableLocales = [];\nNumberFormat.getDefaultLocale = function () {\n return NumberFormat.__defaultLocale;\n};\nNumberFormat.polyfilled = true;\n/**\n * https://tc39.es/ecma402/#sec-setnumberformatunitoptions\n */\nfunction setNumberFormatUnitOptions(nf, options) {\n if (options === void 0) { options = Object.create(null); }\n var internalSlots = getInternalSlots(nf);\n var style = getOption(options, 'style', 'string', ['decimal', 'percent', 'currency', 'unit'], 'decimal');\n internalSlots.style = style;\n var currency = getOption(options, 'currency', 'string', undefined, undefined);\n if (currency !== undefined && !isWellFormedCurrencyCode(currency)) {\n throw RangeError('Malformed currency code');\n }\n if (style === 'currency' && currency === undefined) {\n throw TypeError('currency cannot be undefined');\n }\n var currencyDisplay = getOption(options, 'currencyDisplay', 'string', ['code', 'symbol', 'narrowSymbol', 'name'], 'symbol');\n var currencySign = getOption(options, 'currencySign', 'string', ['standard', 'accounting'], 'standard');\n var unit = getOption(options, 'unit', 'string', undefined, undefined);\n if (unit !== undefined && !isWellFormedUnitIdentifier(unit)) {\n throw RangeError('Invalid unit argument for Intl.NumberFormat()');\n }\n if (style === 'unit' && unit === undefined) {\n throw TypeError('unit cannot be undefined');\n }\n var unitDisplay = getOption(options, 'unitDisplay', 'string', ['short', 'narrow', 'long'], 'short');\n if (style === 'currency') {\n internalSlots.currency = currency.toUpperCase();\n internalSlots.currencyDisplay = currencyDisplay;\n internalSlots.currencySign = currencySign;\n }\n if (style === 'unit') {\n internalSlots.unit = unit;\n internalSlots.unitDisplay = unitDisplay;\n }\n}\n/**\n * The abstract operation ComputeExponent computes an exponent (power of ten) by which to scale x\n * according to the number formatting settings. It handles cases such as 999 rounding up to 1000,\n * requiring a different exponent.\n *\n * NOT IN SPEC: it returns [exponent, magnitude].\n */\nfunction computeExponent(numberFormat, x) {\n if (x === 0) {\n return [0, 0];\n }\n if (x < 0) {\n x = -x;\n }\n var magnitude = getMagnitude(x);\n var exponent = computeExponentForMagnitude(numberFormat, magnitude);\n // Preserve more precision by doing multiplication when exponent is negative.\n x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);\n var formatNumberResult = formatNumericToString(getInternalSlots(numberFormat), x);\n if (formatNumberResult.roundedNumber === 0) {\n return [exponent, magnitude];\n }\n var newMagnitude = getMagnitude(formatNumberResult.roundedNumber);\n if (newMagnitude === magnitude - exponent) {\n return [exponent, magnitude];\n }\n return [\n computeExponentForMagnitude(numberFormat, magnitude + 1),\n magnitude + 1,\n ];\n}\n/**\n * The abstract operation ComputeExponentForMagnitude computes an exponent by which to scale a\n * number of the given magnitude (power of ten of the most significant digit) according to the\n * locale and the desired notation (scientific, engineering, or compact).\n */\nfunction computeExponentForMagnitude(numberFormat, magnitude) {\n var internalSlots = getInternalSlots(numberFormat);\n var notation = internalSlots.notation, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;\n switch (notation) {\n case 'standard':\n return 0;\n case 'scientific':\n return magnitude;\n case 'engineering':\n return Math.floor(magnitude / 3) * 3;\n default: {\n // Let exponent be an implementation- and locale-dependent (ILD) integer by which to scale a\n // number of the given magnitude in compact notation for the current locale.\n var compactDisplay = internalSlots.compactDisplay, style = internalSlots.style, currencyDisplay = internalSlots.currencyDisplay;\n var thresholdMap = void 0;\n if (style === 'currency' && currencyDisplay !== 'name') {\n var currency = dataLocaleData.numbers.currency[numberingSystem] ||\n dataLocaleData.numbers.currency[dataLocaleData.numbers.nu[0]];\n thresholdMap = currency.short;\n }\n else {\n var decimal = dataLocaleData.numbers.decimal[numberingSystem] ||\n dataLocaleData.numbers.decimal[dataLocaleData.numbers.nu[0]];\n thresholdMap = compactDisplay === 'long' ? decimal.long : decimal.short;\n }\n if (!thresholdMap) {\n return 0;\n }\n var num = String(Math.pow(10, magnitude));\n var thresholds = Object.keys(thresholdMap); // TODO: this can be pre-processed\n if (num < thresholds[0]) {\n return 0;\n }\n if (num > thresholds[thresholds.length - 1]) {\n return thresholds[thresholds.length - 1].length - 1;\n }\n var i = thresholds.indexOf(num);\n if (i === -1) {\n return 0;\n }\n // See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n // Special handling if the pattern is precisely `0`.\n var magnitudeKey = thresholds[i];\n // TODO: do we need to handle plural here?\n var compactPattern = thresholdMap[magnitudeKey].other;\n if (compactPattern === '0') {\n return 0;\n }\n // Example: in zh-TW, `10000000` maps to `0000萬`. So we need to return 8 - 4 = 4 here.\n return (magnitudeKey.length -\n thresholdMap[magnitudeKey].other.match(/0+/)[0].length);\n }\n }\n}\nfunction toNumeric(val) {\n if (typeof val === 'bigint') {\n return val;\n }\n return toNumber(val);\n}\nfunction toNumber(val) {\n if (val === undefined) {\n return NaN;\n }\n if (val === null) {\n return +0;\n }\n if (typeof val === 'boolean') {\n return val ? 1 : +0;\n }\n if (typeof val === 'number') {\n return val;\n }\n if (typeof val === 'symbol' || typeof val === 'bigint') {\n throw new TypeError('Cannot convert symbol/bigint to number');\n }\n return Number(val);\n}\ntry {\n // IE11 does not have Symbol\n if (typeof Symbol !== 'undefined') {\n Object.defineProperty(NumberFormat.prototype, Symbol.toStringTag, {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 'Object',\n });\n }\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/length.js\n Object.defineProperty(NumberFormat.prototype.constructor, 'length', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 0,\n });\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/supportedLocalesOf/length.js\n Object.defineProperty(NumberFormat.supportedLocalesOf, 'length', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 1,\n });\n Object.defineProperty(NumberFormat, 'prototype', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: NumberFormat.prototype,\n });\n}\ncatch (e) {\n // Meta fix so we're test262-compliant, not important\n}\n//# sourceMappingURL=core.js.map","/* eslint-disable import/no-cycle */\nexport * from './core';\nexport * from './to_locale_string';\n/**\n * Check if a formatting number with unit is supported\n * @public\n * @param unit unit to check\n */\nexport function isUnitSupported(unit) {\n try {\n new Intl.NumberFormat(undefined, {\n style: 'unit',\n // @ts-ignore\n unit: unit,\n });\n }\n catch (e) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line import/no-cycle\nimport { NumberFormat } from './core';\n/**\n * Number.prototype.toLocaleString ponyfill\n * https://tc39.es/ecma402/#sup-number.prototype.tolocalestring\n */\nexport function toLocaleString(x, locales, options) {\n var numberFormat = new NumberFormat(locales, options);\n return numberFormat.format(x);\n}\n//# sourceMappingURL=to_locale_string.js.map"],"names":["invariant","condition","message","Err","Error","toObject","arg","TypeError","Object","getOption","opts","prop","type","values","fallback","value","undefined","Boolean","o","String","toString","filter","val","length","RangeError","join","defaultNumberOption","min","max","Number","isNaN","Math","floor","setNumberFormatDigitOptions","internalSlots","mnfdDefault","mxfdDefault","notation","minimum","maximum","mnid","mnfd","minimumFractionDigits","mxfd","maximumFractionDigits","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","minimumIntegerDigits","roundingType","objectIs","x","y","is","NOT_A_Z_REGEX","isWellFormedCurrencyCode","currency","replace","_","c","toUpperCase","test","formatNumericToString","result","isNegative","toRawPrecision","toRawFixed","integerDigitsCount","roundedNumber","string","formattedString","int","minInteger","repeat","minFraction","maxFraction","idx1","idx2","exponent","m","k","a","f","exactSolve","pow","roundDown","roundUp","ceil","n","xFinal","indexOf","parseInt","substring","slice","cut","minPrecision","maxPrecision","e","magnitude","p","getMagnitude","s","times","arr","Array","i","log","LOG10E","SHORTENED_SACTION_UNITS","map","unit","isWellFormedUnitIdentifier","toLowerCase","units","split","defineProperty","target","name","_a","configurable","enumerable","writable","extendStatics","__extends","d","b","setPrototypeOf","__proto__","hasOwnProperty","__","this","constructor","prototype","create","__assign","assign","t","arguments","call","apply","createResolveLocale","getDefaultLocale","lookupMatcher","availableLocales","requestedLocales","locale","_i","requestedLocales_1","noExtensionLocale","UNICODE_EXTENSION_SEQUENCE_REGEX","availableLocale","bestAvailableLocale","extension","bestFitMatcher","requestedLocales_2","options","relevantExtensionKeys","localeData","privateIndex","r","localeMatcher","foundLocale","dataLocale","supportedExtension","relevantExtensionKeys_1","key","foundLocaleData","keyLocaleData","isArray","requestedValue","optionsValue","supportedExtensionAddition","unicodeExtensionValue","Intl","getCanonicalLocales","size","searchValue","pos","start","end","done","candidate","lastIndexOf","lookupSupportedLocales","subset","requestedLocales_3","push","_super","MissingLocaleDataError","_this","unpackData","reducer","all","localeHierarchy","results","localeParts","getLocaleHierarchy","dataToMerge","l","data","reverse","reduce","S_UNICODE_REGEX","CARET_S_UNICODE_REGEX","RegExp","source","S_DOLLAR_UNICODE_REGEX","CLDR_NUMBER_PATTERN","formatToParts","numberResult","pl","nonNameCurrencyPart","numberPattern","currencyData","afterCurrency","beforeCurrency","sign","style","numberingSystem","defaultNumberingSystem","numbers","nu","compactNumberPattern","compactDisplay","currencyDisplay","pattern","magnitudeKey","byNumberingSystem","compactPluralRules","short","selectPlural","compactPlaralRule","decimal","getPatternForSign","getCompactDisplayPattern","byCurrencyDisplay","currencies","symbol","narrow","currencySign","percent","currencySpacing","afterInsertBetween","beforeInsertBetween","numberPatternParts","numberParts","symbols","numberPatternParts_1","part","paritionNumberIntoParts","useGrouping","minusSign","plusSign","percentSign","unitPattern","unitName","currencyNameData","displayName","unitPatternParts_1","_b","numeratorUnit","denominatorUnit","numeratorUnitPattern","perUnitPattern","perPattern","denominatorPattern","unitDisplay","_c","_d","simple","perUnit","compound","per","interpolateMatch","exec","isFinite","digitReplacementTable","digitMapping","digit","integer","fraction","exponentResult","decimalSepIndex","groupSepSymbol","group","groups","integerGroup","pop","exponential","zeroPattern","negativePattern","rules","select","other","internalSlotMap","WeakMap","getInternalSlots","get","set","VALID_NUMBERING_SYSTEM_NAMES","Set","RESOLVED_OPTIONS_KEYS","currencyDigits","currencyDigitsData","initializeNumberFormat","nf","locales","opt","matcher","has","canonicalLocale","extensionIndex","NumberFormat","dataLocaleData","setNumberFormatUnitOptions","signDisplay","partitionNumberPattern","numberFormat","formatNumberResult","nan","computeExponentForMagnitude","computeExponent","infinity","PluralRules","toNumeric","ro","RESOLVED_OPTIONS_KEYS_1","formatDescriptor","boundFormat","thresholdMap","long","num","thresholds","keys","match","NaN","toNumber","__addLocaleData","data_1","datum","availableLocales_1","__defaultLocale","polyfilled","Symbol","toStringTag","supportedLocalesOf","format"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intl-numberformat.min.js","sources":["../../../intl-utils/lib/invariant.js","../../../intl-utils/lib/polyfill-utils.js","../../../intl-utils/lib/units.js","../../../intl-utils/lib/resolve-locale.js","../../lib/format_to_parts.js","../../lib/get_internal_slots.js","../../lib/core.js","../../lib/index.js","../../lib/to_locale_string.js"],"sourcesContent":["export function invariant(condition, message, Err) {\n if (Err === void 0) { Err = Error; }\n if (!condition) {\n throw new Err(message);\n }\n}\n//# sourceMappingURL=invariant.js.map","import { invariant } from './invariant';\nimport { SANCTIONED_UNITS } from './units';\nexport function hasOwnProperty(o, key) {\n return Object.prototype.hasOwnProperty.call(o, key);\n}\n/**\n * https://tc39.es/ecma262/#sec-toobject\n * @param arg\n */\nexport function toObject(arg) {\n if (arg == null) {\n throw new TypeError('undefined/null cannot be converted to object');\n }\n return Object(arg);\n}\n/**\n * https://tc39.es/ecma262/#sec-tostring\n */\nexport function toString(o) {\n // Only symbol is irregular...\n if (typeof o === 'symbol') {\n throw TypeError('Cannot convert a Symbol value to a string');\n }\n return String(o);\n}\n/**\n * https://tc39.es/ecma402/#sec-getoption\n * @param opts\n * @param prop\n * @param type\n * @param values\n * @param fallback\n */\nexport function getOption(opts, prop, type, values, fallback) {\n // const descriptor = Object.getOwnPropertyDescriptor(opts, prop);\n var value = opts[prop];\n if (value !== undefined) {\n if (type !== 'boolean' && type !== 'string') {\n throw new TypeError('invalid type');\n }\n if (type === 'boolean') {\n value = Boolean(value);\n }\n if (type === 'string') {\n value = toString(value);\n }\n if (values !== undefined && !values.filter(function (val) { return val == value; }).length) {\n throw new RangeError(value + \" is not within \" + values.join(', '));\n }\n return value;\n }\n return fallback;\n}\n/**\n * https://tc39.es/ecma402/#sec-defaultnumberoption\n * @param val\n * @param min\n * @param max\n * @param fallback\n */\nexport function defaultNumberOption(val, min, max, fallback) {\n if (val !== undefined) {\n val = Number(val);\n if (isNaN(val) || val < min || val > max) {\n throw new RangeError(val + \" is outside of range [\" + min + \", \" + max + \"]\");\n }\n return Math.floor(val);\n }\n return fallback;\n}\n/**\n * https://tc39.es/ecma402/#sec-getnumberoption\n * @param options\n * @param property\n * @param min\n * @param max\n * @param fallback\n */\nexport function getNumberOption(options, property, minimum, maximum, fallback) {\n var val = options[property];\n return defaultNumberOption(val, minimum, maximum, fallback);\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(pl + \" InternalSlot has not been initialized\");\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\nexport function partitionPattern(pattern) {\n var result = [];\n var beginIndex = pattern.indexOf('{');\n var endIndex = 0;\n var nextIndex = 0;\n var length = pattern.length;\n while (beginIndex < pattern.length && beginIndex > -1) {\n endIndex = pattern.indexOf('}', beginIndex);\n invariant(endIndex > beginIndex, \"Invalid pattern \" + pattern);\n if (beginIndex > nextIndex) {\n result.push({\n type: 'literal',\n value: pattern.substring(nextIndex, beginIndex),\n });\n }\n result.push({\n type: pattern.substring(beginIndex + 1, endIndex),\n value: undefined,\n });\n nextIndex = endIndex + 1;\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n if (nextIndex < length) {\n result.push({\n type: 'literal',\n value: pattern.substring(nextIndex, length),\n });\n }\n return result;\n}\n/**\n * https://tc39.es/ecma402/#sec-setnfdigitoptions\n */\nexport function setNumberFormatDigitOptions(internalSlots, opts, mnfdDefault, mxfdDefault, notation) {\n var mnid = getNumberOption(opts, 'minimumIntegerDigits', 1, 21, 1);\n var mnfd = opts.minimumFractionDigits;\n var mxfd = opts.maximumFractionDigits;\n var mnsd = opts.minimumSignificantDigits;\n var mxsd = opts.maximumSignificantDigits;\n internalSlots.minimumIntegerDigits = mnid;\n if (mnsd !== undefined || mxsd !== undefined) {\n internalSlots.roundingType = 'significantDigits';\n mnsd = defaultNumberOption(mnsd, 1, 21, 1);\n mxsd = defaultNumberOption(mxsd, mnsd, 21, 21);\n internalSlots.minimumSignificantDigits = mnsd;\n internalSlots.maximumSignificantDigits = mxsd;\n }\n else if (mnfd !== undefined || mxfd !== undefined) {\n internalSlots.roundingType = 'fractionDigits';\n mnfd = defaultNumberOption(mnfd, 0, 20, mnfdDefault);\n var mxfdActualDefault = Math.max(mnfd, mxfdDefault);\n mxfd = defaultNumberOption(mxfd, mnfd, 20, mxfdActualDefault);\n internalSlots.minimumFractionDigits = mnfd;\n internalSlots.maximumFractionDigits = mxfd;\n }\n else if (notation === 'compact') {\n internalSlots.roundingType = 'compactRounding';\n }\n else {\n internalSlots.roundingType = 'fractionDigits';\n internalSlots.minimumFractionDigits = mnfdDefault;\n internalSlots.maximumFractionDigits = mxfdDefault;\n }\n}\nexport function objectIs(x, y) {\n if (Object.is) {\n return Object.is(x, y);\n }\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n }\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n}\nvar NOT_A_Z_REGEX = /[^A-Z]/;\n/**\n * This follows https://tc39.es/ecma402/#sec-case-sensitivity-and-case-mapping\n * @param str string to convert\n */\nfunction toUpperCase(str) {\n return str.replace(/([a-z])/g, function (_, c) { return c.toUpperCase(); });\n}\n/**\n * https://tc39.es/ecma402/#sec-iswellformedcurrencycode\n */\nexport function isWellFormedCurrencyCode(currency) {\n currency = toUpperCase(currency);\n if (currency.length !== 3) {\n return false;\n }\n if (NOT_A_Z_REGEX.test(currency)) {\n return false;\n }\n return true;\n}\n/**\n * https://tc39.es/ecma402/#sec-formatnumberstring\n * TODO: dedup with intl-pluralrules\n */\nexport function formatNumericToString(internalSlots, x) {\n var isNegative = x < 0 || objectIs(x, -0);\n if (isNegative) {\n x = -x;\n }\n var result;\n var rourndingType = internalSlots.roundingType;\n switch (rourndingType) {\n case 'significantDigits':\n result = toRawPrecision(x, internalSlots.minimumSignificantDigits, internalSlots.maximumSignificantDigits);\n break;\n case 'fractionDigits':\n result = toRawFixed(x, internalSlots.minimumFractionDigits, internalSlots.maximumFractionDigits);\n break;\n default:\n result = toRawPrecision(x, 1, 2);\n if (result.integerDigitsCount > 1) {\n result = toRawFixed(x, 0, 0);\n }\n break;\n }\n x = result.roundedNumber;\n var string = result.formattedString;\n var int = result.integerDigitsCount;\n var minInteger = internalSlots.minimumIntegerDigits;\n if (int < minInteger) {\n var forwardZeros = repeat('0', minInteger - int);\n string = forwardZeros + string;\n }\n if (isNegative) {\n x = -x;\n }\n return { roundedNumber: x, formattedString: string };\n}\n/**\n * TODO: dedup with intl-pluralrules and support BigInt\n * https://tc39.es/ecma402/#sec-torawfixed\n * @param x a finite non-negative Number or BigInt\n * @param minFraction and integer between 0 and 20\n * @param maxFraction and integer between 0 and 20\n */\nexport function toRawFixed(x, minFraction, maxFraction) {\n var f = maxFraction;\n var n = Math.round(x * Math.pow(10, f));\n var xFinal = n / Math.pow(10, f);\n // n is a positive integer, but it is possible to be greater than 1e21.\n // In such case we will go the slow path.\n // See also: https://tc39.es/ecma262/#sec-numeric-types-number-tostring\n var m;\n if (n < 1e21) {\n m = n.toString();\n }\n else {\n m = n.toString();\n var _a = m.split('e'), mantissa = _a[0], exponent = _a[1];\n m = mantissa.replace('.', '');\n m = m + repeat('0', Math.max(+exponent - m.length + 1, 0));\n }\n var int;\n if (f !== 0) {\n var k = m.length;\n if (k <= f) {\n var z = repeat('0', f + 1 - k);\n m = z + m;\n k = f + 1;\n }\n var a = m.slice(0, k - f);\n var b = m.slice(k - f);\n m = a + \".\" + b;\n int = a.length;\n }\n else {\n int = m.length;\n }\n var cut = maxFraction - minFraction;\n while (cut > 0 && m[m.length - 1] === '0') {\n m = m.slice(0, -1);\n cut--;\n }\n if (m[m.length - 1] === '.') {\n m = m.slice(0, -1);\n }\n return { formattedString: m, roundedNumber: xFinal, integerDigitsCount: int };\n}\n// https://tc39.es/ecma402/#sec-torawprecision\nexport function toRawPrecision(x, minPrecision, maxPrecision) {\n var p = maxPrecision;\n var m;\n var e;\n var xFinal;\n if (x === 0) {\n m = repeat('0', p);\n e = 0;\n xFinal = 0;\n }\n else {\n var xToString = x.toString();\n // If xToString is formatted as scientific notation, the number is either very small or very\n // large. If the precision of the formatted string is lower that requested max precision, we\n // should still infer them from the formatted string, otherwise the formatted result might have\n // precision loss (e.g. 1e41 will not have 0 in every trailing digits).\n var xToStringExponentIndex = xToString.indexOf('e');\n var _a = xToString.split('e'), xToStringMantissa = _a[0], xToStringExponent = _a[1];\n var xToStringMantissaWithoutDecimalPoint = xToStringMantissa.replace('.', '');\n if (xToStringExponentIndex >= 0 &&\n xToStringMantissaWithoutDecimalPoint.length <= p) {\n e = +xToStringExponent;\n m =\n xToStringMantissaWithoutDecimalPoint +\n repeat('0', p - xToStringMantissaWithoutDecimalPoint.length);\n xFinal = x;\n }\n else {\n e = getMagnitude(x);\n var decimalPlaceOffset = e - p + 1;\n // n is the integer containing the required precision digits. To derive the formatted string,\n // we will adjust its decimal place in the logic below.\n var n = Math.round(adjustDecimalPlace(x, decimalPlaceOffset));\n // The rounding caused the change of magnitude, so we should increment `e` by 1.\n if (adjustDecimalPlace(n, p - 1) >= 10) {\n e = e + 1;\n // Divide n by 10 to swallow one precision.\n n = Math.floor(n / 10);\n }\n m = n.toString();\n // Equivalent of n * 10 ** (e - p + 1)\n xFinal = adjustDecimalPlace(n, p - 1 - e);\n }\n }\n var int;\n if (e >= p - 1) {\n m = m + repeat('0', e - p + 1);\n int = e + 1;\n }\n else if (e >= 0) {\n m = m.slice(0, e + 1) + \".\" + m.slice(e + 1);\n int = e + 1;\n }\n else {\n m = \"0.\" + repeat('0', -e - 1) + m;\n int = 1;\n }\n if (m.indexOf('.') >= 0 && maxPrecision > minPrecision) {\n var cut = maxPrecision - minPrecision;\n while (cut > 0 && m[m.length - 1] === '0') {\n m = m.slice(0, -1);\n cut--;\n }\n if (m[m.length - 1] === '.') {\n m = m.slice(0, -1);\n }\n }\n return { formattedString: m, roundedNumber: xFinal, integerDigitsCount: int };\n // x / (10 ** magnitude), but try to preserve as much floating point precision as possible.\n function adjustDecimalPlace(x, magnitude) {\n return magnitude < 0 ? x * Math.pow(10, -magnitude) : x / Math.pow(10, magnitude);\n }\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\n/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\n/**\n * This follows https://tc39.es/ecma402/#sec-case-sensitivity-and-case-mapping\n * @param str string to convert\n */\nfunction toLowerCase(str) {\n return str.replace(/([A-Z])/g, function (_, c) { return c.toLowerCase(); });\n}\nvar SHORTENED_SACTION_UNITS = SANCTIONED_UNITS.map(function (unit) {\n return unit.replace(/^(.*?)-/, '');\n});\n/**\n * https://tc39.es/ecma402/#sec-iswellformedunitidentifier\n * @param unit\n */\nexport function isWellFormedUnitIdentifier(unit) {\n unit = toLowerCase(unit);\n if (SHORTENED_SACTION_UNITS.indexOf(unit) > -1) {\n return true;\n }\n var units = unit.split('-per-');\n if (units.length !== 2) {\n return false;\n }\n if (SHORTENED_SACTION_UNITS.indexOf(units[0]) < 0 ||\n SHORTENED_SACTION_UNITS.indexOf(units[1]) < 0) {\n return false;\n }\n return true;\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value,\n });\n}\n//# sourceMappingURL=polyfill-utils.js.map","// https://tc39.es/ecma402/#sec-issanctionedsimpleunitidentifier\nexport var SANCTIONED_UNITS = [\n 'angle-degree',\n 'area-acre',\n 'area-hectare',\n 'concentr-percent',\n 'digital-bit',\n 'digital-byte',\n 'digital-gigabit',\n 'digital-gigabyte',\n 'digital-kilobit',\n 'digital-kilobyte',\n 'digital-megabit',\n 'digital-megabyte',\n 'digital-petabyte',\n 'digital-terabit',\n 'digital-terabyte',\n 'duration-day',\n 'duration-hour',\n 'duration-millisecond',\n 'duration-minute',\n 'duration-month',\n 'duration-second',\n 'duration-week',\n 'duration-year',\n 'length-centimeter',\n 'length-foot',\n 'length-inch',\n 'length-kilometer',\n 'length-meter',\n 'length-mile-scandinavian',\n 'length-mile',\n 'length-millimeter',\n 'length-yard',\n 'mass-gram',\n 'mass-kilogram',\n 'mass-ounce',\n 'mass-pound',\n 'mass-stone',\n 'temperature-celsius',\n 'temperature-fahrenheit',\n 'volume-fluid-ounce',\n 'volume-gallon',\n 'volume-liter',\n 'volume-milliliter',\n];\n// In CLDR, the unit name always follows the form `namespace-unit` pattern.\n// For example: `digital-bit` instead of `bit`. This function removes the namespace prefix.\nexport function removeUnitNamespace(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\n//# sourceMappingURL=units.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { invariant } from './invariant';\nimport { toObject, getOption } from './polyfill-utils';\nexport function createResolveLocale(getDefaultLocale) {\n var lookupMatcher = createLookupMatcher(getDefaultLocale);\n var bestFitMatcher = createBestFitMatcher(getDefaultLocale);\n /**\n * https://tc39.es/ecma402/#sec-resolvelocale\n */\n return function resolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n var matcher = options.localeMatcher;\n var r;\n if (matcher === 'lookup') {\n r = lookupMatcher(availableLocales, requestedLocales);\n }\n else {\n r = bestFitMatcher(availableLocales, requestedLocales);\n }\n var foundLocale = r.locale;\n var result = { locale: '', dataLocale: foundLocale };\n var supportedExtension = '-u';\n for (var _i = 0, relevantExtensionKeys_1 = relevantExtensionKeys; _i < relevantExtensionKeys_1.length; _i++) {\n var key = relevantExtensionKeys_1[_i];\n var foundLocaleData = localeData[foundLocale];\n invariant(typeof foundLocaleData === 'object' && foundLocaleData !== null, \"locale data \" + key + \" must be an object\");\n var keyLocaleData = foundLocaleData[key];\n invariant(Array.isArray(keyLocaleData), \"keyLocaleData for \" + key + \" must be an array\");\n var value = keyLocaleData[0];\n invariant(typeof value === 'string' || value === null, 'value must be string or null');\n var supportedExtensionAddition = '';\n if (r.extension) {\n var requestedValue = unicodeExtensionValue(r.extension, key);\n if (requestedValue !== undefined) {\n if (requestedValue !== '') {\n if (~keyLocaleData.indexOf(requestedValue)) {\n value = requestedValue;\n supportedExtensionAddition = \"-\" + key + \"-\" + value;\n }\n }\n else if (~requestedValue.indexOf('true')) {\n value = 'true';\n supportedExtensionAddition = \"-\" + key;\n }\n }\n }\n if (key in options) {\n var optionsValue = options[key];\n invariant(typeof optionsValue === 'string' ||\n typeof optionsValue === 'undefined' ||\n optionsValue === null, 'optionsValue must be String, Undefined or Null');\n if (~keyLocaleData.indexOf(optionsValue)) {\n if (optionsValue !== value) {\n value = optionsValue;\n supportedExtensionAddition = '';\n }\n }\n }\n result[key] = value;\n supportedExtension += supportedExtensionAddition;\n }\n if (supportedExtension.length > 2) {\n var privateIndex = foundLocale.indexOf('-x-');\n if (privateIndex === -1) {\n foundLocale = foundLocale + supportedExtension;\n }\n else {\n var preExtension = foundLocale.slice(0, privateIndex);\n var postExtension = foundLocale.slice(privateIndex, foundLocale.length);\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n foundLocale = Intl.getCanonicalLocales(foundLocale)[0];\n }\n result.locale = foundLocale;\n return result;\n };\n}\n/**\n * https://tc39.es/ecma402/#sec-unicodeextensionvalue\n * @param extension\n * @param key\n */\nfunction unicodeExtensionValue(extension, key) {\n invariant(key.length === 2, 'key must have 2 elements');\n var size = extension.length;\n var searchValue = \"-\" + key + \"-\";\n var pos = extension.indexOf(searchValue);\n if (pos !== -1) {\n var start = pos + 4;\n var end = start;\n var k = start;\n var done = false;\n while (!done) {\n var e = extension.indexOf('-', k);\n var len = void 0;\n if (e === -1) {\n len = size - k;\n }\n else {\n len = e - k;\n }\n if (len === 2) {\n done = true;\n }\n else if (e === -1) {\n end = size;\n done = true;\n }\n else {\n end = e;\n k = e + 1;\n }\n }\n return extension.slice(start, end);\n }\n searchValue = \"-\" + key;\n pos = extension.indexOf(searchValue);\n if (pos !== -1 && pos + 3 === size) {\n return '';\n }\n return undefined;\n}\nvar UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\n/**\n * https://tc39.es/ecma402/#sec-bestavailablelocale\n * @param availableLocales\n * @param locale\n */\nfunction bestAvailableLocale(availableLocales, locale) {\n var candidate = locale;\n while (true) {\n if (~availableLocales.indexOf(candidate)) {\n return candidate;\n }\n var pos = candidate.lastIndexOf('-');\n if (!~pos) {\n return undefined;\n }\n if (pos >= 2 && candidate[pos - 2] === '-') {\n pos -= 2;\n }\n candidate = candidate.slice(0, pos);\n }\n}\nfunction createLookupMatcher(getDefaultLocale) {\n /**\n * https://tc39.es/ecma402/#sec-lookupmatcher\n */\n return function lookupMatcher(availableLocales, requestedLocales) {\n var result = { locale: '' };\n for (var _i = 0, requestedLocales_1 = requestedLocales; _i < requestedLocales_1.length; _i++) {\n var locale = requestedLocales_1[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n result.locale = availableLocale;\n if (locale !== noExtensionLocale) {\n result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);\n }\n return result;\n }\n }\n result.locale = getDefaultLocale();\n return result;\n };\n}\nfunction createBestFitMatcher(getDefaultLocale) {\n return function bestFitMatcher(availableLocales, requestedLocales) {\n var result = { locale: '' };\n for (var _i = 0, requestedLocales_2 = requestedLocales; _i < requestedLocales_2.length; _i++) {\n var locale = requestedLocales_2[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n result.locale = availableLocale;\n if (locale !== noExtensionLocale) {\n result.extension = locale.slice(noExtensionLocale.length + 1, locale.length);\n }\n return result;\n }\n }\n result.locale = getDefaultLocale();\n return result;\n };\n}\nexport function getLocaleHierarchy(locale) {\n var results = [locale];\n var localeParts = locale.split('-');\n for (var i = localeParts.length; i > 1; i--) {\n results.push(localeParts.slice(0, i - 1).join('-'));\n }\n return results;\n}\nfunction lookupSupportedLocales(availableLocales, requestedLocales) {\n var subset = [];\n for (var _i = 0, requestedLocales_3 = requestedLocales; _i < requestedLocales_3.length; _i++) {\n var locale = requestedLocales_3[_i];\n var noExtensionLocale = locale.replace(UNICODE_EXTENSION_SEQUENCE_REGEX, '');\n var availableLocale = bestAvailableLocale(availableLocales, noExtensionLocale);\n if (availableLocale) {\n subset.push(availableLocale);\n }\n }\n return subset;\n}\nexport function supportedLocales(availableLocales, requestedLocales, options) {\n var matcher = 'best fit';\n if (options !== undefined) {\n options = toObject(options);\n matcher = getOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');\n }\n if (matcher === 'best fit') {\n return lookupSupportedLocales(availableLocales, requestedLocales);\n }\n return lookupSupportedLocales(availableLocales, requestedLocales);\n}\nvar MissingLocaleDataError = /** @class */ (function (_super) {\n __extends(MissingLocaleDataError, _super);\n function MissingLocaleDataError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'MISSING_LOCALE_DATA';\n return _this;\n }\n return MissingLocaleDataError;\n}(Error));\nexport function isMissingLocaleDataError(e) {\n return e.type === 'MISSING_LOCALE_DATA';\n}\nexport function unpackData(locale, localeData, \n/** By default shallow merge the dictionaries. */\nreducer) {\n if (reducer === void 0) { reducer = function (all, d) { return (__assign(__assign({}, all), d)); }; }\n var localeHierarchy = getLocaleHierarchy(locale);\n var dataToMerge = localeHierarchy\n .map(function (l) { return localeData.data[l]; })\n .filter(Boolean);\n if (!dataToMerge.length) {\n throw new MissingLocaleDataError(\"Missing locale data for \\\"\" + locale + \"\\\", lookup hierarchy: \" + localeHierarchy.join(', '));\n }\n dataToMerge.reverse();\n return dataToMerge.reduce(reducer, {});\n}\n//# sourceMappingURL=resolve-locale.js.map","import { toRawFixed, } from '@formatjs/intl-utils';\nimport * as digitMapping from './data/digit-mapping.json';\n// This is from: unicode-12.1.0/General_Category/Symbol/regex.js\n// IE11 does not support unicode flag, otherwise this is just /\\p{S}/u.\nvar S_UNICODE_REGEX = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20BF\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BFF\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uFB29\\uFBB2-\\uFBC1\\uFDFC\\uFDFD\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD6C\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED5\\uDEE0-\\uDEEC\\uDEF0-\\uDEFA\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD00-\\uDD0B\\uDD0D-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95]/;\n// /^\\p{S}/u\nvar CARET_S_UNICODE_REGEX = new RegExp(\"^\" + S_UNICODE_REGEX.source);\n// /\\p{S}$/u\nvar S_DOLLAR_UNICODE_REGEX = new RegExp(S_UNICODE_REGEX.source + \"$\");\nvar CLDR_NUMBER_PATTERN = /[#0](?:[\\.,][#0]+)*/g;\nexport default function formatToParts(numberResult, data, pl, options) {\n var sign = numberResult.sign, exponent = numberResult.exponent, magnitude = numberResult.magnitude;\n var notation = options.notation, style = options.style, numberingSystem = options.numberingSystem;\n var defaultNumberingSystem = data.numbers.nu[0];\n // Part 1: partition and interpolate the CLDR number pattern.\n // ----------------------------------------------------------\n var compactNumberPattern = null;\n if (notation === 'compact' && magnitude) {\n compactNumberPattern = getCompactDisplayPattern(numberResult, pl, data, style, options.compactDisplay, options.currencyDisplay, numberingSystem);\n }\n // This is used multiple times\n var nonNameCurrencyPart;\n if (style === 'currency' && options.currencyDisplay !== 'name') {\n var byCurrencyDisplay = data.currencies[options.currency];\n if (byCurrencyDisplay) {\n switch (options.currencyDisplay) {\n case 'code':\n nonNameCurrencyPart = options.currency;\n break;\n case 'symbol':\n nonNameCurrencyPart = byCurrencyDisplay.symbol;\n break;\n default:\n nonNameCurrencyPart = byCurrencyDisplay.narrow;\n break;\n }\n }\n else {\n // Fallback for unknown currency\n nonNameCurrencyPart = options.currency;\n }\n }\n var numberPattern;\n if (!compactNumberPattern) {\n // Note: if the style is unit, or is currency and the currency display is name,\n // its unit parts will be interpolated in part 2. So here we can fallback to decimal.\n if (style === 'decimal' ||\n style === 'unit' ||\n (style === 'currency' && options.currencyDisplay === 'name')) {\n // Shortcut for decimal\n numberPattern = sign === 0 ? '0' : sign === -1 ? '-0' : '+0';\n }\n else if (style === 'currency') {\n var currencyData = data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem];\n // We replace number pattern part with `0` for easier postprocessing.\n numberPattern = getPatternForSign(currencyData[options.currencySign], sign).replace(CLDR_NUMBER_PATTERN, '0');\n }\n else {\n // percent\n var percentPattern = data.numbers.percent[numberingSystem] ||\n data.numbers.percent[defaultNumberingSystem];\n numberPattern = getPatternForSign(percentPattern, sign);\n }\n }\n else {\n numberPattern = compactNumberPattern;\n }\n // Handle currency spacing (both compact and non-compact).\n if (style === 'currency' && options.currencyDisplay !== 'name') {\n var currencyData = data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem];\n // See `currencySpacing` substitution rule in TR-35.\n // Here we always assume the currencyMatch is \"[:^S:]\" and surroundingMatch is \"[:digit:]\".\n //\n // Example 1: for pattern \"#,##0.00¤\" with symbol \"US$\", we replace \"¤\" with the symbol,\n // but insert an extra non-break space before the symbol, because \"[:^S:]\" matches \"U\" in\n // \"US$\" and \"[:digit:]\" matches the latn numbering system digits.\n //\n // Example 2: for pattern \"¤#,##0.00\" with symbol \"US$\", there is no spacing between symbol\n // a nd number, because `$` does not match \"[:^S:]\".\n //\n // Implementation note: here we do the best effort to infer the insertion.\n // We also assume that `beforeInsertBetween` and `afterInsertBetween` will never be `;`.\n var afterCurrency = currencyData.currencySpacing.afterInsertBetween;\n if (afterCurrency && !S_DOLLAR_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n numberPattern = numberPattern.replace('¤0', \"\\u00A4\" + afterCurrency + \"0\");\n }\n var beforeCurrency = currencyData.currencySpacing.beforeInsertBetween;\n if (beforeCurrency && !CARET_S_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n numberPattern = numberPattern.replace('0¤', \"0\" + beforeCurrency + \"\\u00A4\");\n }\n }\n // Now we start to substitute patterns\n // 1. replace strings like `0` and `#,##0.00` with `{0}`\n // 2. unquote characters (invariant: the quoted characters does not contain the special tokens)\n numberPattern = numberPattern\n .replace(CLDR_NUMBER_PATTERN, '{0}')\n .replace(/'(.)'/g, '$1');\n // The following tokens are special: `{0}`, `¤`, `%`, `-`, `+`, `{c:...}.\n var numberPatternParts = numberPattern.split(/({c:[^}]+}|\\{0\\}|[¤%\\-\\+])/g);\n var numberParts = [];\n var symbols = data.numbers.symbols[numberingSystem] ||\n data.numbers.symbols[defaultNumberingSystem];\n for (var _i = 0, numberPatternParts_1 = numberPatternParts; _i < numberPatternParts_1.length; _i++) {\n var part = numberPatternParts_1[_i];\n if (!part) {\n continue;\n }\n switch (part) {\n case '{0}': {\n // We only need to handle scientific and engineering notation here.\n numberParts.push.apply(numberParts, paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, \n // If compact number pattern exists, do not insert group separators.\n !compactNumberPattern && options.useGrouping));\n break;\n }\n case '-':\n numberParts.push({ type: 'minusSign', value: symbols.minusSign });\n break;\n case '+':\n numberParts.push({ type: 'plusSign', value: symbols.plusSign });\n break;\n case '%':\n numberParts.push({ type: 'percentSign', value: symbols.percentSign });\n break;\n case '¤':\n // Computed above when handling currency spacing.\n numberParts.push({ type: 'currency', value: nonNameCurrencyPart });\n break;\n default:\n if (/^\\{c:/.test(part)) {\n numberParts.push({\n type: 'compact',\n value: part.substring(3, part.length - 1),\n });\n }\n else {\n // literal\n numberParts.push({ type: 'literal', value: part });\n }\n break;\n }\n }\n // Part 2: interpolate unit pattern if necessary.\n // ----------------------------------------------\n switch (style) {\n case 'currency': {\n // `currencyDisplay: 'name'` has similar pattern handling as units.\n if (options.currencyDisplay === 'name') {\n var unitPattern = (data.numbers.currency[numberingSystem] ||\n data.numbers.currency[defaultNumberingSystem]).unitPattern;\n // Select plural\n var unitName = void 0;\n var currencyNameData = data.currencies[options.currency];\n if (currencyNameData) {\n unitName = selectPlural(pl, \n // NOTE: Google Chrome's Intl.NumberFormat uses the original number to determine the plurality,\n // but the mantissa for unit. We think this is a bug in ICU, but will still replicate the behavior.\n // TODO: use original number.\n numberResult.roundedNumber * Math.pow(10, exponent), currencyNameData.displayName);\n }\n else {\n // Fallback for unknown currency\n unitName = options.currency;\n }\n // Do {0} and {1} substitution\n var unitPatternParts = unitPattern.split(/(\\{[01]\\})/g);\n var result = [];\n for (var _a = 0, unitPatternParts_1 = unitPatternParts; _a < unitPatternParts_1.length; _a++) {\n var part = unitPatternParts_1[_a];\n switch (part) {\n case '{0}':\n result.push.apply(result, numberParts);\n break;\n case '{1}':\n result.push({ type: 'currency', value: unitName });\n break;\n default:\n if (part) {\n result.push({ type: 'literal', value: part });\n }\n break;\n }\n }\n return result;\n }\n else {\n return numberParts;\n }\n }\n case 'unit': {\n var unit = options.unit, unitDisplay = options.unitDisplay;\n var unitData = data.units.simple[unit];\n var unitPattern = void 0;\n if (unitData) {\n // Simple unit pattern\n unitPattern = selectPlural(pl, numberResult.roundedNumber, data.units.simple[unit][unitDisplay]);\n }\n else {\n // See: http://unicode.org/reports/tr35/tr35-general.html#perUnitPatterns\n // If cannot find unit in the simple pattern, it must be \"per\" compound pattern.\n // Implementation note: we are not following TR-35 here because we need to format to parts!\n var _b = unit.split('-per-'), numeratorUnit = _b[0], denominatorUnit = _b[1];\n unitData = data.units.simple[numeratorUnit];\n var numeratorUnitPattern = selectPlural(pl, numberResult.roundedNumber, data.units.simple[numeratorUnit][unitDisplay]);\n var perUnitPattern = data.units.simple[denominatorUnit].perUnit[unitDisplay];\n if (perUnitPattern) {\n // perUnitPattern exists, combine it with numeratorUnitPattern\n unitPattern = perUnitPattern.replace('{0}', numeratorUnitPattern);\n }\n else {\n // get compoundUnit pattern (e.g. \"{0} per {1}\"), repalce {0} with numerator pattern and {1} with\n // the denominator pattern in singular form.\n var perPattern = data.units.compound.per[unitDisplay];\n var denominatorPattern = selectPlural(pl, 1, data.units.simple[denominatorUnit][unitDisplay]);\n unitPattern = unitPattern = perPattern\n .replace('{0}', numeratorUnitPattern)\n .replace('{1}', denominatorPattern.replace('{0}', ''));\n }\n }\n var result = [];\n // We need spacing around \"{0}\" because they are not treated as \"unit\" parts, but \"literal\".\n for (var _c = 0, _d = unitPattern.split(/(\\s*\\{0\\}\\s*)/); _c < _d.length; _c++) {\n var part = _d[_c];\n var interpolateMatch = /^(\\s*)\\{0\\}(\\s*)$/.exec(part);\n if (interpolateMatch) {\n // Space before \"{0}\"\n if (interpolateMatch[1]) {\n result.push({ type: 'literal', value: interpolateMatch[1] });\n }\n // \"{0}\" itself\n result.push.apply(result, numberParts);\n // Space after \"{0}\"\n if (interpolateMatch[2]) {\n result.push({ type: 'literal', value: interpolateMatch[2] });\n }\n }\n else if (part) {\n result.push({ type: 'unit', value: part });\n }\n }\n return result;\n }\n default:\n return numberParts;\n }\n}\n// A subset of https://tc39.es/ecma402/#sec-partitionnotationsubpattern\n// Plus the exponent parts handling.\nfunction paritionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, useGrouping) {\n var result = [];\n // eslint-disable-next-line prefer-const\n var n = numberResult.formattedString, x = numberResult.roundedNumber;\n if (isNaN(x)) {\n return [{ type: 'nan', value: n }];\n }\n else if (!isFinite(x)) {\n return [{ type: 'infinity', value: n }];\n }\n var digitReplacementTable = digitMapping[numberingSystem];\n if (digitReplacementTable) {\n n = n.replace(/\\d/g, function (digit) { return digitReplacementTable[+digit] || digit; });\n }\n // TODO: Else use an implementation dependent algorithm to map n to the appropriate\n // representation of n in the given numbering system.\n var decimalSepIndex = n.indexOf('.');\n var integer;\n var fraction;\n if (decimalSepIndex > 0) {\n integer = n.slice(0, decimalSepIndex);\n fraction = n.slice(decimalSepIndex + 1);\n }\n else {\n integer = n;\n }\n // The weird compact and x >= 10000 check is to ensure consistency with Node.js and Chrome.\n // Note that `de` does not have compact form for thousands, but Node.js does not insert grouping separator\n // unless the rounded number is greater than 10000:\n // NumberFormat('de', {notation: 'compact', compactDisplay: 'short'}).format(1234) //=> \"1234\"\n // NumberFormat('de').format(1234) //=> \"1.234\"\n if (useGrouping && (notation !== 'compact' || x >= 10000)) {\n var groupSepSymbol = symbols.group;\n var groups = [];\n // Assuming that the group separator is always inserted between every 3 digits.\n var i = integer.length - 3;\n for (; i > 0; i -= 3) {\n groups.push(integer.slice(i, i + 3));\n }\n groups.push(integer.slice(0, i + 3));\n while (groups.length > 0) {\n var integerGroup = groups.pop();\n result.push({ type: 'integer', value: integerGroup });\n if (groups.length > 0) {\n result.push({ type: 'group', value: groupSepSymbol });\n }\n }\n }\n else {\n result.push({ type: 'integer', value: integer });\n }\n if (fraction !== undefined) {\n result.push({ type: 'decimal', value: symbols.decimal }, { type: 'fraction', value: fraction });\n }\n if ((notation === 'scientific' || notation === 'engineering') &&\n isFinite(x)) {\n result.push({ type: 'exponentSeparator', value: symbols.exponential });\n if (exponent < 0) {\n result.push({ type: 'exponentMinusSign', value: symbols.minusSign });\n exponent = -exponent;\n }\n var exponentResult = toRawFixed(exponent, 0, 0);\n result.push({\n type: 'exponentInteger',\n value: exponentResult.formattedString,\n });\n }\n return result;\n}\nfunction getPatternForSign(pattern, sign) {\n if (pattern.indexOf(';') < 0) {\n pattern = pattern + \";-\" + pattern;\n }\n var _a = pattern.split(';'), zeroPattern = _a[0], negativePattern = _a[1];\n switch (sign) {\n case 0:\n return zeroPattern;\n case -1:\n return negativePattern;\n default:\n return negativePattern.indexOf('-') >= 0\n ? negativePattern.replace(/-/g, '+')\n : \"+\" + zeroPattern;\n }\n}\n// Find the CLDR pattern for compact notation based on the magnitude of data and style.\n//\n// Example return value: \"¤ {c:laki}000;¤{c:laki} -0\" (`sw` locale):\n// - Notice the `{c:...}` token that wraps the compact literal.\n// - The consecutive zeros are normalized to single zero to match CLDR_NUMBER_PATTERN.\n//\n// Returning null means the compact display pattern cannot be found.\nfunction getCompactDisplayPattern(numberResult, pl, data, style, compactDisplay, currencyDisplay, numberingSystem) {\n var _a;\n var roundedNumber = numberResult.roundedNumber, sign = numberResult.sign, magnitude = numberResult.magnitude;\n var magnitudeKey = String(Math.pow(10, magnitude));\n var defaultNumberingSystem = data.numbers.nu[0];\n var pattern;\n if (style === 'currency' && currencyDisplay !== 'name') {\n var byNumberingSystem = data.numbers.currency;\n var currencyData = byNumberingSystem[numberingSystem] ||\n byNumberingSystem[defaultNumberingSystem];\n // NOTE: compact notation ignores currencySign!\n var compactPluralRules = (_a = currencyData.short) === null || _a === void 0 ? void 0 : _a[magnitudeKey];\n if (!compactPluralRules) {\n return null;\n }\n pattern = selectPlural(pl, roundedNumber, compactPluralRules);\n }\n else {\n var byNumberingSystem = data.numbers.decimal;\n var byCompactDisplay = byNumberingSystem[numberingSystem] ||\n byNumberingSystem[defaultNumberingSystem];\n var compactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];\n if (!compactPlaralRule) {\n return null;\n }\n pattern = selectPlural(pl, roundedNumber, compactPlaralRule);\n }\n // See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n // > If the value is precisely “0”, either explicit or defaulted, then the normal number format\n // > pattern for that sort of object is supplied.\n if (pattern === '0') {\n return null;\n }\n pattern = getPatternForSign(pattern, sign)\n // Extract compact literal from the pattern\n .replace(/([^\\s;\\-\\+\\d¤]+)/g, '{c:$1}')\n // We replace one or more zeros with a single zero so it matches `CLDR_NUMBER_PATTERN`.\n .replace(/0+/, '0');\n return pattern;\n}\nfunction selectPlural(pl, x, rules) {\n return rules[pl.select(x)] || rules.other;\n}\n//# sourceMappingURL=format_to_parts.js.map","var internalSlotMap = new WeakMap();\nexport default function getInternalSlots(x) {\n var internalSlots = internalSlotMap.get(x);\n if (!internalSlots) {\n internalSlots = Object.create(null);\n internalSlotMap.set(x, internalSlots);\n }\n return internalSlots;\n}\n//# sourceMappingURL=get_internal_slots.js.map","import { createResolveLocale, defineProperty, formatNumericToString, getMagnitude, getOption, hasOwnProperty, invariant, isWellFormedCurrencyCode, isWellFormedUnitIdentifier, objectIs, setNumberFormatDigitOptions, supportedLocales, toObject, unpackData, } from '@formatjs/intl-utils';\nimport * as currencyDigitsData from './data/currency-digits.json';\nimport { names as numberingSystemNames } from './data/numbering-systems.json';\nimport formatToParts from './format_to_parts';\n// eslint-disable-next-line import/no-cycle\nimport getInternalSlots from './get_internal_slots';\nvar VALID_NUMBERING_SYSTEM_NAMES = new Set(numberingSystemNames);\nvar RESOLVED_OPTIONS_KEYS = [\n 'locale',\n 'numberingSystem',\n 'style',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'unit',\n 'unitDisplay',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits',\n 'useGrouping',\n 'notation',\n 'compactDisplay',\n 'signDisplay',\n];\n/**\n * Chop off the unicode extension from the locale string.\n */\nfunction removeUnicodeExtensionFromLocale(canonicalLocale) {\n var extensionIndex = canonicalLocale.indexOf('-u-');\n return extensionIndex >= 0\n ? canonicalLocale.slice(0, extensionIndex)\n : canonicalLocale;\n}\n/**\n * https://tc39.es/ecma402/#sec-currencydigits\n */\nfunction currencyDigits(c) {\n return hasOwnProperty(currencyDigitsData, c)\n ? currencyDigitsData[c]\n : 2;\n}\n/**\n * https://tc39.es/ecma402/#sec-initializenumberformat\n */\nfunction initializeNumberFormat(nf, locales, opts) {\n // @ts-ignore\n var requestedLocales = Intl.getCanonicalLocales(locales);\n var options = opts === undefined ? Object.create(null) : toObject(opts);\n var opt = Object.create(null);\n var matcher = getOption(options, 'localeMatcher', 'string', ['lookup', 'best fit'], 'best fit');\n opt.localeMatcher = matcher;\n var numberingSystem = getOption(options, 'numberingSystem', 'string', undefined, undefined);\n if (numberingSystem !== undefined &&\n !VALID_NUMBERING_SYSTEM_NAMES.has(numberingSystem)) {\n // 8.a. If numberingSystem does not match the Unicode Locale Identifier type nonterminal,\n // throw a RangeError exception.\n throw RangeError(\"Invalid numberingSystems: \" + numberingSystem);\n }\n opt.nu = numberingSystem;\n var localeData = NumberFormat.localeData;\n var r = createResolveLocale(NumberFormat.getDefaultLocale)(NumberFormat.availableLocales, requestedLocales, opt, \n // [[RelevantExtensionKeys]] slot, which is a constant\n ['nu'], localeData);\n var dataLocaleData = localeData[removeUnicodeExtensionFromLocale(r.locale)];\n var internalSlots = getInternalSlots(nf);\n internalSlots.locale = r.locale;\n internalSlots.dataLocale = r.dataLocale;\n internalSlots.numberingSystem = r.nu;\n internalSlots.dataLocaleData = dataLocaleData;\n setNumberFormatUnitOptions(nf, options);\n var style = internalSlots.style;\n var mnfdDefault;\n var mxfdDefault;\n if (style === 'currency') {\n var currency = internalSlots.currency;\n var cDigits = currencyDigits(currency);\n mnfdDefault = cDigits;\n mxfdDefault = cDigits;\n }\n else {\n mnfdDefault = 0;\n mxfdDefault = style === 'percent' ? 0 : 3;\n }\n var notation = getOption(options, 'notation', 'string', ['standard', 'scientific', 'engineering', 'compact'], 'standard');\n internalSlots.notation = notation;\n setNumberFormatDigitOptions(internalSlots, options, mnfdDefault, mxfdDefault, notation);\n var compactDisplay = getOption(options, 'compactDisplay', 'string', ['short', 'long'], 'short');\n if (notation === 'compact') {\n internalSlots.compactDisplay = compactDisplay;\n }\n var useGrouping = getOption(options, 'useGrouping', 'boolean', undefined, true);\n internalSlots.useGrouping = useGrouping;\n var signDisplay = getOption(options, 'signDisplay', 'string', ['auto', 'never', 'always', 'exceptZero'], 'auto');\n internalSlots.signDisplay = signDisplay;\n return nf;\n}\n/**\n * https://tc39.es/ecma402/#sec-formatnumberstring\n */\nfunction partitionNumberPattern(numberFormat, x) {\n var _a;\n var internalSlots = getInternalSlots(numberFormat);\n var pl = internalSlots.pl, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;\n var symbols = dataLocaleData.numbers.symbols[numberingSystem] ||\n dataLocaleData.numbers.symbols[dataLocaleData.numbers.nu[0]];\n var magnitude = 0;\n var exponent = 0;\n var n;\n if (isNaN(x)) {\n n = symbols.nan;\n }\n else if (!isFinite(x)) {\n n = symbols.infinity;\n }\n else {\n if (internalSlots.style === 'percent') {\n x *= 100;\n }\n _a = computeExponent(numberFormat, x), exponent = _a[0], magnitude = _a[1];\n // Preserve more precision by doing multiplication when exponent is negative.\n x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);\n var formatNumberResult = formatNumericToString(internalSlots, x);\n n = formatNumberResult.formattedString;\n x = formatNumberResult.roundedNumber;\n }\n // Based on https://tc39.es/ecma402/#sec-getnumberformatpattern\n // We need to do this before `x` is rounded.\n var sign;\n var signDisplay = internalSlots.signDisplay;\n switch (signDisplay) {\n case 'never':\n sign = 0;\n break;\n case 'auto':\n if (objectIs(x, 0) || x > 0 || isNaN(x)) {\n sign = 0;\n }\n else {\n sign = -1;\n }\n break;\n case 'always':\n if (objectIs(x, 0) || x > 0 || isNaN(x)) {\n sign = 1;\n }\n else {\n sign = -1;\n }\n break;\n default:\n // x === 0 -> x is 0 or x is -0\n if (x === 0 || isNaN(x)) {\n sign = 0;\n }\n else if (x > 0) {\n sign = 1;\n }\n else {\n sign = -1;\n }\n }\n return formatToParts({ roundedNumber: x, formattedString: n, exponent: exponent, magnitude: magnitude, sign: sign }, internalSlots.dataLocaleData, pl, internalSlots);\n}\nfunction formatNumericToParts(numberFormat, x) {\n return partitionNumberPattern(numberFormat, x);\n}\n/**\n * https://tc39.es/ecma402/#sec-intl-numberformat-constructor\n */\nexport var NumberFormat = function (locales, options) {\n // Cannot use `new.target` bc of IE11 & TS transpiles it to something else\n if (!this || !(this instanceof NumberFormat)) {\n return new NumberFormat(locales, options);\n }\n initializeNumberFormat(this, locales, options);\n var internalSlots = getInternalSlots(this);\n var dataLocale = internalSlots.dataLocale;\n var dataLocaleData = NumberFormat.localeData[dataLocale];\n invariant(dataLocaleData !== undefined, \"Cannot load locale-dependent data for \" + dataLocale + \".\");\n internalSlots.pl = new Intl.PluralRules(dataLocale, {\n minimumFractionDigits: internalSlots.minimumFractionDigits,\n maximumFractionDigits: internalSlots.maximumFractionDigits,\n minimumIntegerDigits: internalSlots.minimumIntegerDigits,\n minimumSignificantDigits: internalSlots.minimumSignificantDigits,\n maximumSignificantDigits: internalSlots.maximumSignificantDigits,\n });\n};\ndefineProperty(NumberFormat.prototype, 'formatToParts', {\n value: function formatToParts(x) {\n return formatNumericToParts(this, toNumeric(x));\n },\n});\ndefineProperty(NumberFormat.prototype, 'resolvedOptions', {\n value: function resolvedOptions() {\n if (typeof this !== 'object' || !(this instanceof NumberFormat)) {\n throw TypeError('Method Intl.NumberFormat.prototype.resolvedOptions called on incompatible receiver');\n }\n var internalSlots = getInternalSlots(this);\n var ro = {};\n for (var _i = 0, RESOLVED_OPTIONS_KEYS_1 = RESOLVED_OPTIONS_KEYS; _i < RESOLVED_OPTIONS_KEYS_1.length; _i++) {\n var key = RESOLVED_OPTIONS_KEYS_1[_i];\n var value = internalSlots[key];\n if (value !== undefined) {\n ro[key] = value;\n }\n }\n return ro;\n },\n});\nvar formatDescriptor = {\n enumerable: false,\n configurable: true,\n get: function () {\n if (typeof this !== 'object' || !(this instanceof NumberFormat)) {\n throw TypeError('Intl.NumberFormat format property accessor called on incompatible receiver');\n }\n var internalSlots = getInternalSlots(this);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var numberFormat = this;\n var boundFormat = internalSlots.boundFormat;\n if (boundFormat === undefined) {\n // https://tc39.es/proposal-unified-intl-numberformat/section11/numberformat_diff_out.html#sec-number-format-functions\n boundFormat = function (value) {\n // TODO: check bigint\n var x = toNumeric(value);\n return numberFormat\n .formatToParts(x)\n .map(function (x) { return x.value; })\n .join('');\n };\n try {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/format-function-name.js\n Object.defineProperty(boundFormat, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: '',\n });\n }\n catch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n }\n internalSlots.boundFormat = boundFormat;\n }\n return boundFormat;\n },\n};\ntry {\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/prototype/format/name.js\n Object.defineProperty(formatDescriptor.get, 'name', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 'get format',\n });\n}\ncatch (e) {\n // In older browser (e.g Chrome 36 like polyfill.io)\n // TypeError: Cannot redefine property: name\n}\nObject.defineProperty(NumberFormat.prototype, 'format', formatDescriptor);\n// Static properties\ndefineProperty(NumberFormat, 'supportedLocalesOf', {\n value: function supportedLocalesOf(locales, options) {\n return supportedLocales(NumberFormat.availableLocales, Intl.getCanonicalLocales(locales), options);\n },\n});\nNumberFormat.__addLocaleData = function __addLocaleData() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var datum = data_1[_a];\n var availableLocales = datum.availableLocales;\n for (var _b = 0, availableLocales_1 = availableLocales; _b < availableLocales_1.length; _b++) {\n var locale = availableLocales_1[_b];\n try {\n NumberFormat.localeData[locale] = unpackData(locale, datum);\n }\n catch (e) {\n // Ignore if we got no data\n }\n }\n }\n NumberFormat.availableLocales = Object.keys(NumberFormat.localeData);\n if (!NumberFormat.__defaultLocale) {\n NumberFormat.__defaultLocale = NumberFormat.availableLocales[0];\n }\n};\nNumberFormat.__defaultLocale = 'en';\nNumberFormat.localeData = {};\nNumberFormat.availableLocales = [];\nNumberFormat.getDefaultLocale = function () {\n return NumberFormat.__defaultLocale;\n};\nNumberFormat.polyfilled = true;\n/**\n * https://tc39.es/ecma402/#sec-setnumberformatunitoptions\n */\nfunction setNumberFormatUnitOptions(nf, options) {\n if (options === void 0) { options = Object.create(null); }\n var internalSlots = getInternalSlots(nf);\n var style = getOption(options, 'style', 'string', ['decimal', 'percent', 'currency', 'unit'], 'decimal');\n internalSlots.style = style;\n var currency = getOption(options, 'currency', 'string', undefined, undefined);\n if (currency !== undefined && !isWellFormedCurrencyCode(currency)) {\n throw RangeError('Malformed currency code');\n }\n if (style === 'currency' && currency === undefined) {\n throw TypeError('currency cannot be undefined');\n }\n var currencyDisplay = getOption(options, 'currencyDisplay', 'string', ['code', 'symbol', 'narrowSymbol', 'name'], 'symbol');\n var currencySign = getOption(options, 'currencySign', 'string', ['standard', 'accounting'], 'standard');\n var unit = getOption(options, 'unit', 'string', undefined, undefined);\n if (unit !== undefined && !isWellFormedUnitIdentifier(unit)) {\n throw RangeError('Invalid unit argument for Intl.NumberFormat()');\n }\n if (style === 'unit' && unit === undefined) {\n throw TypeError('unit cannot be undefined');\n }\n var unitDisplay = getOption(options, 'unitDisplay', 'string', ['short', 'narrow', 'long'], 'short');\n if (style === 'currency') {\n internalSlots.currency = currency.toUpperCase();\n internalSlots.currencyDisplay = currencyDisplay;\n internalSlots.currencySign = currencySign;\n }\n if (style === 'unit') {\n internalSlots.unit = unit;\n internalSlots.unitDisplay = unitDisplay;\n }\n}\n/**\n * The abstract operation ComputeExponent computes an exponent (power of ten) by which to scale x\n * according to the number formatting settings. It handles cases such as 999 rounding up to 1000,\n * requiring a different exponent.\n *\n * NOT IN SPEC: it returns [exponent, magnitude].\n */\nfunction computeExponent(numberFormat, x) {\n if (x === 0) {\n return [0, 0];\n }\n if (x < 0) {\n x = -x;\n }\n var magnitude = getMagnitude(x);\n var exponent = computeExponentForMagnitude(numberFormat, magnitude);\n // Preserve more precision by doing multiplication when exponent is negative.\n x = exponent < 0 ? x * Math.pow(10, -exponent) : x / Math.pow(10, exponent);\n var formatNumberResult = formatNumericToString(getInternalSlots(numberFormat), x);\n if (formatNumberResult.roundedNumber === 0) {\n return [exponent, magnitude];\n }\n var newMagnitude = getMagnitude(formatNumberResult.roundedNumber);\n if (newMagnitude === magnitude - exponent) {\n return [exponent, magnitude];\n }\n return [\n computeExponentForMagnitude(numberFormat, magnitude + 1),\n magnitude + 1,\n ];\n}\n/**\n * The abstract operation ComputeExponentForMagnitude computes an exponent by which to scale a\n * number of the given magnitude (power of ten of the most significant digit) according to the\n * locale and the desired notation (scientific, engineering, or compact).\n */\nfunction computeExponentForMagnitude(numberFormat, magnitude) {\n var internalSlots = getInternalSlots(numberFormat);\n var notation = internalSlots.notation, dataLocaleData = internalSlots.dataLocaleData, numberingSystem = internalSlots.numberingSystem;\n switch (notation) {\n case 'standard':\n return 0;\n case 'scientific':\n return magnitude;\n case 'engineering':\n return Math.floor(magnitude / 3) * 3;\n default: {\n // Let exponent be an implementation- and locale-dependent (ILD) integer by which to scale a\n // number of the given magnitude in compact notation for the current locale.\n var compactDisplay = internalSlots.compactDisplay, style = internalSlots.style, currencyDisplay = internalSlots.currencyDisplay;\n var thresholdMap = void 0;\n if (style === 'currency' && currencyDisplay !== 'name') {\n var currency = dataLocaleData.numbers.currency[numberingSystem] ||\n dataLocaleData.numbers.currency[dataLocaleData.numbers.nu[0]];\n thresholdMap = currency.short;\n }\n else {\n var decimal = dataLocaleData.numbers.decimal[numberingSystem] ||\n dataLocaleData.numbers.decimal[dataLocaleData.numbers.nu[0]];\n thresholdMap = compactDisplay === 'long' ? decimal.long : decimal.short;\n }\n if (!thresholdMap) {\n return 0;\n }\n var num = String(Math.pow(10, magnitude));\n var thresholds = Object.keys(thresholdMap); // TODO: this can be pre-processed\n if (num < thresholds[0]) {\n return 0;\n }\n if (num > thresholds[thresholds.length - 1]) {\n return thresholds[thresholds.length - 1].length - 1;\n }\n var i = thresholds.indexOf(num);\n if (i === -1) {\n return 0;\n }\n // See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n // Special handling if the pattern is precisely `0`.\n var magnitudeKey = thresholds[i];\n // TODO: do we need to handle plural here?\n var compactPattern = thresholdMap[magnitudeKey].other;\n if (compactPattern === '0') {\n return 0;\n }\n // Example: in zh-TW, `10000000` maps to `0000萬`. So we need to return 8 - 4 = 4 here.\n return (magnitudeKey.length -\n thresholdMap[magnitudeKey].other.match(/0+/)[0].length);\n }\n }\n}\nfunction toNumeric(val) {\n if (typeof val === 'bigint') {\n return val;\n }\n return toNumber(val);\n}\nfunction toNumber(val) {\n if (val === undefined) {\n return NaN;\n }\n if (val === null) {\n return +0;\n }\n if (typeof val === 'boolean') {\n return val ? 1 : +0;\n }\n if (typeof val === 'number') {\n return val;\n }\n if (typeof val === 'symbol' || typeof val === 'bigint') {\n throw new TypeError('Cannot convert symbol/bigint to number');\n }\n return Number(val);\n}\ntry {\n // IE11 does not have Symbol\n if (typeof Symbol !== 'undefined') {\n Object.defineProperty(NumberFormat.prototype, Symbol.toStringTag, {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 'Object',\n });\n }\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/length.js\n Object.defineProperty(NumberFormat.prototype.constructor, 'length', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 0,\n });\n // https://github.com/tc39/test262/blob/master/test/intl402/NumberFormat/supportedLocalesOf/length.js\n Object.defineProperty(NumberFormat.supportedLocalesOf, 'length', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: 1,\n });\n Object.defineProperty(NumberFormat, 'prototype', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: NumberFormat.prototype,\n });\n}\ncatch (e) {\n // Meta fix so we're test262-compliant, not important\n}\n//# sourceMappingURL=core.js.map","/* eslint-disable import/no-cycle */\nexport * from './core';\nexport * from './to_locale_string';\n/**\n * Check if a formatting number with unit is supported\n * @public\n * @param unit unit to check\n */\nexport function isUnitSupported(unit) {\n try {\n new Intl.NumberFormat(undefined, {\n style: 'unit',\n // @ts-ignore\n unit: unit,\n });\n }\n catch (e) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line import/no-cycle\nimport { NumberFormat } from './core';\n/**\n * Number.prototype.toLocaleString ponyfill\n * https://tc39.es/ecma402/#sup-number.prototype.tolocalestring\n */\nexport function toLocaleString(x, locales, options) {\n var numberFormat = new NumberFormat(locales, options);\n return numberFormat.format(x);\n}\n//# sourceMappingURL=to_locale_string.js.map"],"names":["invariant","condition","message","Err","Error","toObject","arg","TypeError","Object","getOption","opts","prop","type","values","fallback","value","undefined","Boolean","o","String","toString","filter","val","length","RangeError","join","defaultNumberOption","min","max","Number","isNaN","Math","floor","setNumberFormatDigitOptions","internalSlots","mnfdDefault","mxfdDefault","notation","minimum","maximum","mnid","mnfd","minimumFractionDigits","mxfd","maximumFractionDigits","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","minimumIntegerDigits","roundingType","objectIs","x","y","is","NOT_A_Z_REGEX","isWellFormedCurrencyCode","currency","replace","_","c","toUpperCase","test","formatNumericToString","result","isNegative","toRawPrecision","toRawFixed","integerDigitsCount","roundedNumber","string","formattedString","int","minInteger","repeat","minFraction","maxFraction","_a","mantissa","exponent","m","k","a","f","n","round","pow","xFinal","split","slice","cut","minPrecision","maxPrecision","e","xToString","xToStringExponentIndex","xToStringMantissa","xToStringExponent","xToStringMantissaWithoutDecimalPoint","decimalPlaceOffset","p","indexOf","getMagnitude","adjustDecimalPlace","magnitude","s","times","arr","Array","i","log","LOG10E","SHORTENED_SACTION_UNITS","map","unit","isWellFormedUnitIdentifier","toLowerCase","units","defineProperty","target","name","configurable","enumerable","writable","extendStatics","__extends","d","b","setPrototypeOf","__proto__","hasOwnProperty","__","this","constructor","prototype","create","__assign","assign","t","arguments","call","apply","createResolveLocale","getDefaultLocale","lookupMatcher","availableLocales","requestedLocales","locale","_i","requestedLocales_1","noExtensionLocale","UNICODE_EXTENSION_SEQUENCE_REGEX","availableLocale","bestAvailableLocale","extension","bestFitMatcher","requestedLocales_2","options","relevantExtensionKeys","localeData","privateIndex","r","localeMatcher","foundLocale","dataLocale","supportedExtension","relevantExtensionKeys_1","key","foundLocaleData","keyLocaleData","isArray","requestedValue","optionsValue","supportedExtensionAddition","unicodeExtensionValue","Intl","getCanonicalLocales","size","searchValue","pos","start","end","done","candidate","lastIndexOf","lookupSupportedLocales","subset","requestedLocales_3","push","_super","MissingLocaleDataError","_this","unpackData","reducer","all","localeHierarchy","results","localeParts","getLocaleHierarchy","dataToMerge","l","data","reverse","reduce","S_UNICODE_REGEX","CARET_S_UNICODE_REGEX","RegExp","source","S_DOLLAR_UNICODE_REGEX","CLDR_NUMBER_PATTERN","formatToParts","numberResult","pl","nonNameCurrencyPart","numberPattern","currencyData","afterCurrency","beforeCurrency","sign","style","numberingSystem","defaultNumberingSystem","numbers","nu","compactNumberPattern","compactDisplay","currencyDisplay","pattern","magnitudeKey","byNumberingSystem","compactPluralRules","short","selectPlural","compactPlaralRule","decimal","getPatternForSign","getCompactDisplayPattern","byCurrencyDisplay","currencies","symbol","narrow","currencySign","percent","currencySpacing","afterInsertBetween","beforeInsertBetween","numberPatternParts","numberParts","symbols","numberPatternParts_1","part","paritionNumberIntoParts","useGrouping","minusSign","plusSign","percentSign","substring","unitPattern","unitName","currencyNameData","displayName","unitPatternParts_1","_b","numeratorUnit","denominatorUnit","numeratorUnitPattern","perUnitPattern","perPattern","denominatorPattern","unitDisplay","_c","_d","simple","perUnit","compound","per","interpolateMatch","exec","isFinite","digitReplacementTable","digitMapping","digit","integer","fraction","exponentResult","decimalSepIndex","groupSepSymbol","group","groups","integerGroup","pop","exponential","zeroPattern","negativePattern","rules","select","other","internalSlotMap","WeakMap","getInternalSlots","get","set","VALID_NUMBERING_SYSTEM_NAMES","Set","RESOLVED_OPTIONS_KEYS","currencyDigits","currencyDigitsData","initializeNumberFormat","nf","locales","opt","matcher","has","canonicalLocale","extensionIndex","NumberFormat","dataLocaleData","setNumberFormatUnitOptions","signDisplay","partitionNumberPattern","numberFormat","formatNumberResult","nan","computeExponentForMagnitude","computeExponent","infinity","PluralRules","toNumeric","ro","RESOLVED_OPTIONS_KEYS_1","formatDescriptor","boundFormat","thresholdMap","long","num","thresholds","keys","match","NaN","toNumber","__addLocaleData","data_1","datum","availableLocales_1","__defaultLocale","polyfilled","Symbol","toStringTag","supportedLocalesOf","format"],"mappings":"6MAAO,SAASA,EAAUC,EAAWC,EAASC,GAE1C,QADY,IAARA,IAAkBA,EAAMC,QACvBH,EACD,MAAM,IAAIE,EAAID,GCMf,SAASG,EAASC,GACrB,GAAW,MAAPA,EACA,MAAM,IAAIC,UAAU,gDAExB,OAAOC,OAAOF,GAoBX,SAASG,EAAUC,EAAMC,EAAMC,EAAMC,EAAQC,GAEhD,IAAIC,EAAQL,EAAKC,GACjB,QAAcK,IAAVD,EAeJ,OAAOD,EAdH,GAAa,YAATF,GAA+B,WAATA,EACtB,MAAM,IAAIL,UAAU,gBAQxB,GANa,YAATK,IACAG,EAAQE,QAAQF,IAEP,WAATH,IACAG,EA1BL,SAAkBG,GAErB,GAAiB,iBAANA,EACP,MAAMX,UAAU,6CAEpB,OAAOY,OAAOD,GAqBEE,CAASL,SAENC,IAAXH,IAAyBA,EAAOQ,OAAO,SAAUC,GAAO,OAAOA,GAAOP,IAAUQ,OAChF,MAAM,IAAIC,WAAWT,EAAQ,kBAAoBF,EAAOY,KAAK,OAEjE,OAAOV,EAWR,SAASW,EAAoBJ,EAAKK,EAAKC,EAAKd,GAC/C,QAAYE,IAARM,EAOJ,OAAOR,EALH,GADAQ,EAAMO,OAAOP,GACTQ,MAAMR,IAAQA,EAAMK,GAAaC,EAANN,EAC3B,MAAM,IAAIE,WAAWF,EAAM,yBAA2BK,EAAM,KAAOC,EAAM,KAE7E,OAAOG,KAAKC,MAAMV,GAkFnB,SAASW,EAA4BC,EAAexB,EAAMyB,EAAaC,EAAaC,GACvF,IAvE+CC,EAASC,EAASzB,EAuE7D0B,GAvEoDD,EAuEI,GAvEKzB,EAAlBwB,EAuEU,EArElDZ,EAqEoBhB,EAAM,wBArED4B,EAASC,EAASzB,IAsE9C2B,EAAO/B,EAAKgC,sBACZC,EAAOjC,EAAKkC,sBACZC,EAAOnC,EAAKoC,yBACZC,EAAOrC,EAAKsC,yBAChBd,EAAce,qBAAuBT,OACxBxB,IAAT6B,QAA+B7B,IAAT+B,GACtBb,EAAcgB,aAAe,oBAC7BL,EAAOnB,EAAoBmB,EAAM,EAAG,GAAI,GACxCE,EAAOrB,EAAoBqB,EAAMF,EAAM,GAAI,IAC3CX,EAAcY,yBAA2BD,EACzCX,EAAcc,yBAA2BD,QAE3B/B,IAATyB,QAA+BzB,IAAT2B,GAC3BT,EAAcgB,aAAe,iBAC7BT,EAAOf,EAAoBe,EAAM,EAAG,GAAIN,GAExCQ,EAAOjB,EAAoBiB,EAAMF,EAAM,GADfV,KAAKH,IAAIa,EAAML,IAEvCF,EAAcQ,sBAAwBD,EACtCP,EAAcU,sBAAwBD,GAEpB,YAAbN,EACLH,EAAcgB,aAAe,mBAG7BhB,EAAcgB,aAAe,iBAC7BhB,EAAcQ,sBAAwBP,EACtCD,EAAcU,sBAAwBR,GAGvC,SAASe,EAASC,EAAGC,GACxB,OAAI7C,OAAO8C,GACA9C,OAAO8C,GAAGF,EAAGC,GAGpBD,IAAMC,EAGO,IAAND,GAAW,EAAIA,GAAM,EAAIC,EAG7BD,GAAMA,GAAKC,GAAMA,EAE5B,IAAIE,EAAgB,SAWb,SAASC,EAAyBC,GAErC,OAAwB,KADxBA,EAAuBA,EANZC,QAAQ,WAAY,SAAUC,EAAGC,GAAK,OAAOA,EAAEC,iBAO7CtC,SAGTgC,EAAcO,KAAKL,GASpB,SAASM,EAAsB7B,EAAekB,GACjD,IAIIY,EAJAC,EAAab,EAAI,GAAKD,EAASC,GAAI,GAMvC,OALIa,IACAb,GAAKA,GAGWlB,EAAcgB,cAE9B,IAAK,oBACDc,EAASE,EAAed,EAAGlB,EAAcY,yBAA0BZ,EAAcc,0BACjF,MACJ,IAAK,iBACDgB,EAASG,EAAWf,EAAGlB,EAAcQ,sBAAuBR,EAAcU,uBAC1E,MACJ,QAEoC,GADhCoB,EAASE,EAAed,EAAG,EAAG,IACnBgB,qBACPJ,EAASG,EAAWf,EAAG,EAAG,IAItCA,EAAIY,EAAOK,cACX,IAAIC,EAASN,EAAOO,gBAChBC,EAAMR,EAAOI,mBACbK,EAAavC,EAAce,qBAQ/B,OAPIuB,EAAMC,IAENH,EADmBI,EAAO,IAAKD,EAAaD,GACpBF,GAExBL,IACAb,GAAKA,GAEF,CAAEiB,cAAejB,EAAGmB,gBAAiBD,GASzC,SAASH,EAAWf,EAAGuB,EAAaC,GACvC,IAYQC,EAAmBC,EAAkBC,EACzCC,EAGAR,EAEIS,EAMAC,EAxBJC,EAAIP,EACJQ,EAAIrD,KAAKsD,MAAMjC,EAAIrB,KAAKuD,IAAI,GAAIH,IAChCI,EAASH,EAAIrD,KAAKuD,IAAI,GAAIH,GAK1BC,EAAI,KACJJ,EAAII,EAAEhE,YAIiB0D,GAAnBD,GADJG,EAAII,EAAEhE,YACKoE,MAAM,MAAoB,GAAIT,EAAWF,EAAG,GACvDG,EAAIF,EAASpB,QAAQ,IAAK,IAC1BsB,GAAQN,EAAO,IAAK3C,KAAKH,IAAKmD,EAAWC,EAAEzD,OAAS,EAAG,KAavDiD,EAVM,IAANW,IACIF,EAAID,EAAEzD,SACD4D,IAELH,EADQN,EAAO,IAAKS,EAAI,EAAIF,GACpBD,EACRC,EAAIE,EAAI,GAIZH,GAFIE,EAAIF,EAAES,MAAM,EAAGR,EAAIE,IAEf,IADAH,EAAES,MAAMR,EAAIE,GAEdD,EAAE3D,QAGFyD,EAAEzD,OAGZ,IADA,IAAImE,EAAMd,EAAcD,EACX,EAANe,GAA+B,MAApBV,EAAEA,EAAEzD,OAAS,IAC3ByD,EAAIA,EAAES,MAAM,GAAI,GAChBC,IAKJ,MAHwB,MAApBV,EAAEA,EAAEzD,OAAS,KACbyD,EAAIA,EAAES,MAAM,GAAI,IAEb,CAAElB,gBAAiBS,EAAGX,cAAekB,EAAQnB,mBAAoBI,GAGrE,SAASN,EAAed,EAAGuC,EAAcC,GAC5C,IACIZ,EACAa,EAQIC,EAKAC,EACAlB,EAA2BmB,EAA2BC,EACtDC,EAWIC,EAGAf,EAPJG,EAmBJf,EA3CA4B,EAAIR,EAwDR,GAjDIL,EAHM,IAANnC,GACA4B,EAAIN,EAAO,IAAK0B,GAChBP,EAAI,IASAE,GALAD,EAAY1C,EAAEhC,YAKqBiF,QAAQ,KAChBL,GAA3BnB,EAAKiB,EAAUN,MAAM,MAA6B,GAAIS,EAAoBpB,EAAG,GAC7EqB,EAAuCF,EAAkBtC,QAAQ,IAAK,IAC5C,GAA1BqC,GACAG,EAAqC3E,QAAU6E,GAC/CP,GAAKI,EACLjB,EACIkB,EACIxB,EAAO,IAAK0B,EAAIF,EAAqC3E,QACpD6B,IAIL+C,GADJN,EAAIS,EAAalD,IACYgD,EAAI,EAG7BhB,EAAIrD,KAAKsD,MAAMkB,EAAmBnD,EAAG+C,IAEL,IAAhCI,EAAmBnB,EAAGgB,EAAI,KAC1BP,GAAQ,EAERT,EAAIrD,KAAKC,MAAMoD,EAAI,KAEvBJ,EAAII,EAAEhE,WAEGmF,EAAmBnB,EAAGgB,EAAI,EAAIP,KAM3CrB,EAFK4B,EAAI,GAATP,GACAb,GAAQN,EAAO,IAAKmB,EAAIO,EAAI,GACtBP,EAAI,GAEA,GAALA,GACLb,EAAIA,EAAES,MAAM,EAAGI,EAAI,GAAK,IAAMb,EAAES,MAAMI,EAAI,GACpCA,EAAI,IAGVb,EAAI,KAAON,EAAO,KAAMmB,EAAI,GAAKb,EAC3B,GAEY,GAAlBA,EAAEqB,QAAQ,MAA4BV,EAAfC,EAA6B,CAEpD,IADA,IAAIF,EAAME,EAAeD,EACZ,EAAND,GAA+B,MAApBV,EAAEA,EAAEzD,OAAS,IAC3ByD,EAAIA,EAAES,MAAM,GAAI,GAChBC,IAEoB,MAApBV,EAAEA,EAAEzD,OAAS,KACbyD,EAAIA,EAAES,MAAM,GAAI,IAGxB,MAAO,CAAElB,gBAAiBS,EAAGX,cAAekB,EAAQnB,mBAAoBI,GAExE,SAAS+B,EAAmBnD,EAAGoD,GAC3B,OAAOA,EAAY,EAAIpD,EAAIrB,KAAKuD,IAAI,IAAKkB,GAAapD,EAAIrB,KAAKuD,IAAI,GAAIkB,IAGxE,SAAS9B,EAAO+B,EAAGC,GACtB,GAAwB,mBAAbD,EAAE/B,OACT,OAAO+B,EAAE/B,OAAOgC,GAGpB,IADA,IAAIC,EAAM,IAAIC,MAAMF,GACXG,EAAI,EAAGA,EAAIF,EAAIpF,OAAQsF,IAC5BF,EAAIE,GAAKJ,EAEb,OAAOE,EAAIlF,KAAK,IAMb,SAAS6E,EAAalD,GAGzB,OAAOrB,KAAKC,MAAMD,KAAK+E,IAAI1D,GAAKrB,KAAKgF,QASzC,IAAIC,EChZ0B,CAC1B,eACA,YACA,eACA,mBACA,cACA,eACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,mBACA,kBACA,mBACA,eACA,gBACA,uBACA,kBACA,iBACA,kBACA,gBACA,gBACA,oBACA,cACA,cACA,mBACA,eACA,2BACA,cACA,oBACA,cACA,YACA,gBACA,aACA,aACA,aACA,sBACA,yBACA,qBACA,gBACA,eACA,qBDqW2CC,IAAI,SAAUC,GACzD,OAAOA,EAAKxD,QAAQ,UAAW,MAM5B,SAASyD,EAA2BD,GAEvC,GADAA,EAAmBA,EAVRxD,QAAQ,WAAY,SAAUC,EAAGC,GAAK,OAAOA,EAAEwD,iBAWb,EAAzCJ,EAAwBX,QAAQa,GAChC,OAAO,EAEX,IAAIG,EAAQH,EAAK1B,MAAM,SACvB,QAAqB,IAAjB6B,EAAM9F,QAGNyF,EAAwBX,QAAQgB,EAAM,IAAM,GAC5CL,EAAwBX,QAAQgB,EAAM,IAAM,GAe7C,SAASC,EAAeC,EAAQC,EAAM3C,GACzC,IAAI9D,EAAQ8D,EAAG9D,MACfP,OAAO8G,eAAeC,EAAQC,EAAM,CAChCC,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAOA,IEvbf,IACQ6G,EADJC,GACID,EAAgB,SAAUE,EAAGC,GAI7B,OAHAH,EAAgBpH,OAAOwH,gBAClB,CAAEC,UAAW,cAAgBrB,OAAS,SAAUkB,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAI3B,KAAK2B,EAAOA,EAAEG,eAAe9B,KAAI0B,EAAE1B,GAAK2B,EAAE3B,MACpD0B,EAAGC,IAErB,SAAUD,EAAGC,GAEhB,SAASI,IAAOC,KAAKC,YAAcP,EADnCF,EAAcE,EAAGC,GAEjBD,EAAEQ,UAAkB,OAANP,EAAavH,OAAO+H,OAAOR,IAAMI,EAAGG,UAAYP,EAAEO,UAAW,IAAIH,KAGnFK,EAAsC,WAStC,OARAA,EAAWhI,OAAOiI,QAAU,SAASC,GACjC,IAAK,IAAIjC,EAAGI,EAAI,EAAGzB,EAAIuD,UAAUpH,OAAQsF,EAAIzB,EAAGyB,IAE5C,IAAK,IAAIT,KADTK,EAAIkC,UAAU9B,GACOrG,OAAO8H,UAAUJ,eAAeU,KAAKnC,EAAGL,KACzDsC,EAAEtC,GAAKK,EAAEL,IAEjB,OAAOsC,IAEKG,MAAMT,KAAMO,YAIzB,SAASG,EAAoBC,GAChC,IA2IyBA,EAsBCA,EAjKtBC,EA+IG,SAAuBC,EAAkBC,GAE5C,IADA,IAAIlF,EAAS,CAAEmF,OAAQ,IACdC,EAAK,EAAGC,EAAqBH,EAAkBE,EAAKC,EAAmB9H,OAAQ6H,IAAM,CAC1F,IAAID,EAASE,EAAmBD,GAC5BE,EAAoBH,EAAOzF,QAAQ6F,EAAkC,IACrEC,EAAkBC,EAAoBR,EAAkBK,GAC5D,GAAIE,EAKA,OAJAxF,EAAOmF,OAASK,EACZL,IAAWG,IACXtF,EAAO0F,UAAYP,EAAO1D,MAAM6D,EAAkB/H,OAAS,EAAG4H,EAAO5H,SAElEyC,EAIf,OADAA,EAAOmF,OAASJ,IACT/E,GA7JP2F,GAgKsBZ,EAtBDA,EA3IeA,EAkKjC,SAAwBE,EAAkBC,GAE7C,IADA,IAAIlF,EAAS,CAAEmF,OAAQ,IACdC,EAAK,EAAGQ,EAAqBV,EAAkBE,EAAKQ,EAAmBrI,OAAQ6H,IAAM,CAC1F,IAAID,EAASS,EAAmBR,GAC5BE,EAAoBH,EAAOzF,QAAQ6F,EAAkC,IACrEC,EAAkBC,EAAoBR,EAAkBK,GAC5D,GAAIE,EAKA,OAJAxF,EAAOmF,OAASK,EACZL,IAAWG,IACXtF,EAAO0F,UAAYP,EAAO1D,MAAM6D,EAAkB/H,OAAS,EAAG4H,EAAO5H,SAElEyC,EAIf,OADAA,EAAOmF,OAASJ,IACT/E,IA5KX,OAAO,SAAuBiF,EAAkBC,EAAkBW,EAASC,EAAuBC,GAY9F,IAXA,IAmDQC,EAhDJC,GADY,WAFFJ,EAAQK,cAGdlB,EAGAW,GAHcV,EAAkBC,GAKpCiB,EAAcF,EAAEd,OAChBnF,EAAS,CAAEmF,OAAQ,GAAIiB,WAAYD,GACnCE,EAAqB,KAChBjB,EAAK,EAAGkB,EAA0BR,EAAuBV,EAAKkB,EAAwB/I,OAAQ6H,IAAM,CACzG,IAAImB,EAAMD,EAAwBlB,GAC9BoB,EAAkBT,EAAWI,GACjCnK,EAAqC,iBAApBwK,GAAoD,OAApBA,EAA0B,eAAiBD,EAAM,sBAClG,IAAIE,EAAgBD,EAAgBD,GACpCvK,EAAU4G,MAAM8D,QAAQD,GAAgB,qBAAuBF,EAAM,qBACrE,IAAIxJ,EAAQ0J,EAAc,GAC1BzK,EAA2B,iBAAVe,GAAgC,OAAVA,EAAgB,gCACvD,IAEQ4J,EAeAC,EAjBJC,EAA6B,IAC7BZ,EAAEP,gBAEqB1I,KADnB2J,EAAiBG,EAAsBb,EAAEP,UAAWa,MAE7B,KAAnBI,GACKF,EAAcpE,QAAQsE,KAEvBE,EAA6B,IAAMN,EAAM,KADzCxJ,EAAQ4J,KAINA,EAAetE,QAAQ,UAC7BtF,EAAQ,OACR8J,EAA6B,IAAMN,IAI3CA,KAAOV,IAEP7J,EAAkC,iBAD9B4K,EAAef,EAAQU,KACjB,MACCK,EACgB,mDACtBH,EAAcpE,QAAQuE,IACnBA,IAAiB7J,IACjBA,EAAQ6J,EACRC,EAA6B,KAIzC7G,EAAOuG,GAAOxJ,EACdsJ,GAAsBQ,EAe1B,OAbgC,EAA5BR,EAAmB9I,UAEG,KADlByI,EAAeG,EAAY9D,QAAQ,QAEnC8D,GAA4BE,EAK5BF,EAFmBA,EAAY1E,MAAM,EAAGuE,GAEXK,EADTF,EAAY1E,MAAMuE,EAAcG,EAAY5I,QAGpE4I,EAAcY,KAAKC,oBAAoBb,GAAa,IAExDnG,EAAOmF,OAASgB,EACTnG,GAQf,SAAS8G,EAAsBpB,EAAWa,GACtCvK,EAAyB,IAAfuK,EAAIhJ,OAAc,4BAC5B,IAAI0J,EAAOvB,EAAUnI,OACjB2J,EAAc,IAAMX,EAAM,IAC1BY,EAAMzB,EAAUrD,QAAQ6E,GAC5B,IAAa,IAATC,EAAY,CAKZ,IAJA,IAAIC,EAAQD,EAAM,EACdE,EAAMD,EACNnG,EAAImG,EACJE,GAAO,GACHA,GAAM,CACV,IAAIzF,EAAI6D,EAAUrD,QAAQ,IAAKpB,GAQnB,MAND,IAAPY,EACMoF,EAAOhG,EAGPY,EAAIZ,GAGVqG,GAAO,GAEK,IAAPzF,GACLwF,EAAMJ,EACNK,GAAO,GAIPrG,GADAoG,EAAMxF,GACE,EAGhB,OAAO6D,EAAUjE,MAAM2F,EAAOC,GAIlC,GAFAH,EAAc,IAAMX,GAEP,KADbY,EAAMzB,EAAUrD,QAAQ6E,KACNC,EAAM,IAAMF,EAC1B,MAAO,GAIf,IAAI1B,EAAmC,0BAMvC,SAASE,EAAoBR,EAAkBE,GAE3C,IADA,IAAIoC,EAAYpC,IACH,CACT,IAAKF,EAAiB5C,QAAQkF,GAC1B,OAAOA,EAEX,IAAIJ,EAAMI,EAAUC,YAAY,KAChC,KAAML,EACF,OAEO,GAAPA,GAAmC,MAAvBI,EAAUJ,EAAM,KAC5BA,GAAO,GAEXI,EAAYA,EAAU9F,MAAM,EAAG0F,IAoDvC,SAASM,EAAuBxC,EAAkBC,GAE9C,IADA,IAAIwC,EAAS,GACJtC,EAAK,EAAGuC,EAAqBzC,EAAkBE,EAAKuC,EAAmBpK,OAAQ6H,IAAM,CAC1F,IAEII,EAAkBC,EAAoBR,EAF7B0C,EAAmBvC,GACD1F,QAAQ6F,EAAkC,KAErEC,GACAkC,EAAOE,KAAKpC,GAGpB,OAAOkC,EAaX,IAAsDG,EAAlDC,GAAkDD,EAQpDzL,MAPEyH,EAAUiE,EAAwBD,GAM3BC,GALP,SAASA,IACL,IAAIC,EAAmB,OAAXF,GAAmBA,EAAOhD,MAAMT,KAAMO,YAAcP,KAEhE,OADA2D,EAAMnL,KAAO,sBACNmL,EAOR,SAASC,EAAW7C,EAAQY,EAEnCkC,QACoB,IAAZA,IAAsBA,EAAU,SAAUC,EAAKpE,GAAK,OAAQU,EAASA,EAAS,GAAI0D,GAAMpE,KAC5F,IAAIqE,EA/CD,SAA4BhD,GAG/B,IAFA,IAAIiD,EAAU,CAACjD,GACXkD,EAAclD,EAAO3D,MAAM,KACtBqB,EAAIwF,EAAY9K,OAAY,EAAJsF,EAAOA,IACpCuF,EAAQR,KAAKS,EAAY5G,MAAM,EAAGoB,EAAI,GAAGpF,KAAK,MAElD,OAAO2K,EAyCeE,CAAmBnD,GACrCoD,EAAcJ,EACblF,IAAI,SAAUuF,GAAK,OAAOzC,EAAW0C,KAAKD,KAC1CnL,OAAOJ,SACZ,IAAKsL,EAAYhL,OACb,MAAM,IAAIuK,EAAuB,4BAA+B3C,EAAS,wBAA2BgD,EAAgB1K,KAAK,OAG7H,OADA8K,EAAYG,UACLH,EAAYI,OAAOV,EAAS,4qEClQnCW,GAAkB,m6EAElBC,GAAwB,IAAIC,OAAO,IAAMF,GAAgBG,QAEzDC,GAAyB,IAAIF,OAAOF,GAAgBG,OAAS,KAC7DE,GAAsB,uBACX,SAASC,GAAcC,EAAcV,EAAMW,EAAIvD,GAC1D,IAUIwD,EAmCIC,EAcAC,EAcAC,EAIAC,EA7EJC,EAAOP,EAAaO,KAAM3I,EAAWoI,EAAapI,SAAUyB,EAAY2G,EAAa3G,UACrFnE,EAAWwH,EAAQxH,SAAUsL,EAAQ9D,EAAQ8D,MAAOC,EAAkB/D,EAAQ+D,gBAC9EC,EAAyBpB,EAAKqB,QAAQC,GAAG,GAGzCC,EAAuB,KAM3B,GALiB,YAAb3L,GAA0BmE,IAC1BwH,EAoUR,SAAkCb,EAAcC,EAAIX,EAAMkB,EAAOM,EAAgBC,EAAiBN,GAC9F,IAAI/I,EAIAsJ,EAHA9J,EAAgB8I,EAAa9I,cAAeqJ,EAAOP,EAAaO,KAAMlH,EAAY2G,EAAa3G,UAC/F4H,EAAejN,OAAOY,KAAKuD,IAAI,GAAIkB,IACnCqH,EAAyBpB,EAAKqB,QAAQC,GAAG,GAE7C,GAAc,aAAVJ,GAA4C,SAApBO,EAA4B,CACpD,IACIX,GADAc,EAAoB5B,EAAKqB,QAAQrK,UACAmK,IACjCS,EAAkBR,GAElBS,EAAmD,QAA7BzJ,EAAK0I,EAAagB,aAA0B,IAAP1J,OAAgB,EAASA,EAAGuJ,GAC3F,IAAKE,EACD,OAAO,KAEXH,EAAUK,GAAapB,EAAI/I,EAAeiK,OAEzC,CACD,IAAID,EAGAI,IAHAJ,EAAoB5B,EAAKqB,QAAQY,SACId,IACrCS,EAAkBR,IACmBI,GAAgBG,GACzD,IAAKK,EACD,OAAO,KAEXN,EAAUK,GAAapB,EAAI/I,EAAeoK,GAK9C,MAAgB,MAAZN,EAGJA,EAAUQ,GAAkBR,EAAST,GAEhChK,QAAQ,oBAAqB,UAE7BA,QAAQ,KAAM,KANR,KAnWgBkL,CAAyBzB,EAAcC,EAAIX,EAAMkB,EAAO9D,EAAQoE,eAAgBpE,EAAQqE,gBAAiBN,IAItH,aAAVD,GAAoD,SAA5B9D,EAAQqE,gBAA4B,CAC5D,IAAIW,EAAoBpC,EAAKqC,WAAWjF,EAAQpG,UAChD,GAAIoL,EACA,OAAQhF,EAAQqE,iBACZ,IAAK,OACDb,EAAsBxD,EAAQpG,SAC9B,MACJ,IAAK,SACD4J,EAAsBwB,EAAkBE,OACxC,MACJ,QACI1B,EAAsBwB,EAAkBG,YAMhD3B,EAAsBxD,EAAQpG,SA2BlC6J,EAvBCU,IAGa,YAAVL,GACU,SAAVA,GACW,aAAVA,GAAoD,SAA5B9D,EAAQqE,gBAER,IAATR,EAAa,KAAgB,IAAVA,EAAc,KAAO,KAEzC,aAAVC,EAIWgB,IAHZpB,EAAed,EAAKqB,QAAQrK,SAASmK,IACrCnB,EAAKqB,QAAQrK,SAASoK,IAEqBhE,EAAQoF,cAAevB,GAAMhK,QAAQuJ,GAAqB,KAMzF0B,GAFKlC,EAAKqB,QAAQoB,QAAQtB,IACtCnB,EAAKqB,QAAQoB,QAAQrB,GACyBH,IAO5C,aAAVC,GAAoD,SAA5B9D,EAAQqE,mBAe5BV,GAdAD,EAAed,EAAKqB,QAAQrK,SAASmK,IACrCnB,EAAKqB,QAAQrK,SAASoK,IAaOsB,gBAAgBC,sBAC3BpC,GAAuBlJ,KAAKuJ,KAC9CC,EAAgBA,EAAc5J,QAAQ,KAAM,IAAW8J,EAAgB,OAEvEC,EAAiBF,EAAa4B,gBAAgBE,uBAC3BxC,GAAsB/I,KAAKuJ,KAC9CC,EAAgBA,EAAc5J,QAAQ,KAAM,IAAM+J,EAAiB,OAc3E,IAJA,IAAI6B,GAJJhC,EAAgBA,EACX5J,QAAQuJ,GAAqB,OAC7BvJ,QAAQ,SAAU,OAEgB8B,MAAM,+BACzC+J,EAAc,GACdC,EAAU/C,EAAKqB,QAAQ0B,QAAQ5B,IAC/BnB,EAAKqB,QAAQ0B,QAAQ3B,GAChBzE,EAAK,EAAGqG,EAAuBH,EAAoBlG,EAAKqG,EAAqBlO,OAAQ6H,IAAM,CAEhG,GADIsG,EAAOD,EAAqBrG,GAIhC,OAAQsG,GACJ,IAAK,MAEDH,EAAY3D,KAAK/C,MAAM0G,EAAaI,GAAwBH,EAASrC,EAAc9K,EAAU0C,EAAU6I,GAEtGI,GAAwBnE,EAAQ+F,cACjC,MAEJ,IAAK,IACDL,EAAY3D,KAAK,CAAEhL,KAAM,YAAaG,MAAOyO,EAAQK,YACrD,MACJ,IAAK,IACDN,EAAY3D,KAAK,CAAEhL,KAAM,WAAYG,MAAOyO,EAAQM,WACpD,MACJ,IAAK,IACDP,EAAY3D,KAAK,CAAEhL,KAAM,cAAeG,MAAOyO,EAAQO,cACvD,MACJ,IAAK,IAEDR,EAAY3D,KAAK,CAAEhL,KAAM,WAAYG,MAAOsM,IAC5C,MACJ,QACQ,QAAQvJ,KAAK4L,GACbH,EAAY3D,KAAK,CACbhL,KAAM,UACNG,MAAO2O,EAAKM,UAAU,EAAGN,EAAKnO,OAAS,KAK3CgO,EAAY3D,KAAK,CAAEhL,KAAM,UAAWG,MAAO2O,KAO3D,OAAQ/B,GACJ,IAAK,WAED,GAAgC,SAA5B9D,EAAQqE,gBAuCR,OAAOqB,EAnBP,IAnBA,IAAIU,GAAexD,EAAKqB,QAAQrK,SAASmK,IACrCnB,EAAKqB,QAAQrK,SAASoK,IAAyBoC,YAE/CC,OAAW,EACXC,EAAmB1D,EAAKqC,WAAWjF,EAAQpG,UAE3CyM,EADAC,EACW3B,GAAapB,EAIxBD,EAAa9I,cAAgBtC,KAAKuD,IAAI,GAAIP,GAAWoL,EAAiBC,aAI3DvG,EAAQpG,SAInBO,EAAS,GACJa,EAAK,EAAGwL,EAFMJ,EAAYzK,MAAM,eAEeX,EAAKwL,EAAmB9O,OAAQsD,IAAM,CAE1F,OADI6K,EAAOW,EAAmBxL,IAE1B,IAAK,MACDb,EAAO4H,KAAK/C,MAAM7E,EAAQuL,GAC1B,MACJ,IAAK,MACDvL,EAAO4H,KAAK,CAAEhL,KAAM,WAAYG,MAAOmP,IACvC,MACJ,QACQR,GACA1L,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAO2O,KAKtD,OAAO1L,EAMf,IAAK,OAgCD,IA/BA,IAWQsM,EAA0BC,EAAuBC,EAEjDC,EACAC,EAQIC,EACAC,EAvBR1J,EAAO2C,EAAQ3C,KAAM2J,EAAchH,EAAQgH,YAE3CZ,OAAc,EA2BdjM,EAAS,GAEJ8M,EAAK,EAAGC,GA1Bbd,EAJWxD,EAAKpF,MAAM2J,OAAO9J,GAIfsH,GAAapB,EAAID,EAAa9I,cAAeoI,EAAKpF,MAAM2J,OAAO9J,GAAM2J,KAMrDN,GAA1BD,EAAKpJ,EAAK1B,MAAM,UAA6B,GAAIgL,EAAkBF,EAAG,GAC/D7D,EAAKpF,MAAM2J,OAAOT,GACzBE,EAAuBjC,GAAapB,EAAID,EAAa9I,cAAeoI,EAAKpF,MAAM2J,OAAOT,GAAeM,KACrGH,EAAiBjE,EAAKpF,MAAM2J,OAAOR,GAAiBS,QAAQJ,IAG9CH,EAAehN,QAAQ,MAAO+M,IAKxCE,EAAalE,EAAKpF,MAAM6J,SAASC,IAAIN,GACrCD,EAAqBpC,GAAapB,EAAI,EAAGX,EAAKpF,MAAM2J,OAAOR,GAAiBK,IACpDF,EACvBjN,QAAQ,MAAO+M,GACf/M,QAAQ,MAAOkN,EAAmBlN,QAAQ,MAAO,QAK5B8B,MAAM,iBAAkBsL,EAAKC,EAAGxP,OAAQuP,IAAM,CAC5E,IAAIpB,EAAOqB,EAAGD,GACVM,EAAmB,oBAAoBC,KAAK3B,GAC5C0B,GAEIA,EAAiB,IACjBpN,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAOqQ,EAAiB,KAG3DpN,EAAO4H,KAAK/C,MAAM7E,EAAQuL,GAEtB6B,EAAiB,IACjBpN,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAOqQ,EAAiB,MAGtD1B,GACL1L,EAAO4H,KAAK,CAAEhL,KAAM,OAAQG,MAAO2O,IAG3C,OAAO1L,EAEX,QACI,OAAOuL,GAKnB,SAASI,GAAwBH,EAASrC,EAAc9K,EAAU0C,EAAU6I,EAAiBgC,GACzF,IAAI5L,EAAS,GAEToB,EAAI+H,EAAa5I,gBAAiBnB,EAAI+J,EAAa9I,cACvD,GAAIvC,MAAMsB,GACN,MAAO,CAAC,CAAExC,KAAM,MAAOG,MAAOqE,IAE7B,IAAKkM,SAASlO,GACf,MAAO,CAAC,CAAExC,KAAM,WAAYG,MAAOqE,IAEvC,IAAImM,EAAwBC,EAAa5D,GACrC2D,IACAnM,EAAIA,EAAE1B,QAAQ,MAAO,SAAU+N,GAAS,OAAOF,GAAuBE,IAAUA,KAIpF,IACIC,EACAC,EA2CIC,EA7CJC,EAAkBzM,EAAEiB,QAAQ,KAehC,GAZsB,EAAlBwL,GACAH,EAAUtM,EAAEK,MAAM,EAAGoM,GACrBF,EAAWvM,EAAEK,MAAMoM,EAAkB,IAGrCH,EAAUtM,EAOVwK,IAA6B,YAAbvN,GAA+B,KAALe,GAAa,CAKvD,IAJA,IAAI0O,EAAiBtC,EAAQuC,MACzBC,EAAS,GAETnL,EAAI6K,EAAQnQ,OAAS,EACd,EAAJsF,EAAOA,GAAK,EACfmL,EAAOpG,KAAK8F,EAAQjM,MAAMoB,EAAGA,EAAI,IAGrC,IADAmL,EAAOpG,KAAK8F,EAAQjM,MAAM,EAAGoB,EAAI,IACV,EAAhBmL,EAAOzQ,QAAY,CACtB,IAAI0Q,EAAeD,EAAOE,MAC1BlO,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAOkR,IAClB,EAAhBD,EAAOzQ,QACPyC,EAAO4H,KAAK,CAAEhL,KAAM,QAASG,MAAO+Q,UAK5C9N,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAO2Q,IAkB1C,YAhBiB1Q,IAAb2Q,GACA3N,EAAO4H,KAAK,CAAEhL,KAAM,UAAWG,MAAOyO,EAAQd,SAAW,CAAE9N,KAAM,WAAYG,MAAO4Q,IAEtE,eAAbtP,GAA0C,gBAAbA,IAC9BiP,SAASlO,KACTY,EAAO4H,KAAK,CAAEhL,KAAM,oBAAqBG,MAAOyO,EAAQ2C,cACpDpN,EAAW,IACXf,EAAO4H,KAAK,CAAEhL,KAAM,oBAAqBG,MAAOyO,EAAQK,YACxD9K,GAAYA,GAEZ6M,EAAiBzN,EAAWY,EAAU,EAAG,GAC7Cf,EAAO4H,KAAK,CACRhL,KAAM,kBACNG,MAAO6Q,EAAerN,mBAGvBP,EAEX,SAAS2K,GAAkBR,EAAST,GAC5BS,EAAQ9H,QAAQ,KAAO,IACvB8H,EAAUA,EAAU,KAAOA,GAE/B,IAAItJ,EAAKsJ,EAAQ3I,MAAM,KAAM4M,EAAcvN,EAAG,GAAIwN,EAAkBxN,EAAG,GACvE,OAAQ6I,GACJ,KAAK,EACD,OAAO0E,EACX,KAAM,EACF,OAAOC,EACX,QACI,OAAuC,GAAhCA,EAAgBhM,QAAQ,KACzBgM,EAAgB3O,QAAQ,KAAM,KAC9B,IAAM0O,GAkDxB,SAAS5D,GAAapB,EAAIhK,EAAGkP,GACzB,OAAOA,EAAMlF,EAAGmF,OAAOnP,KAAOkP,EAAME,MC/XxC,IAAIC,GAAkB,IAAIC,QACX,SAASC,GAAiBvP,GACrC,IAAIlB,EAAgBuQ,GAAgBG,IAAIxP,GAKxC,OAJKlB,IACDA,EAAgB1B,OAAO+H,OAAO,MAC9BkK,GAAgBI,IAAIzP,EAAGlB,IAEpBA,ECDX,IAAI4Q,GAA+B,IAAIC,opBACnCC,GAAwB,CACxB,SACA,kBACA,QACA,WACA,kBACA,eACA,OACA,cACA,uBACA,wBACA,wBACA,2BACA,2BACA,cACA,WACA,iBACA,eAcJ,SAASC,GAAerP,GACpB,OLrC2B1C,EKqCLgS,ELrCQ3I,EKqCY3G,ELpCnCpD,OAAO8H,UAAUJ,eAAeU,KAAK1H,EAAGqJ,GKqCzC2I,EAAmBtP,GACnB,ELvCH,IAAwB1C,EAAGqJ,EK4ClC,SAAS4I,GAAuBC,EAAIC,EAAS3S,GAEzC,IAAIwI,EAAmB6B,KAAKC,oBAAoBqI,GAC5CxJ,OAAmB7I,IAATN,EAAqBF,OAAO+H,OAAO,MAAQlI,EAASK,GAC9D4S,EAAM9S,OAAO+H,OAAO,MACpBgL,EAAU9S,EAAUoJ,EAAS,gBAAiB,SAAU,CAAC,SAAU,YAAa,YACpFyJ,EAAIpJ,cAAgBqJ,EACpB,IAAI3F,EAAkBnN,EAAUoJ,EAAS,kBAAmB,cAAU7I,OAAWA,GACjF,QAAwBA,IAApB4M,IACCkF,GAA6BU,IAAI5F,GAGlC,MAAMpM,WAAW,6BAA+BoM,GAEpD0F,EAAIvF,GAAKH,EACT,IAhCsC6F,EAClCC,EA+BA3J,EAAa4J,GAAa5J,WAC1BE,EAAInB,EAAoB6K,GAAa5K,iBAAjCD,CAAmD6K,GAAa1K,iBAAkBC,EAAkBoK,EAE5G,CAAC,MAAOvJ,GACJ6J,EAAiB7J,EApCiB0J,EAoC2BxJ,EAAEd,OAlC1C,IADrBuK,EAAiBD,EAAgBpN,QAAQ,QAEvCoN,EAAgBhO,MAAM,EAAGiO,GACzBD,GAiCFvR,EAAgByQ,GAAiBS,GACrClR,EAAciH,OAASc,EAAEd,OACzBjH,EAAckI,WAAaH,EAAEG,WAC7BlI,EAAc0L,gBAAkB3D,EAAE8D,GAClC7L,EAAc0R,eAAiBA,EAyOnC,SAAoCR,EAAIvJ,QACpB,IAAZA,IAAsBA,EAAUrJ,OAAO+H,OAAO,OAClD,IAAIrG,EAAgByQ,GAAiBS,GACjCzF,EAAQlN,EAAUoJ,EAAS,QAAS,SAAU,CAAC,UAAW,UAAW,WAAY,QAAS,WAC9F3H,EAAcyL,MAAQA,EACtB,IAAIlK,EAAWhD,EAAUoJ,EAAS,WAAY,cAAU7I,OAAWA,GACnE,QAAiBA,IAAbyC,IAA2BD,EAAyBC,GACpD,MAAMjC,WAAW,2BAErB,GAAc,aAAVmM,QAAqC3M,IAAbyC,EACxB,MAAMlD,UAAU,gCAEpB,IAAI2N,EAAkBzN,EAAUoJ,EAAS,kBAAmB,SAAU,CAAC,OAAQ,SAAU,eAAgB,QAAS,UAC9GoF,EAAexO,EAAUoJ,EAAS,eAAgB,SAAU,CAAC,WAAY,cAAe,YACxF3C,EAAOzG,EAAUoJ,EAAS,OAAQ,cAAU7I,OAAWA,GAC3D,QAAaA,IAATkG,IAAuBC,EAA2BD,GAClD,MAAM1F,WAAW,iDAErB,GAAc,SAAVmM,QAA6B3M,IAATkG,EACpB,MAAM3G,UAAU,4BAEpB,IAAIsQ,EAAcpQ,EAAUoJ,EAAS,cAAe,SAAU,CAAC,QAAS,SAAU,QAAS,SAC7E,aAAV8D,IACAzL,EAAcuB,SAAWA,EAASI,cAClC3B,EAAcgM,gBAAkBA,EAChChM,EAAc+M,aAAeA,GAEnB,SAAVtB,IACAzL,EAAcgF,KAAOA,EACrBhF,EAAc2O,YAAcA,GArQhCgD,CAA2BT,EAAIvJ,GAC/B,IAMI1H,EACAC,EAPAuL,EAAQzL,EAAcyL,MAOtBvL,EAJU,aAAVuL,EAGAxL,EADc8Q,GADC/Q,EAAcuB,WAM7BtB,EAAc,EACU,YAAVwL,EAAsB,EAAI,GAE5C,IAAItL,EAAW5B,EAAUoJ,EAAS,WAAY,SAAU,CAAC,WAAY,aAAc,cAAe,WAAY,YAC9G3H,EAAcG,SAAWA,EACzBJ,EAA4BC,EAAe2H,EAAS1H,EAAaC,EAAaC,GAC9E,IAAI4L,EAAiBxN,EAAUoJ,EAAS,iBAAkB,SAAU,CAAC,QAAS,QAAS,SACtE,YAAbxH,IACAH,EAAc+L,eAAiBA,GAEnC,IAAI2B,EAAcnP,EAAUoJ,EAAS,cAAe,eAAW7I,GAAW,GAC1EkB,EAAc0N,YAAcA,EAC5B,IAAIkE,EAAcrT,EAAUoJ,EAAS,cAAe,SAAU,CAAC,OAAQ,QAAS,SAAU,cAAe,QAEzG,OADA3H,EAAc4R,YAAcA,EACrBV,EAKX,SAASW,GAAuBC,EAAc5Q,GAC1C,IAAIyB,EAqBIoP,EACJ7O,EAKAsI,EA1BAxL,EAAgByQ,GAAiBqB,GACjC5G,EAAKlL,EAAckL,GAAIwG,EAAiB1R,EAAc0R,eAAgBhG,EAAkB1L,EAAc0L,gBACtG4B,EAAUoE,EAAe9F,QAAQ0B,QAAQ5B,IACzCgG,EAAe9F,QAAQ0B,QAAQoE,EAAe9F,QAAQC,GAAG,IACzDvH,EAAY,EACZzB,EAAW,EAuBf,OArBIjD,MAAMsB,GACNgC,EAAIoK,EAAQ0E,IAEN5C,SAASlO,IAIa,YAAxBlB,EAAcyL,QACdvK,GAAK,KAE8B2B,GAAvCF,EA8NR,SAAyBmP,EAAc5Q,GACnC,GAAU,IAANA,EACA,MAAO,CAAC,EAAG,GAEXA,EAAI,IACJA,GAAKA,GAET,IAAIoD,EAAYF,EAAalD,GACzB2B,EAAWoP,GAA4BH,EAAcxN,GAEzDpD,EAAI2B,EAAW,EAAI3B,EAAIrB,KAAKuD,IAAI,IAAKP,GAAY3B,EAAIrB,KAAKuD,IAAI,GAAIP,GAClE,IAAIkP,EAAqBlQ,EAAsB4O,GAAiBqB,GAAe5Q,GAC/E,OAAyC,IAArC6Q,EAAmB5P,eAGJiC,EAAa2N,EAAmB5P,iBAC9BmC,EAAYzB,EAG1B,CACHoP,GAA4BH,EAAcxN,EAAY,GACtDA,EAAY,GARL,CAACzB,EAAUyB,GA3Ob4N,CAAgBJ,EAAc5Q,IAAkB,GAAIoD,EAAY3B,EAAG,GAIxEO,GADI6O,EAAqBlQ,EAAsB7B,EAD/CkB,EAAI2B,EAAW,EAAI3B,EAAIrB,KAAKuD,IAAI,IAAKP,GAAY3B,EAAIrB,KAAKuD,IAAI,GAAIP,KAE3CR,gBACvBnB,EAAI6Q,EAAmB5P,eAXvBe,EAAIoK,EAAQ6E,SAgBEnS,EAAc4R,aAE5B,IAAK,QACDpG,EAAO,EACP,MACJ,IAAK,OAEGA,EADAvK,EAASC,EAAG,IAAU,EAAJA,GAAStB,MAAMsB,GAC1B,GAGC,EAEZ,MACJ,IAAK,SAEGsK,EADAvK,EAASC,EAAG,IAAU,EAAJA,GAAStB,MAAMsB,GAC1B,GAGC,EAEZ,MACJ,QAGQsK,EADM,IAANtK,GAAWtB,MAAMsB,GACV,EAEE,EAAJA,EACE,GAGC,EAGpB,OAAO8J,GAAc,CAAE7I,cAAejB,EAAGmB,gBAAiBa,EAAGL,SAAUA,EAAUyB,UAAWA,EAAWkH,KAAMA,GAAQxL,EAAc0R,eAAgBxG,EAAIlL,OAQhJyR,GAAe,SAAUN,EAASxJ,GAEzC,KAAKzB,MAAUA,gBAAgBuL,IAC3B,OAAO,IAAIA,GAAaN,EAASxJ,GAErCsJ,GAAuB/K,KAAMiL,EAASxJ,GACtC,IAAI3H,EAAgByQ,GAAiBvK,MACjCgC,EAAalI,EAAckI,WAE/BpK,OAA6BgB,IADR2S,GAAa5J,WAAWK,GACL,yCAA2CA,EAAa,KAChGlI,EAAckL,GAAK,IAAIrC,KAAKuJ,YAAYlK,EAAY,CAChD1H,sBAAuBR,EAAcQ,sBACrCE,sBAAuBV,EAAcU,sBACrCK,qBAAsBf,EAAce,qBACpCH,yBAA0BZ,EAAcY,yBACxCE,yBAA0Bd,EAAcc,4BAGhDsE,EAAeqM,GAAarL,UAAW,gBAAiB,CACpDvH,MAAO,SAAuBqC,GAC1B,OAzBG2Q,GAyByB3L,KAAMmM,GAAUnR,OAGpDkE,EAAeqM,GAAarL,UAAW,kBAAmB,CACtDvH,MAAO,WACH,GAAoB,iBAATqH,QAAuBA,gBAAgBuL,IAC9C,MAAMpT,UAAU,sFAIpB,IAFA,IAAI2B,EAAgByQ,GAAiBvK,MACjCoM,EAAK,GACApL,EAAK,EAAGqL,EAA0BzB,GAAuB5J,EAAKqL,EAAwBlT,OAAQ6H,IAAM,CACzG,IAAImB,EAAMkK,EAAwBrL,GAC9BrI,EAAQmB,EAAcqI,QACZvJ,IAAVD,IACAyT,EAAGjK,GAAOxJ,GAGlB,OAAOyT,KAGf,IAAIE,GAAmB,CACnBhN,YAAY,EACZD,cAAc,EACdmL,IAAK,WACD,GAAoB,iBAATxK,QAAuBA,gBAAgBuL,IAC9C,MAAMpT,UAAU,8EAEpB,IAAI2B,EAAgByQ,GAAiBvK,MAEjC4L,EAAe5L,KACfuM,EAAczS,EAAcyS,YAChC,QAAoB3T,IAAhB2T,EAA2B,CAE3BA,EAAc,SAAU5T,GAEpB,IAAIqC,EAAImR,GAAUxT,GAClB,OAAOiT,EACF9G,cAAc9J,GACd6D,IAAI,SAAU7D,GAAK,OAAOA,EAAErC,QAC5BU,KAAK,KAEd,IAEIjB,OAAO8G,eAAeqN,EAAa,OAAQ,CACvClN,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO,KAGf,MAAO8E,IAIP3D,EAAcyS,YAAcA,EAEhC,OAAOA,IAGf,IAEInU,OAAO8G,eAAeoN,GAAiB9B,IAAK,OAAQ,CAChDnL,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO,eAGf,MAAO8E,IAgHP,SAASsO,GAA4BH,EAAcxN,GAC/C,IAAItE,EAAgByQ,GAAiBqB,GACjC3R,EAAWH,EAAcG,SAAUuR,EAAiB1R,EAAc0R,eAAgBhG,EAAkB1L,EAAc0L,gBACtH,OAAQvL,GACJ,IAAK,WACD,OAAO,EACX,IAAK,aACD,OAAOmE,EACX,IAAK,cACD,OAAmC,EAA5BzE,KAAKC,MAAMwE,EAAY,GAClC,QAGI,IAQQkI,EARJT,EAAiB/L,EAAc+L,eAAgBN,EAAQzL,EAAcyL,MAAOO,EAAkBhM,EAAcgM,gBAC5G0G,OAAe,EAWnB,KAPIA,EAHU,aAAVjH,GAA4C,SAApBO,GACT0F,EAAe9F,QAAQrK,SAASmK,IAC3CgG,EAAe9F,QAAQrK,SAASmQ,EAAe9F,QAAQC,GAAG,KACtCQ,OAGpBG,EAAUkF,EAAe9F,QAAQY,QAAQd,IACzCgG,EAAe9F,QAAQY,QAAQkF,EAAe9F,QAAQC,GAAG,IAC3B,SAAnBE,EAA4BS,EAAQmG,KAAOnG,EAAQH,QAGlE,OAAO,EAEX,IAAIuG,EAAM3T,OAAOY,KAAKuD,IAAI,GAAIkB,IAC1BuO,EAAavU,OAAOwU,KAAKJ,GAC7B,GAAIE,EAAMC,EAAW,GACjB,OAAO,EAEX,GAAID,EAAMC,EAAWA,EAAWxT,OAAS,GACrC,OAAOwT,EAAWA,EAAWxT,OAAS,GAAGA,OAAS,EAEtD,IAAIsF,EAAIkO,EAAW1O,QAAQyO,GAC3B,IAAW,IAAPjO,EACA,OAAO,EAIX,IAAIuH,EAAe2G,EAAWlO,GAG9B,MAAuB,MADF+N,EAAaxG,GAAcoE,MAErC,EAGHpE,EAAa7M,OACjBqT,EAAaxG,GAAcoE,MAAMyC,MAAM,MAAM,GAAG1T,QAIhE,SAASgT,GAAUjT,GACf,MAAmB,iBAARA,EACAA,EAIf,SAAkBA,GACd,QAAYN,IAARM,EACA,OAAO4T,IAEX,GAAY,OAAR5T,EACA,OAAO,EAEX,GAAmB,kBAARA,EACP,OAAOA,EAAM,EAAI,EAErB,GAAmB,iBAARA,EACP,OAAOA,EAEX,GAAmB,iBAARA,GAAmC,iBAARA,EAGtC,OAAOO,OAAOP,GAFV,MAAM,IAAIf,UAAU,0CAhBjB4U,CAAS7T,GAtKpBd,OAAO8G,eAAeqM,GAAarL,UAAW,SAAUoM,IAExDpN,EAAeqM,GAAc,qBAAsB,CAC/C5S,MAAO,SAA4BsS,EAASxJ,GACxC,OHxCyBZ,EGwCD0K,GAAa1K,iBHxCMC,EGwCY6B,KAAKC,oBAAoBqI,QHtCpErS,KAFiD6I,EGwC6BA,IHpChFpJ,EADVoJ,EAAUxJ,EAASwJ,GACU,gBAAiB,SAAU,CAAC,SAAU,YAAa,YAGzE4B,EAAuBxC,EAAkBC,GAPjD,IAA0BD,EAAkBC,EAAkBW,KG2CrE8J,GAAayB,gBAAkB,WAE3B,IADA,IAAI3I,EAAO,GACFrD,EAAK,EAAGA,EAAKT,UAAUpH,OAAQ6H,IACpCqD,EAAKrD,GAAMT,UAAUS,GAEzB,IAAK,IAAIvE,EAAK,EAAGwQ,EAAS5I,EAAM5H,EAAKwQ,EAAO9T,OAAQsD,IAGhD,IAFA,IAAIyQ,EAAQD,EAAOxQ,GAEVyL,EAAK,EAAGiF,EADMD,EAAMrM,iBAC2BqH,EAAKiF,EAAmBhU,OAAQ+O,IAAM,CAC1F,IAAInH,EAASoM,EAAmBjF,GAChC,IACIqD,GAAa5J,WAAWZ,GAAU6C,EAAW7C,EAAQmM,GAEzD,MAAOzP,KAKf8N,GAAa1K,iBAAmBzI,OAAOwU,KAAKrB,GAAa5J,YACpD4J,GAAa6B,kBACd7B,GAAa6B,gBAAkB7B,GAAa1K,iBAAiB,KAGrE0K,GAAa6B,gBAAkB,KAC/B7B,GAAa5J,WAAa,GAC1B4J,GAAa1K,iBAAmB,GAChC0K,GAAa5K,iBAAmB,WAC5B,OAAO4K,GAAa6B,iBAExB7B,GAAa8B,YAAa,EAsJ1B,IAE0B,oBAAXC,QACPlV,OAAO8G,eAAeqM,GAAarL,UAAWoN,OAAOC,YAAa,CAC9DlO,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO,WAIfP,OAAO8G,eAAeqM,GAAarL,UAAUD,YAAa,SAAU,CAChEZ,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO,IAGXP,OAAO8G,eAAeqM,GAAaiC,mBAAoB,SAAU,CAC7DnO,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO,IAEXP,OAAO8G,eAAeqM,GAAc,YAAa,CAC7ClM,cAAc,EACdC,YAAY,EACZC,UAAU,EACV5G,MAAO4S,GAAarL,YAG5B,MAAOzC,wCCxdA,SAAyBqB,GAC5B,IACI,IAAI6D,KAAK4I,kBAAa3S,EAAW,CAC7B2M,MAAO,OAEPzG,KAAMA,IAGd,MAAOrB,GACH,OAAO,EAEX,OAAO,oBCbJ,SAAwBzC,EAAGiQ,EAASxJ,GAEvC,OADmB,IAAI8J,GAAaN,EAASxJ,GACzBgM,OAAOzS"}
|