react-intl 2.7.1 → 2.7.2
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/dist/react-intl.js +6 -2
- package/dist/react-intl.js.map +1 -1
- package/dist/react-intl.min.js +1 -1
- package/dist/react-intl.min.js.map +1 -1
- package/lib/index.es.js +6 -2
- package/lib/index.js +6 -2
- package/package.json +1 -1
- package/src/inject.js +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-intl.min.js","sources":["../node_modules/intl-messageformat/src/utils.js","../node_modules/intl-messageformat/src/compiler.js","../node_modules/intl-messageformat/src/core.js","../node_modules/intl-relativeformat/src/diff.js","../node_modules/intl-relativeformat/src/core.js","../src/locale-data-registry.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../src/utils.js","../src/inject.js","../src/plural.js","../node_modules/intl-format-cache/src/memoizer.js","../src/format.js","../src/components/relative.js","../src/en.js","../node_modules/intl-messageformat/src/es5.js","../node_modules/intl-messageformat-parser/src/parser.js","../node_modules/intl-messageformat/src/en.js","../node_modules/intl-messageformat/src/main.js","../node_modules/intl-relativeformat/src/es5.js","../node_modules/intl-relativeformat/src/en.js","../node_modules/intl-relativeformat/src/main.js","../src/types.js","../node_modules/invariant/invariant.js","../node_modules/intl-format-cache/src/es5.js","../src/components/provider.js","../src/components/date.js","../src/components/time.js","../src/components/number.js","../src/components/plural.js","../src/components/message.js","../src/components/html-message.js","../src/react-intl.js","../src/define-messages.js"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport var hop = Object.prototype.hasOwnProperty;\n\nexport function extend(obj) {\n var sources = Array.prototype.slice.call(arguments, 1),\n i, len, source, key;\n\n for (i = 0, len = sources.length; i < len; i += 1) {\n source = sources[i];\n if (!source) { continue; }\n\n for (key in source) {\n if (hop.call(source, key)) {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport default Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n this.locales = locales;\n this.formats = formats;\n this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n this.pluralStack = [];\n this.currentPlural = null;\n this.pluralNumberFormat = null;\n\n return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n }\n\n var elements = ast.elements,\n pattern = [];\n\n var i, len, element;\n\n for (i = 0, len = elements.length; i < len; i += 1) {\n element = elements[i];\n\n switch (element.type) {\n case 'messageTextElement':\n pattern.push(this.compileMessageText(element));\n break;\n\n case 'argumentElement':\n pattern.push(this.compileArgument(element));\n break;\n\n default:\n throw new Error('Message element does not have a valid type');\n }\n }\n\n return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n // When this `element` is part of plural sub-pattern and its value contains\n // an unescaped '#', use a `PluralOffsetString` helper to properly output\n // the number with the correct offset in the string.\n if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n // Create a cache a NumberFormat instance that can be reused for any\n // PluralOffsetString instance in this message.\n if (!this.pluralNumberFormat) {\n this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n }\n\n return new PluralOffsetString(\n this.currentPlural.id,\n this.currentPlural.format.offset,\n this.pluralNumberFormat,\n element.value);\n }\n\n // Unescape the escaped '#'s in the message text.\n return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n var format = element.format;\n\n if (!format) {\n return new StringFormat(element.id);\n }\n\n var formats = this.formats,\n locales = this.locales,\n pluralFn = this.pluralFn,\n options;\n\n switch (format.type) {\n case 'numberFormat':\n options = formats.number[format.style];\n return {\n id : element.id,\n format: new Intl.NumberFormat(locales, options).format\n };\n\n case 'dateFormat':\n options = formats.date[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'timeFormat':\n options = formats.time[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'pluralFormat':\n options = this.compileOptions(element);\n return new PluralFormat(\n element.id, format.ordinal, format.offset, options, pluralFn\n );\n\n case 'selectFormat':\n options = this.compileOptions(element);\n return new SelectFormat(element.id, options);\n\n default:\n throw new Error('Message element does not have a valid format type');\n }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n var format = element.format,\n options = format.options,\n optionsHash = {};\n\n // Save the current plural element, if any, then set it to a new value when\n // compiling the options sub-patterns. This conforms the spec's algorithm\n // for handling `\"#\"` syntax in message text.\n this.pluralStack.push(this.currentPlural);\n this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n var i, len, option;\n\n for (i = 0, len = options.length; i < len; i += 1) {\n option = options[i];\n\n // Compile the sub-pattern and save it under the options's selector.\n optionsHash[option.selector] = this.compileMessage(option.value);\n }\n\n // Pop the plural stack to put back the original current plural value.\n this.currentPlural = this.pluralStack.pop();\n\n return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n\n return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n this.id = id;\n this.useOrdinal = useOrdinal;\n this.offset = offset;\n this.options = options;\n this.pluralFn = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n var options = this.options;\n\n var option = options['=' + value] ||\n options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n this.id = id;\n this.offset = offset;\n this.numberFormat = numberFormat;\n this.string = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n var number = this.numberFormat.format(value - this.offset);\n\n return this.string\n .replace(/(^|[^\\\\])#/g, '$1' + number)\n .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n this.id = id;\n this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n var options = this.options;\n return options[value] || options.other;\n};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {extend, hop} from './utils';\nimport {defineProperty, objCreate} from './es5';\nimport Compiler from './compiler';\nimport parser from 'intl-messageformat-parser';\n\nexport default MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n // Parse string messages into an AST.\n var ast = typeof message === 'string' ?\n MessageFormat.__parse(message) : message;\n\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n formats = this._mergeFormats(MessageFormat.formats, formats);\n\n // Defined first because it's used to build the format pattern.\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n\n // Compile the `ast` to a pattern that is highly optimized for repeated\n // `format()` invocations. **Note:** This passes the `locales` set provided\n // to the constructor instead of just the resolved locale.\n var pluralFn = this._findPluralRuleFunction(this._locale);\n var pattern = this._compilePattern(ast, locales, formats, pluralFn);\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var messageFormat = this;\n this.format = function (values) {\n try {\n return messageFormat._format(pattern, values);\n } catch (e) {\n if (e.variableId) {\n throw new Error(\n 'The intl string context variable \\'' + e.variableId + '\\'' +\n ' was not provided to the string \\'' + message + '\\''\n );\n } else {\n throw e;\n }\n }\n };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\ndefineProperty(MessageFormat, 'formats', {\n enumerable: true,\n\n value: {\n number: {\n 'currency': {\n style: 'currency'\n },\n\n 'percent': {\n style: 'percent'\n }\n },\n\n date: {\n 'short': {\n month: 'numeric',\n day : 'numeric',\n year : '2-digit'\n },\n\n 'medium': {\n month: 'short',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'long': {\n month: 'long',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'full': {\n weekday: 'long',\n month : 'long',\n day : 'numeric',\n year : 'numeric'\n }\n },\n\n time: {\n 'short': {\n hour : 'numeric',\n minute: 'numeric'\n },\n\n 'medium': {\n hour : 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n\n 'long': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n },\n\n 'full': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n }\n }\n }\n});\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(MessageFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlMessageFormat is missing a ' +\n '`locale` property'\n );\n }\n\n MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\ndefineProperty(MessageFormat, '__parse', {value: parser.parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\ndefineProperty(MessageFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n // TODO: Provide anything else?\n return {\n locale: this._locale\n };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n var compiler = new Compiler(locales, formats, pluralFn);\n return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n var localeData = MessageFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find a `pluralRuleFunction` to return.\n while (data) {\n if (data.pluralRuleFunction) {\n return data.pluralRuleFunction;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlMessageFormat is missing a ' +\n '`pluralRuleFunction` for :' + locale\n );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n var result = '',\n i, len, part, id, value, err;\n\n for (i = 0, len = pattern.length; i < len; i += 1) {\n part = pattern[i];\n\n // Exist early for string parts.\n if (typeof part === 'string') {\n result += part;\n continue;\n }\n\n id = part.id;\n\n // Enforce that all required values are provided by the caller.\n if (!(values && hop.call(values, id))) {\n err = new Error('A value must be provided for: ' + id);\n err.variableId = id;\n throw err;\n }\n\n value = values[id];\n\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (part.options) {\n result += this._format(part.getOption(value), values);\n } else {\n result += part.format(value);\n }\n }\n\n return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n var mergedFormats = {},\n type, mergedType;\n\n for (type in defaults) {\n if (!hop.call(defaults, type)) { continue; }\n\n mergedFormats[type] = mergedType = objCreate(defaults[type]);\n\n if (formats && hop.call(formats, type)) {\n extend(mergedType, formats[type]);\n }\n }\n\n return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n var localeData = MessageFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlMessageFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nvar round = Math.round;\n\nfunction daysToYears(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n}\n\nexport default function (from, to) {\n // Convert to ms timestamps.\n from = +from;\n to = +to;\n\n var millisecond = round(to - from),\n second = round(millisecond / 1000),\n minute = round(second / 60),\n hour = round(minute / 60),\n day = round(hour / 24),\n week = round(day / 7);\n\n var rawYears = daysToYears(day),\n month = round(rawYears * 12),\n year = round(rawYears);\n\n return {\n millisecond : millisecond,\n second : second,\n 'second-short' : second,\n minute : minute,\n 'minute-short' : minute,\n hour : hour,\n 'hour-short' : hour,\n day : day,\n 'day-short' : day,\n week : week,\n 'week-short' : week,\n month : month,\n 'month-short' : month,\n year : year,\n 'year-short' : year\n };\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport IntlMessageFormat from 'intl-messageformat';\nimport diff from './diff';\nimport {\n defineProperty,\n objCreate,\n arrIndexOf,\n isArray,\n dateNow\n} from './es5';\n\nexport default RelativeFormat;\n\n// -----------------------------------------------------------------------------\n\nvar FIELDS = [\n 'second', 'second-short',\n 'minute', 'minute-short',\n 'hour', 'hour-short',\n 'day', 'day-short',\n 'month', 'month-short',\n 'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n\n// -- RelativeFormat -----------------------------------------------------------\n\nfunction RelativeFormat(locales, options) {\n options = options || {};\n\n // Make a copy of `locales` if it's an array, so that it doesn't change\n // since it's used lazily.\n if (isArray(locales)) {\n locales = locales.concat();\n }\n\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n defineProperty(this, '_options', {value: {\n style: this._resolveStyle(options.style),\n units: this._isValidUnits(options.units) && options.units\n }});\n\n defineProperty(this, '_locales', {value: locales});\n defineProperty(this, '_fields', {value: this._findFields(this._locale)});\n defineProperty(this, '_messages', {value: objCreate(null)});\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var relativeFormat = this;\n this.format = function format(date, options) {\n return relativeFormat._format(date, options);\n };\n}\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(RelativeFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(RelativeFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlRelativeFormat is missing a ' +\n '`locale` property value'\n );\n }\n\n RelativeFormat.__localeData__[data.locale.toLowerCase()] = data;\n\n // Add data to IntlMessageFormat.\n IntlMessageFormat.__addLocaleData(data);\n}});\n\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\ndefineProperty(RelativeFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\ndefineProperty(RelativeFormat, 'thresholds', {\n enumerable: true,\n\n value: {\n second: 45, 'second-short': 45, // seconds to minute\n minute: 45, 'minute-short': 45, // minutes to hour\n hour : 22, 'hour-short': 22, // hours to day\n day : 26, 'day-short': 26, // days to month\n month : 11, 'month-short': 11 // months to year\n }\n});\n\nRelativeFormat.prototype.resolvedOptions = function () {\n return {\n locale: this._locale,\n style : this._options.style,\n units : this._options.units\n };\n};\n\nRelativeFormat.prototype._compileMessage = function (units) {\n // `this._locales` is the original set of locales the user specified to the\n // constructor, while `this._locale` is the resolved root locale.\n var locales = this._locales;\n var resolvedLocale = this._locale;\n\n var field = this._fields[units];\n var relativeTime = field.relativeTime;\n var future = '';\n var past = '';\n var i;\n\n for (i in relativeTime.future) {\n if (relativeTime.future.hasOwnProperty(i)) {\n future += ' ' + i + ' {' +\n relativeTime.future[i].replace('{0}', '#') + '}';\n }\n }\n\n for (i in relativeTime.past) {\n if (relativeTime.past.hasOwnProperty(i)) {\n past += ' ' + i + ' {' +\n relativeTime.past[i].replace('{0}', '#') + '}';\n }\n }\n\n var message = '{when, select, future {{0, plural, ' + future + '}}' +\n 'past {{0, plural, ' + past + '}}}';\n\n // Create the synthetic IntlMessageFormat instance using the original\n // locales value specified by the user when constructing the the parent\n // IntlRelativeFormat instance.\n return new IntlMessageFormat(message, locales);\n};\n\nRelativeFormat.prototype._getMessage = function (units) {\n var messages = this._messages;\n\n // Create a new synthetic message based on the locale data from CLDR.\n if (!messages[units]) {\n messages[units] = this._compileMessage(units);\n }\n\n return messages[units];\n};\n\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n var field = this._fields[units];\n\n if (field.relative) {\n return field.relative[diff];\n }\n};\n\nRelativeFormat.prototype._findFields = function (locale) {\n var localeData = RelativeFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find `fields` to return.\n while (data) {\n if (data.fields) {\n return data.fields;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlRelativeFormat is missing `fields` for :' +\n locale\n );\n};\n\nRelativeFormat.prototype._format = function (date, options) {\n var now = options && options.now !== undefined ? options.now : dateNow();\n\n if (date === undefined) {\n date = now;\n }\n\n // Determine if the `date` and optional `now` values are valid, and throw a\n // similar error to what `Intl.DateTimeFormat#format()` would throw.\n if (!isFinite(now)) {\n throw new RangeError(\n 'The `now` option provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n if (!isFinite(date)) {\n throw new RangeError(\n 'The date value provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n var diffReport = diff(now, date);\n var units = this._options.units || this._selectUnits(diffReport);\n var diffInUnits = diffReport[units];\n\n if (this._options.style !== 'numeric') {\n var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n if (relativeUnits) {\n return relativeUnits;\n }\n }\n\n return this._getMessage(units).format({\n '0' : Math.abs(diffInUnits),\n when: diffInUnits < 0 ? 'past' : 'future'\n });\n};\n\nRelativeFormat.prototype._isValidUnits = function (units) {\n if (!units || arrIndexOf.call(FIELDS, units) >= 0) {\n return true;\n }\n\n if (typeof units === 'string') {\n var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n if (suggestion && arrIndexOf.call(FIELDS, suggestion) >= 0) {\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n 'value, did you mean: ' + suggestion\n );\n }\n }\n\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n 'must be one of: \"' + FIELDS.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(RelativeFormat.defaultLocale);\n\n var localeData = RelativeFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlRelativeFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n\nRelativeFormat.prototype._resolveStyle = function (style) {\n // Default to \"best fit\" style.\n if (!style) {\n return STYLES[0];\n }\n\n if (arrIndexOf.call(STYLES, style) >= 0) {\n return style;\n }\n\n throw new Error(\n '\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n 'must be one of: \"' + STYLES.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n var i, l, units;\n var fields = FIELDS.filter(function(field) {\n return field.indexOf('-short') < 1;\n });\n\n for (i = 0, l = fields.length; i < l; i += 1) {\n units = fields[i];\n\n if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n break;\n }\n }\n\n return units;\n};\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\n\nexport function addLocaleData(data = []) {\n let locales = Array.isArray(data) ? data : [data];\n\n locales.forEach(localeData => {\n if (localeData && localeData.locale) {\n IntlMessageFormat.__addLocaleData(localeData);\n IntlRelativeFormat.__addLocaleData(localeData);\n }\n });\n}\n\nexport function hasLocaleData(locale) {\n let localeParts = (locale || '').split('-');\n\n while (localeParts.length > 0) {\n if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n return true;\n }\n\n localeParts.pop();\n }\n\n return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n let normalizedLocale = locale && locale.toLowerCase();\n\n return !!(\n IntlMessageFormat.__localeData__[normalizedLocale] &&\n IntlRelativeFormat.__localeData__[normalizedLocale]\n );\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nimport invariant from 'invariant';\nimport {intlConfigPropTypes} from './types';\n\nconst intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nconst ESCAPED_CHARS = {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n \"'\": ''',\n};\n\nconst UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nexport function escape(str) {\n return ('' + str).replace(UNSAFE_CHARS_REGEX, match => ESCAPED_CHARS[match]);\n}\n\nexport function filterProps(props, whitelist, defaults = {}) {\n return whitelist.reduce((filtered, name) => {\n if (props.hasOwnProperty(name)) {\n filtered[name] = props[name];\n } else if (defaults.hasOwnProperty(name)) {\n filtered[name] = defaults[name];\n }\n\n return filtered;\n }, {});\n}\n\nexport function invariantIntlContext({intl} = {}) {\n invariant(\n intl,\n '[React Intl] Could not find required `intl` object. ' +\n '<IntlProvider> needs to exist in the component ancestry.'\n );\n}\n\nexport function shallowEquals(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false;\n }\n\n let keysA = Object.keys(objA);\n let keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n let bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n for (let i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function shouldIntlComponentUpdate(\n {props, state, context = {}},\n nextProps,\n nextState,\n nextContext = {}\n) {\n const {intl = {}} = context;\n const {intl: nextIntl = {}} = nextContext;\n\n return (\n !shallowEquals(nextProps, props) ||\n !shallowEquals(nextState, state) ||\n !(\n nextIntl === intl ||\n shallowEquals(\n filterProps(nextIntl, intlConfigPropNames),\n filterProps(intl, intlConfigPropNames)\n )\n )\n );\n}\n\nexport function createError(message, exception) {\n const eMsg = exception ? `\\n${exception}` : '';\n return `[React Intl] ${message}${eMsg}`;\n}\n\nexport function defaultErrorHandler(error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nimport React, {Component} from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport {intlShape} from './types';\nimport {invariantIntlContext} from './utils';\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n\nexport default function injectIntl(WrappedComponent, options = {}) {\n const {intlPropName = 'intl', withRef = false} = options;\n\n class InjectIntl extends Component {\n static displayName = `InjectIntl(${getDisplayName(WrappedComponent)})`;\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static WrappedComponent = WrappedComponent;\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n getWrappedInstance() {\n invariant(\n withRef,\n '[React Intl] To access the wrapped instance, ' +\n 'the `{withRef: true}` option must be set when calling: ' +\n '`injectIntl()`'\n );\n\n return this.refs.wrappedInstance;\n }\n\n render() {\n return (\n <WrappedComponent\n {...this.props}\n {...{[intlPropName]: this.context.intl}}\n ref={withRef ? 'wrappedInstance' : null}\n />\n );\n }\n }\n\n return hoistNonReactStatics(InjectIntl, WrappedComponent);\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nimport IntlMessageFormat from 'intl-messageformat';\n\nfunction resolveLocale(locales) {\n // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nexport default class IntlPluralFormat {\n constructor(locales, options = {}) {\n let useOrdinal = options.style === 'ordinal';\n let pluralFn = findPluralFunction(resolveLocale(locales));\n\n this.format = value => pluralFn(value, useOrdinal);\n }\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jshint esnext: true */\n\nimport {bind, objCreate} from './es5';\n\nexport default createFormatCache;\n\n// -----------------------------------------------------------------------------\n\nfunction createFormatCache(FormatConstructor) {\n var cache = objCreate(null);\n\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var cacheId = getCacheId(args);\n var format = cacheId && cache[cacheId];\n\n if (!format) {\n format = new (bind.apply(FormatConstructor, [null].concat(args)))();\n\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n\n return format;\n };\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction getCacheId(inputs) {\n // When JSON is not available in the runtime, we will not create a cache id.\n if (typeof JSON === 'undefined') { return; }\n\n var cacheId = [];\n\n var i, len, input;\n\n for (i = 0, len = inputs.length; i < len; i += 1) {\n input = inputs[i];\n\n if (input && typeof input === 'object') {\n cacheId.push(orderedProps(input));\n } else {\n cacheId.push(input);\n }\n }\n\n return JSON.stringify(cacheId);\n}\n\nfunction orderedProps(obj) {\n var props = [],\n keys = [];\n\n var key, i, len, prop;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n\n var orderedKeys = keys.sort();\n\n for (i = 0, len = orderedKeys.length; i < len; i += 1) {\n key = orderedKeys[i];\n prop = {};\n\n prop[key] = obj[key];\n props[i] = prop;\n }\n\n return props;\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport invariant from 'invariant';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport {isValidElement} from 'react';\n\nimport {\n dateTimeFormatPropTypes,\n numberFormatPropTypes,\n relativeFormatPropTypes,\n pluralFormatPropTypes,\n} from './types';\n\nimport {createError, defaultErrorHandler, escape, filterProps} from './utils';\n\nconst DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nconst NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nconst RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nconst PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nconst RELATIVE_FORMAT_THRESHOLDS = {\n second: 60, // seconds to minute\n minute: 60, // minutes to hour\n hour: 24, // hours to day\n day: 30, // days to month\n month: 12, // months to year\n};\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n const {thresholds} = IntlRelativeFormat;\n ({\n second: thresholds.second,\n minute: thresholds.minute,\n hour: thresholds.hour,\n day: thresholds.day,\n month: thresholds.month,\n 'second-short': thresholds['second-short'],\n 'minute-short': thresholds['minute-short'],\n 'hour-short': thresholds['hour-short'],\n 'day-short': thresholds['day-short'],\n 'month-short': thresholds['month-short'],\n } = newThresholds);\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n let format = formats && formats[type] && formats[type][name];\n if (format) {\n return format;\n }\n\n onError(createError(`No ${type} format named: ${name}`));\n}\n\nexport function formatDate(config, state, value, options = {}) {\n const {locale, formats, timeZone} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let defaults = {\n ...(timeZone && {timeZone}),\n ...(format && getNamedFormat(formats, 'date', format, onError)),\n };\n let filteredOptions = filterProps(\n options,\n DATE_TIME_FORMAT_OPTIONS,\n defaults\n );\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting date.', e));\n }\n\n return String(date);\n}\n\nexport function formatTime(config, state, value, options = {}) {\n const {locale, formats, timeZone} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let defaults = {\n ...(timeZone && {timeZone}),\n ...(format && getNamedFormat(formats, 'time', format, onError)),\n };\n let filteredOptions = filterProps(\n options,\n DATE_TIME_FORMAT_OPTIONS,\n defaults\n );\n\n if (\n !filteredOptions.hour &&\n !filteredOptions.minute &&\n !filteredOptions.second\n ) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = {...filteredOptions, hour: 'numeric', minute: 'numeric'};\n }\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting time.', e));\n }\n\n return String(date);\n}\n\nexport function formatRelative(config, state, value, options = {}) {\n const {locale, formats} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let now = new Date(options.now);\n let defaults = format && getNamedFormat(formats, 'relative', format, onError);\n let filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults);\n\n // Capture the current threshold values, then temporarily override them with\n // specific values just for this render.\n const oldThresholds = {...IntlRelativeFormat.thresholds};\n updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n try {\n return state.getRelativeFormat(locale, filteredOptions).format(date, {\n now: isFinite(now) ? now : state.now(),\n });\n } catch (e) {\n onError(createError('Error formatting relative time.', e));\n } finally {\n updateRelativeFormatThresholds(oldThresholds);\n }\n\n return String(date);\n}\n\nexport function formatNumber(config, state, value, options = {}) {\n const {locale, formats} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let defaults = format && getNamedFormat(formats, 'number', format, onError);\n let filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n\n try {\n return state.getNumberFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting number.', e));\n }\n\n return String(value);\n}\n\nexport function formatPlural(config, state, value, options = {}) {\n const {locale} = config;\n\n let filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n let onError = config.onError || defaultErrorHandler;\n\n try {\n return state.getPluralFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting plural.', e));\n }\n\n return 'other';\n}\n\nexport function formatMessage(\n config,\n state,\n messageDescriptor = {},\n values = {}\n) {\n const {locale, formats, messages, defaultLocale, defaultFormats} = config;\n\n const {id, defaultMessage} = messageDescriptor;\n\n // Produce a better error if the user calls `intl.formatMessage(element)`\n if (process.env.NODE_ENV !== 'production') {\n invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' +\n 'formatMessage(), pass `.props`.');\n }\n\n // `id` is a required field of a Message Descriptor.\n invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n const message = messages && messages[id];\n const hasValues = Object.keys(values).length > 0;\n\n // Avoid expensive message formatting for simple messages without values. In\n // development messages will always be formatted in case of missing values.\n if (!hasValues && process.env.NODE_ENV === 'production') {\n return message || defaultMessage || id;\n }\n\n let formattedMessage;\n let onError = config.onError || defaultErrorHandler;\n\n if (message) {\n try {\n let formatter = state.getMessageFormat(message, locale, formats);\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(\n createError(\n `Error formatting message: \"${id}\" for locale: \"${locale}\"` +\n (defaultMessage ? ', using default message as fallback.' : ''),\n e\n )\n );\n }\n } else {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale, and a default message is in the source.\n if (\n !defaultMessage ||\n (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())\n ) {\n onError(\n createError(\n `Missing message: \"${id}\" for locale: \"${locale}\"` +\n (defaultMessage ? ', using default message as fallback.' : '')\n )\n );\n }\n }\n\n if (!formattedMessage && defaultMessage) {\n try {\n let formatter = state.getMessageFormat(\n defaultMessage,\n defaultLocale,\n defaultFormats\n );\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(\n createError(`Error formatting the default message for: \"${id}\"`, e)\n );\n }\n }\n\n if (!formattedMessage) {\n onError(\n createError(\n `Cannot format message: \"${id}\", ` +\n `using message ${message || defaultMessage\n ? 'source'\n : 'id'} as fallback.`\n )\n );\n }\n\n return formattedMessage || message || defaultMessage || id;\n}\n\nexport function formatHTMLMessage(\n config,\n state,\n messageDescriptor,\n rawValues = {}\n) {\n // Process all the values before they are used when formatting the ICU\n // Message string. Since the formatted message might be injected via\n // `innerHTML`, all String-based values need to be HTML-escaped.\n let escapedValues = Object.keys(rawValues).reduce((escaped, name) => {\n let value = rawValues[name];\n escaped[name] = typeof value === 'string' ? escape(value) : value;\n return escaped;\n }, {});\n\n return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, relativeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nconst SECOND = 1000;\nconst MINUTE = 1000 * 60;\nconst HOUR = 1000 * 60 * 60;\nconst DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nconst MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n let absDelta = Math.abs(delta);\n\n if (absDelta < MINUTE) {\n return 'second';\n }\n\n if (absDelta < HOUR) {\n return 'minute';\n }\n\n if (absDelta < DAY) {\n return 'hour';\n }\n\n // The maximum scheduled delay will be measured in days since the maximum\n // timer delay is less than the number of milliseconds in 25 days.\n return 'day';\n}\n\nfunction getUnitDelay(units) {\n switch (units) {\n case 'second':\n return SECOND;\n case 'minute':\n return MINUTE;\n case 'hour':\n return HOUR;\n case 'day':\n return DAY;\n default:\n return MAX_TIMER_DELAY;\n }\n}\n\nfunction isSameDate(a, b) {\n if (a === b) {\n return true;\n }\n\n let aTime = new Date(a).getTime();\n let bTime = new Date(b).getTime();\n\n return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nexport default class FormattedRelative extends Component {\n static displayName = 'FormattedRelative';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...relativeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n updateInterval: PropTypes.number,\n initialNow: PropTypes.any,\n children: PropTypes.func,\n };\n\n static defaultProps = {\n updateInterval: 1000 * 10,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n\n let now = isFinite(props.initialNow)\n ? Number(props.initialNow)\n : context.intl.now();\n\n // `now` is stored as state so that `render()` remains a function of\n // props + state, instead of accessing `Date.now()` inside `render()`.\n this.state = {now};\n }\n\n scheduleNextUpdate(props, state) {\n // Cancel and pending update because we're scheduling a new update.\n clearTimeout(this._timer);\n\n const {value, units, updateInterval} = props;\n const time = new Date(value).getTime();\n\n // If the `updateInterval` is falsy, including `0` or we don't have a\n // valid date, then auto updates have been turned off, so we bail and\n // skip scheduling an update.\n if (!updateInterval || !isFinite(time)) {\n return;\n }\n\n const delta = time - state.now;\n const unitDelay = getUnitDelay(units || selectUnits(delta));\n const unitRemainder = Math.abs(delta % unitDelay);\n\n // We want the largest possible timer delay which will still display\n // accurate information while reducing unnecessary re-renders. The delay\n // should be until the next \"interesting\" moment, like a tick from\n // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n const delay =\n delta < 0\n ? Math.max(updateInterval, unitDelay - unitRemainder)\n : Math.max(updateInterval, unitRemainder);\n\n this._timer = setTimeout(() => {\n this.setState({now: this.context.intl.now()});\n }, delay);\n }\n\n componentDidMount() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n\n componentWillReceiveProps({value: nextValue}) {\n // When the `props.value` date changes, `state.now` needs to be updated,\n // and the next update can be rescheduled.\n if (!isSameDate(nextValue, this.props.value)) {\n this.setState({now: this.context.intl.now()});\n }\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n componentWillUpdate(nextProps, nextState) {\n this.scheduleNextUpdate(nextProps, nextState);\n }\n\n componentWillUnmount() {\n clearTimeout(this._timer);\n }\n\n render() {\n const {formatRelative, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedRelative = formatRelative(value, {\n ...this.props,\n ...this.state,\n });\n\n if (typeof children === 'function') {\n return children(formattedRelative);\n }\n\n return <Text>{formattedRelative}</Text>;\n }\n}\n","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}}}};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {hop} from './utils';\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexport {defineProperty, objCreate};\n","export default (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function(elements) {\n return {\n type : 'messageFormatPattern',\n elements: elements\n };\n },\n peg$c2 = peg$FAILED,\n peg$c3 = function(text) {\n var string = '',\n i, j, outerLen, inner, innerLen;\n\n for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n inner = text[i];\n\n for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n string += inner[j];\n }\n }\n\n return string;\n },\n peg$c4 = function(messageText) {\n return {\n type : 'messageTextElement',\n value: messageText\n };\n },\n peg$c5 = /^[^ \\t\\n\\r,.+={}#]/,\n peg$c6 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n peg$c7 = \"{\",\n peg$c8 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c9 = null,\n peg$c10 = \",\",\n peg$c11 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c12 = \"}\",\n peg$c13 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c14 = function(id, format) {\n return {\n type : 'argumentElement',\n id : id,\n format: format && format[2]\n };\n },\n peg$c15 = \"number\",\n peg$c16 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n peg$c17 = \"date\",\n peg$c18 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n peg$c19 = \"time\",\n peg$c20 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n peg$c21 = function(type, style) {\n return {\n type : type + 'Format',\n style: style && style[2]\n };\n },\n peg$c22 = \"plural\",\n peg$c23 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c24 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: false,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options\n };\n },\n peg$c25 = \"selectordinal\",\n peg$c26 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c27 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: true,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options\n }\n },\n peg$c28 = \"select\",\n peg$c29 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c30 = function(options) {\n return {\n type : 'selectFormat',\n options: options\n };\n },\n peg$c31 = \"=\",\n peg$c32 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c33 = function(selector, pattern) {\n return {\n type : 'optionalFormatPattern',\n selector: selector,\n value : pattern\n };\n },\n peg$c34 = \"offset:\",\n peg$c35 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n peg$c36 = function(number) {\n return number;\n },\n peg$c37 = function(offset, options) {\n return {\n type : 'pluralFormat',\n offset : offset,\n options: options\n };\n },\n peg$c38 = { type: \"other\", description: \"whitespace\" },\n peg$c39 = /^[ \\t\\n\\r]/,\n peg$c40 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n peg$c41 = { type: \"other\", description: \"optionalWhitespace\" },\n peg$c42 = /^[0-9]/,\n peg$c43 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c44 = /^[0-9a-f]/i,\n peg$c45 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c46 = \"0\",\n peg$c47 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n peg$c48 = /^[1-9]/,\n peg$c49 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n peg$c50 = function(digits) {\n return parseInt(digits, 10);\n },\n peg$c51 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c52 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\" },\n peg$c53 = \"\\\\\\\\\",\n peg$c54 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c55 = function() { return '\\\\'; },\n peg$c56 = \"\\\\#\",\n peg$c57 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c58 = function() { return '\\\\#'; },\n peg$c59 = \"\\\\{\",\n peg$c60 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c61 = function() { return '\\u007B'; },\n peg$c62 = \"\\\\}\",\n peg$c63 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c64 = function() { return '\\u007D'; },\n peg$c65 = \"\\\\u\",\n peg$c66 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c67 = function(digits) {\n return String.fromCharCode(parseInt(digits, 16));\n },\n peg$c68 = function(chars) { return chars.join(''); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0;\n\n s0 = peg$parsemessageTextElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n }\n\n return s0;\n }\n\n function peg$parsemessageText() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c3(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsews();\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsemessageTextElement() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c4(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2;\n\n s0 = peg$parsenumber();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargument();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c10;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseelementFormat();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c9;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c12;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c14(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0;\n\n s0 = peg$parsesimpleFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectOrdinalFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectFormat();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesimpleFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c10;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsechars();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c9;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselectOrdinalFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselectFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c28) {\n s1 = peg$c28;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseoptionalFormatPattern();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseoptionalFormatPattern();\n }\n } else {\n s5 = peg$c2;\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselector() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c31;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsechars();\n }\n\n return s0;\n }\n\n function peg$parseoptionalFormatPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseselector();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c12;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c34) {\n s1 = peg$c34;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c36(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralStyle() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseoffset();\n if (s1 === peg$FAILED) {\n s1 = peg$c9;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseoptionalFormatPattern();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseoptionalFormatPattern();\n }\n } else {\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsews() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n }\n } else {\n s0 = peg$c2;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsews();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsews();\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c46;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c47); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (peg$c48.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsedigit();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsedigit();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c53) {\n s1 = peg$c53;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c55();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c56) {\n s1 = peg$c56;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c58();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c59) {\n s1 = peg$c59;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c64();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c65) {\n s1 = peg$c65;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsehexDigit();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsehexDigit();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c67(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n","/* jslint esnext: true */\n\nimport IntlMessageFormat from './core';\nimport defaultLocale from './en';\n\nIntlMessageFormat.__addLocaleData(defaultLocale);\nIntlMessageFormat.defaultLocale = 'en';\n\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n /*jshint validthis:true */\n var arr = this;\n if (!arr.length) {\n return -1;\n }\n\n for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n if (arr[i] === search) {\n return i;\n }\n }\n\n return -1;\n};\n\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n};\n\nvar dateNow = Date.now || function () {\n return new Date().getTime();\n};\n\nexport {defineProperty, objCreate, arrIndexOf, isArray, dateNow};\n","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}}};\n","/* jslint esnext: true */\n\nimport IntlRelativeFormat from './core';\nimport defaultLocale from './en';\n\nIntlRelativeFormat.__addLocaleData(defaultLocale);\nIntlRelativeFormat.defaultLocale = 'en';\n\nexport default IntlRelativeFormat;\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport PropTypes from 'prop-types';\n\nconst {\n bool,\n number,\n string,\n func,\n object,\n oneOf,\n shape,\n any,\n oneOfType,\n} = PropTypes;\nconst localeMatcher = oneOf(['best fit', 'lookup']);\nconst narrowShortLong = oneOf(['narrow', 'short', 'long']);\nconst numeric2digit = oneOf(['numeric', '2-digit']);\nconst funcReq = func.isRequired;\n\nexport const intlConfigPropTypes = {\n locale: string,\n timeZone: string,\n formats: object,\n messages: object,\n textComponent: any,\n\n defaultLocale: string,\n defaultFormats: object,\n\n onError: func,\n};\n\nexport const intlFormatPropTypes = {\n formatDate: funcReq,\n formatTime: funcReq,\n formatRelative: funcReq,\n formatNumber: funcReq,\n formatPlural: funcReq,\n formatMessage: funcReq,\n formatHTMLMessage: funcReq,\n};\n\nexport const intlShape = shape({\n ...intlConfigPropTypes,\n ...intlFormatPropTypes,\n formatters: object,\n now: funcReq,\n});\n\nexport const messageDescriptorPropTypes = {\n id: string.isRequired,\n description: oneOfType([string, object]),\n defaultMessage: string,\n};\n\nexport const dateTimeFormatPropTypes = {\n localeMatcher,\n formatMatcher: oneOf(['basic', 'best fit']),\n\n timeZone: string,\n hour12: bool,\n\n weekday: narrowShortLong,\n era: narrowShortLong,\n year: numeric2digit,\n month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: numeric2digit,\n hour: numeric2digit,\n minute: numeric2digit,\n second: numeric2digit,\n timeZoneName: oneOf(['short', 'long']),\n};\n\nexport const numberFormatPropTypes = {\n localeMatcher,\n\n style: oneOf(['decimal', 'currency', 'percent']),\n currency: string,\n currencyDisplay: oneOf(['symbol', 'code', 'name']),\n useGrouping: bool,\n\n minimumIntegerDigits: number,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n minimumSignificantDigits: number,\n maximumSignificantDigits: number,\n};\n\nexport const relativeFormatPropTypes = {\n style: oneOf(['best fit', 'numeric']),\n units: oneOf([\n 'second',\n 'minute',\n 'hour',\n 'day',\n 'month',\n 'year',\n 'second-short',\n 'minute-short',\n 'hour-short',\n 'day-short',\n 'month-short',\n 'year-short',\n ]),\n};\n\nexport const pluralFormatPropTypes = {\n style: oneOf(['cardinal', 'ordinal']),\n};\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Function.prototype.bind implementation from Mozilla Developer Network:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\nvar bind = Function.prototype.bind || function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n};\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexport {bind, defineProperty, objCreate};\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport {Component, Children} from 'react';\nimport PropTypes from 'prop-types';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport IntlPluralFormat from '../plural';\nimport memoizeIntlConstructor from 'intl-format-cache';\nimport invariant from 'invariant';\nimport {\n createError,\n defaultErrorHandler,\n shouldIntlComponentUpdate,\n filterProps,\n} from '../utils';\nimport {intlConfigPropTypes, intlFormatPropTypes, intlShape} from '../types';\nimport * as format from '../format';\nimport {hasLocaleData} from '../locale-data-registry';\n\nconst intlConfigPropNames = Object.keys(intlConfigPropTypes);\nconst intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nconst defaultProps = {\n formats: {},\n messages: {},\n timeZone: null,\n textComponent: 'span',\n\n defaultLocale: 'en',\n defaultFormats: {},\n\n onError: defaultErrorHandler,\n};\n\nexport default class IntlProvider extends Component {\n static displayName = 'IntlProvider';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static childContextTypes = {\n intl: intlShape.isRequired,\n };\n\n static propTypes = {\n ...intlConfigPropTypes,\n children: PropTypes.element.isRequired,\n initialNow: PropTypes.any,\n };\n\n constructor(props, context = {}) {\n super(props, context);\n\n invariant(\n typeof Intl !== 'undefined',\n '[React Intl] The `Intl` APIs must be available in the runtime, ' +\n 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' +\n 'See: http://formatjs.io/guides/runtime-environments/'\n );\n\n const {intl: intlContext} = context;\n\n // Used to stabilize time when performing an initial rendering so that\n // all relative times use the same reference \"now\" time.\n let initialNow;\n if (isFinite(props.initialNow)) {\n initialNow = Number(props.initialNow);\n } else {\n // When an `initialNow` isn't provided via `props`, look to see an\n // <IntlProvider> exists in the ancestry and call its `now()`\n // function to propagate its value for \"now\".\n initialNow = intlContext ? intlContext.now() : Date.now();\n }\n\n // Creating `Intl*` formatters is expensive. If there's a parent\n // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n // memoize the `Intl*` constructors and cache them for the lifecycle of\n // this IntlProvider instance.\n const {\n formatters = {\n getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n getPluralFormat: memoizeIntlConstructor(IntlPluralFormat),\n },\n } =\n intlContext || {};\n\n this.state = {\n ...formatters,\n\n // Wrapper to provide stable \"now\" time for initial render.\n now: () => {\n return this._didDisplay ? Date.now() : initialNow;\n },\n };\n }\n\n getConfig() {\n const {intl: intlContext} = this.context;\n\n // Build a whitelisted config object from `props`, defaults, and\n // `context.intl`, if an <IntlProvider> exists in the ancestry.\n let config = filterProps(this.props, intlConfigPropNames, intlContext);\n\n // Apply default props. This must be applied last after the props have\n // been resolved and inherited from any <IntlProvider> in the ancestry.\n // This matches how React resolves `defaultProps`.\n for (let propName in defaultProps) {\n if (config[propName] === undefined) {\n config[propName] = defaultProps[propName];\n }\n }\n\n if (!hasLocaleData(config.locale)) {\n const {locale, defaultLocale, defaultFormats, onError} = config;\n\n onError(\n createError(\n `Missing locale data for locale: \"${locale}\". ` +\n `Using default locale: \"${defaultLocale}\" as fallback.`\n )\n );\n\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n config = {\n ...config,\n locale: defaultLocale,\n formats: defaultFormats,\n messages: defaultProps.messages,\n };\n }\n\n return config;\n }\n\n getBoundFormatFns(config, state) {\n return intlFormatPropNames.reduce((boundFormatFns, name) => {\n boundFormatFns[name] = format[name].bind(null, config, state);\n return boundFormatFns;\n }, {});\n }\n\n getChildContext() {\n const config = this.getConfig();\n\n // Bind intl factories and current config to the format functions.\n const boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n const {now, ...formatters} = this.state;\n\n return {\n intl: {\n ...config,\n ...boundFormatFns,\n formatters,\n now,\n },\n };\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n componentDidMount() {\n this._didDisplay = true;\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, dateTimeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedDate extends Component {\n static displayName = 'FormattedDate';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...dateTimeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatDate, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedDate = formatDate(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedDate);\n }\n\n return <Text>{formattedDate}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, dateTimeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedTime extends Component {\n static displayName = 'FormattedTime';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...dateTimeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatTime, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedTime = formatTime(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedTime);\n }\n\n return <Text>{formattedTime}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, numberFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedNumber extends Component {\n static displayName = 'FormattedNumber';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...numberFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatNumber, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedNumber = formatNumber(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedNumber);\n }\n\n return <Text>{formattedNumber}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, pluralFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedPlural extends Component {\n static displayName = 'FormattedPlural';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...pluralFormatPropTypes,\n value: PropTypes.any.isRequired,\n\n other: PropTypes.node.isRequired,\n zero: PropTypes.node,\n one: PropTypes.node,\n two: PropTypes.node,\n few: PropTypes.node,\n many: PropTypes.node,\n\n children: PropTypes.func,\n };\n\n static defaultProps = {\n style: 'cardinal',\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatPlural, textComponent: Text} = this.context.intl;\n const {value, other, children} = this.props;\n\n let pluralCategory = formatPlural(value, this.props);\n let formattedPlural = this.props[pluralCategory] || other;\n\n if (typeof children === 'function') {\n return children(formattedPlural);\n }\n\n return <Text>{formattedPlural}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport {Component, createElement, isValidElement} from 'react';\nimport PropTypes from 'prop-types';\nimport IntlMessageFormat from 'intl-messageformat';\nimport memoizeIntlConstructor from 'intl-format-cache';\nimport {intlShape, messageDescriptorPropTypes} from '../types';\nimport {\n invariantIntlContext,\n shallowEquals,\n shouldIntlComponentUpdate,\n} from '../utils';\nimport {formatMessage as baseFormatMessage} from '../format';\n\nconst defaultFormatMessage = (descriptor, values) => {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. Using default message as fallback.'\n );\n }\n return baseFormatMessage(\n {},\n {getMessageFormat: memoizeIntlConstructor(IntlMessageFormat)},\n descriptor,\n values\n );\n};\n\nexport default class FormattedMessage extends Component {\n static displayName = 'FormattedMessage';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...messageDescriptorPropTypes,\n values: PropTypes.object,\n tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n children: PropTypes.func,\n };\n\n static defaultProps = {\n values: {},\n };\n\n constructor(props, context) {\n super(props, context);\n if (!props.defaultMessage) {\n invariantIntlContext(context);\n }\n }\n\n shouldComponentUpdate(nextProps, ...next) {\n const {values} = this.props;\n const {values: nextValues} = nextProps;\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n let nextPropsToCheck = {\n ...nextProps,\n values,\n };\n\n return shouldIntlComponentUpdate(this, nextPropsToCheck, ...next);\n }\n\n render() {\n const {formatMessage = defaultFormatMessage, textComponent: Text = 'span'} =\n this.context.intl || {};\n\n const {\n id,\n description,\n defaultMessage,\n values,\n tagName: Component = Text,\n children,\n } = this.props;\n\n let tokenDelimiter;\n let tokenizedValues;\n let elements;\n\n let hasValues = values && Object.keys(values).length > 0;\n if (hasValues) {\n // Creates a token with a random UID that should not be guessable or\n // conflict with other parts of the `message` string.\n let uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n let generateToken = (() => {\n let counter = 0;\n return () => `ELEMENT-${uid}-${(counter += 1)}`;\n })();\n\n // Splitting with a delimiter to support IE8. When using a regex\n // with a capture group IE8 does not include the capture group in\n // the resulting array.\n tokenDelimiter = `@__${uid}__@`;\n tokenizedValues = {};\n elements = {};\n\n // Iterates over the `props` to keep track of any React Element\n // values so they can be represented by the `token` as a placeholder\n // when the `message` is formatted. This allows the formatted\n // message to then be broken-up into parts with references to the\n // React Elements inserted back in.\n Object.keys(values).forEach(name => {\n let value = values[name];\n\n if (isValidElement(value)) {\n let token = generateToken();\n tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n elements[token] = value;\n } else {\n tokenizedValues[name] = value;\n }\n });\n }\n\n let descriptor = {id, description, defaultMessage};\n let formattedMessage = formatMessage(descriptor, tokenizedValues || values);\n\n let nodes;\n\n let hasElements = elements && Object.keys(elements).length > 0;\n if (hasElements) {\n // Split the message into parts so the React Element values captured\n // above can be inserted back into the rendered message. This\n // approach allows messages to render with React Elements while\n // keeping React's virtual diffing working properly.\n nodes = formattedMessage\n .split(tokenDelimiter)\n .filter(part => !!part)\n .map(part => elements[part] || part);\n } else {\n nodes = [formattedMessage];\n }\n\n if (typeof children === 'function') {\n return children(...nodes);\n }\n\n // Needs to use `createElement()` instead of JSX, otherwise React will\n // warn about a missing `key` prop with rich-text message formatting.\n return createElement(Component, null, ...nodes);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, messageDescriptorPropTypes} from '../types';\nimport {\n invariantIntlContext,\n shallowEquals,\n shouldIntlComponentUpdate,\n} from '../utils';\n\nexport default class FormattedHTMLMessage extends Component {\n static displayName = 'FormattedHTMLMessage';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...messageDescriptorPropTypes,\n values: PropTypes.object,\n tagName: PropTypes.string,\n children: PropTypes.func,\n };\n\n static defaultProps = {\n values: {},\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(nextProps, ...next) {\n const {values} = this.props;\n const {values: nextValues} = nextProps;\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n let nextPropsToCheck = {\n ...nextProps,\n values,\n };\n\n return shouldIntlComponentUpdate(this, nextPropsToCheck, ...next);\n }\n\n render() {\n const {formatHTMLMessage, textComponent: Text} = this.context.intl;\n\n const {\n id,\n description,\n defaultMessage,\n values: rawValues,\n tagName: Component = Text,\n children,\n } = this.props;\n\n let descriptor = {id, description, defaultMessage};\n let formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n if (typeof children === 'function') {\n return children(formattedHTMLMessage);\n }\n\n // Since the message presumably has HTML in it, we need to set\n // `innerHTML` in order for it to be rendered and not escaped by React.\n // To be safe, all string prop values were escaped when formatting the\n // message. It is assumed that the message is not UGC, and came from the\n // developer making it more like a template.\n //\n // Note: There's a perf impact of using this component since there's no\n // way for React to do its virtual DOM diffing.\n const html = {__html: formattedHTMLMessage};\n return <Component dangerouslySetInnerHTML={html} />;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport defaultLocaleData from './en';\nimport {addLocaleData} from './locale-data-registry';\n\naddLocaleData(defaultLocaleData);\n\nexport {addLocaleData};\nexport {intlShape} from './types';\nexport {default as injectIntl} from './inject';\nexport {default as defineMessages} from './define-messages';\n\nexport {default as IntlProvider} from './components/provider';\nexport {default as FormattedDate} from './components/date';\nexport {default as FormattedTime} from './components/time';\nexport {default as FormattedRelative} from './components/relative';\nexport {default as FormattedNumber} from './components/number';\nexport {default as FormattedPlural} from './components/plural';\nexport {default as FormattedMessage} from './components/message';\nexport {default as FormattedHTMLMessage} from './components/html-message';\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nexport default function defineMessages(messageDescriptors) {\n // This simply returns what's passed-in because it's meant to be a hook for\n // babel-plugin-react-intl.\n return messageDescriptors;\n}\n"],"names":["extend","obj","i","len","source","key","sources","Array","prototype","slice","call","arguments","length","hop","Compiler","locales","formats","pluralFn","StringFormat","id","PluralFormat","useOrdinal","offset","options","PluralOffsetString","numberFormat","string","SelectFormat","MessageFormat","message","ast","__parse","type","TypeError","this","_mergeFormats","value","_resolveLocale","_findPluralRuleFunction","_locale","pattern","_compilePattern","messageFormat","format","values","_format","e","variableId","Error","daysToYears","days","RelativeFormat","isArray","concat","_resolveStyle","style","_isValidUnits","units","_findFields","objCreate","relativeFormat","date","addLocaleData","data","forEach","localeData","locale","__addLocaleData","hasLocaleData","localeParts","split","hasIMFAndIRFLocaleData","join","pop","normalizedLocale","toLowerCase","IntlMessageFormat","__localeData__","IntlRelativeFormat","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","objectPrototype","inheritedComponent","getPrototypeOf","keys","getOwnPropertyNames","getOwnPropertySymbols","REACT_STATICS","KNOWN_STATICS","descriptor","getOwnPropertyDescriptor","escape","str","replace","UNSAFE_CHARS_REGEX","ESCAPED_CHARS","match","filterProps","props","whitelist","defaults","reduce","filtered","name","hasOwnProperty","invariantIntlContext","intl","shallowEquals","objA","objB","keysA","Object","keysB","bHasOwnProperty","bind","shouldIntlComponentUpdate","nextProps","nextState","state","context","nextContext","nextIntl","intlConfigPropNames","createError","exception","defaultErrorHandler","error","getDisplayName","Component","displayName","resolveLocale","findPluralFunction","createFormatCache","FormatConstructor","cache","args","cacheId","getCacheId","apply","inputs","JSON","input","push","orderedProps","stringify","prop","orderedKeys","sort","updateRelativeFormatThresholds","newThresholds","thresholds","second","minute","hour","day","month","getNamedFormat","onError","formatMessage","config","messageDescriptor","messages","defaultLocale","defaultFormats","defaultMessage","formattedMessage","getMessageFormat","selectUnits","delta","absDelta","Math","abs","MINUTE","HOUR","DAY","getUnitDelay","SECOND","MAX_TIMER_DELAY","isSameDate","a","b","aTime","Date","getTime","bTime","isFinite","pluralRuleFunction","n","ord","s","String","v0","t0","Number","n10","n100","fields","year","relative","0","1","-1","relativeTime","future","one","other","past","defineProperty","desc","__defineGetter__","get","create","proto","F","k","compile","pluralStack","currentPlural","pluralNumberFormat","compileMessage","element","elements","compileMessageText","compileArgument","test","Intl","NumberFormat","number","DateTimeFormat","time","compileOptions","ordinal","optionsHash","option","selector","getOption","SyntaxError","expected","found","line","column","child","parent","ctor","constructor","peg$computePosDetails","pos","peg$cachedPos","seenCR","details","startPos","endPos","p","ch","charAt","peg$cachedPosDetails","peg$fail","peg$currPos","peg$maxFailPos","peg$parsestart","peg$parsemessageFormatPattern","s1","s2","peg$parsemessageFormatElement","peg$FAILED","peg$c1","s0","peg$parsemessageTextElement","peg$parseargumentElement","peg$parsemessageText","s3","s4","s5","peg$parse_","peg$parsechars","peg$c2","peg$c3","peg$parsews","substring","peg$c4","peg$parseargument","peg$parsenumber","peg$c5","peg$silentFails","peg$c6","s6","s7","s8","charCodeAt","peg$c7","peg$c8","peg$c10","peg$c11","peg$parseelementFormat","peg$c9","peg$c12","peg$c13","peg$c14","peg$parsesimpleFormat","peg$parsepluralFormat","peg$parseselectOrdinalFormat","peg$parseselectFormat","substr","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$parsepluralStyle","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$parseoptionalFormatPattern","peg$c30","peg$parseselector","peg$c31","peg$c32","peg$c33","peg$parseoffset","peg$c34","peg$c35","peg$c36","peg$c37","peg$c39","peg$c40","peg$c38","peg$c41","peg$parsedigit","peg$c42","peg$c43","peg$parsehexDigit","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$parsechar","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$result","peg$startRuleFunctions","start","peg$startRuleFunction","text","j","outerLen","inner","innerLen","messageText","description","pluralStyle","digits","parseInt","fromCharCode","chars","peg$maxFailExpected","startRule","posDetails","splice","expectedDesc","foundDesc","expectedDescs","hex","toString","toUpperCase","parser","parse","undefined","resolvedOptions","parentLocale","part","err","result","mergedType","mergedFormats","round","from","to","millisecond","week","rawYears","arrIndexOf","indexOf","search","fromIndex","arr","max","dateNow","now","FIELDS","STYLES","second-short","minute-short","hour-short","day-short","month-short","_options","_compileMessage","_locales","_fields","_getMessage","_messages","_getRelativeUnits","diff","field","RangeError","diffReport","_selectUnits","diffInUnits","relativeUnits","suggestion","l","filter","year-short","bool","PropTypes","func","object","oneOf","shape","any","oneOfType","localeMatcher","narrowShortLong","numeric2digit","funcReq","isRequired","intlConfigPropTypes","intlFormatPropTypes","intlShape","dateTimeFormatPropTypes","numberFormatPropTypes","relativeFormatPropTypes","pluralFormatPropTypes","condition","c","d","f","argIndex","framesToPop","IntlPluralFormat","Function","oThis","aArgs","fToBind","fNOP","fBound","DATE_TIME_FORMAT_OPTIONS","NUMBER_FORMAT_OPTIONS","RELATIVE_FORMAT_OPTIONS","PLURAL_FORMAT_OPTIONS","RELATIVE_FORMAT_THRESHOLDS","timeZone","filteredOptions","getDateTimeFormat","oldThresholds","getRelativeFormat","getNumberFormat","getPluralFormat","rawValues","escaped","intlFormatPropNames","defaultProps","IntlProvider","intlContext","initialNow","formatters","memoizeIntlConstructor","_this","_didDisplay","propName","boundFormatFns","getConfig","getBoundFormatFns","next","Children","only","children","contextTypes","childContextTypes","FormattedDate","formatDate","Text","textComponent","formattedDate","React","FormattedTime","formatTime","formattedTime","FormattedRelative","_timer","updateInterval","unitDelay","unitRemainder","delay","setTimeout","setState","_this2","scheduleNextUpdate","formatRelative","formattedRelative","FormattedNumber","formatNumber","formattedNumber","FormattedPlural","formatPlural","pluralCategory","formattedPlural","defaultFormatMessage","baseFormatMessage","FormattedMessage","nextPropsToCheck","tagName","tokenDelimiter","tokenizedValues","uid","floor","random","generateToken","counter","isValidElement","token","nodes","map","createElement","FormattedHTMLMessage","formatHTMLMessage","formattedHTMLMessage","html","__html","dangerouslySetInnerHTML","defaultLocaleData","WrappedComponent","intlPropName","withRef","InjectIntl","refs","wrappedInstance","messageDescriptors"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-intl.min.js","sources":["../node_modules/intl-messageformat/src/utils.js","../node_modules/intl-messageformat/src/compiler.js","../node_modules/intl-messageformat/src/core.js","../node_modules/intl-relativeformat/src/diff.js","../node_modules/intl-relativeformat/src/core.js","../src/locale-data-registry.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../src/utils.js","../src/inject.js","../src/plural.js","../node_modules/intl-format-cache/src/memoizer.js","../src/format.js","../src/components/relative.js","../src/en.js","../node_modules/intl-messageformat/src/es5.js","../node_modules/intl-messageformat-parser/src/parser.js","../node_modules/intl-messageformat/src/en.js","../node_modules/intl-messageformat/src/main.js","../node_modules/intl-relativeformat/src/es5.js","../node_modules/intl-relativeformat/src/en.js","../node_modules/intl-relativeformat/src/main.js","../src/types.js","../node_modules/invariant/invariant.js","../node_modules/intl-format-cache/src/es5.js","../src/components/provider.js","../src/components/date.js","../src/components/time.js","../src/components/number.js","../src/components/plural.js","../src/components/message.js","../src/components/html-message.js","../src/react-intl.js","../src/define-messages.js"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport var hop = Object.prototype.hasOwnProperty;\n\nexport function extend(obj) {\n var sources = Array.prototype.slice.call(arguments, 1),\n i, len, source, key;\n\n for (i = 0, len = sources.length; i < len; i += 1) {\n source = sources[i];\n if (!source) { continue; }\n\n for (key in source) {\n if (hop.call(source, key)) {\n obj[key] = source[key];\n }\n }\n }\n\n return obj;\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nexport default Compiler;\n\nfunction Compiler(locales, formats, pluralFn) {\n this.locales = locales;\n this.formats = formats;\n this.pluralFn = pluralFn;\n}\n\nCompiler.prototype.compile = function (ast) {\n this.pluralStack = [];\n this.currentPlural = null;\n this.pluralNumberFormat = null;\n\n return this.compileMessage(ast);\n};\n\nCompiler.prototype.compileMessage = function (ast) {\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new Error('Message AST is not of type: \"messageFormatPattern\"');\n }\n\n var elements = ast.elements,\n pattern = [];\n\n var i, len, element;\n\n for (i = 0, len = elements.length; i < len; i += 1) {\n element = elements[i];\n\n switch (element.type) {\n case 'messageTextElement':\n pattern.push(this.compileMessageText(element));\n break;\n\n case 'argumentElement':\n pattern.push(this.compileArgument(element));\n break;\n\n default:\n throw new Error('Message element does not have a valid type');\n }\n }\n\n return pattern;\n};\n\nCompiler.prototype.compileMessageText = function (element) {\n // When this `element` is part of plural sub-pattern and its value contains\n // an unescaped '#', use a `PluralOffsetString` helper to properly output\n // the number with the correct offset in the string.\n if (this.currentPlural && /(^|[^\\\\])#/g.test(element.value)) {\n // Create a cache a NumberFormat instance that can be reused for any\n // PluralOffsetString instance in this message.\n if (!this.pluralNumberFormat) {\n this.pluralNumberFormat = new Intl.NumberFormat(this.locales);\n }\n\n return new PluralOffsetString(\n this.currentPlural.id,\n this.currentPlural.format.offset,\n this.pluralNumberFormat,\n element.value);\n }\n\n // Unescape the escaped '#'s in the message text.\n return element.value.replace(/\\\\#/g, '#');\n};\n\nCompiler.prototype.compileArgument = function (element) {\n var format = element.format;\n\n if (!format) {\n return new StringFormat(element.id);\n }\n\n var formats = this.formats,\n locales = this.locales,\n pluralFn = this.pluralFn,\n options;\n\n switch (format.type) {\n case 'numberFormat':\n options = formats.number[format.style];\n return {\n id : element.id,\n format: new Intl.NumberFormat(locales, options).format\n };\n\n case 'dateFormat':\n options = formats.date[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'timeFormat':\n options = formats.time[format.style];\n return {\n id : element.id,\n format: new Intl.DateTimeFormat(locales, options).format\n };\n\n case 'pluralFormat':\n options = this.compileOptions(element);\n return new PluralFormat(\n element.id, format.ordinal, format.offset, options, pluralFn\n );\n\n case 'selectFormat':\n options = this.compileOptions(element);\n return new SelectFormat(element.id, options);\n\n default:\n throw new Error('Message element does not have a valid format type');\n }\n};\n\nCompiler.prototype.compileOptions = function (element) {\n var format = element.format,\n options = format.options,\n optionsHash = {};\n\n // Save the current plural element, if any, then set it to a new value when\n // compiling the options sub-patterns. This conforms the spec's algorithm\n // for handling `\"#\"` syntax in message text.\n this.pluralStack.push(this.currentPlural);\n this.currentPlural = format.type === 'pluralFormat' ? element : null;\n\n var i, len, option;\n\n for (i = 0, len = options.length; i < len; i += 1) {\n option = options[i];\n\n // Compile the sub-pattern and save it under the options's selector.\n optionsHash[option.selector] = this.compileMessage(option.value);\n }\n\n // Pop the plural stack to put back the original current plural value.\n this.currentPlural = this.pluralStack.pop();\n\n return optionsHash;\n};\n\n// -- Compiler Helper Classes --------------------------------------------------\n\nfunction StringFormat(id) {\n this.id = id;\n}\n\nStringFormat.prototype.format = function (value) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n\n return typeof value === 'string' ? value : String(value);\n};\n\nfunction PluralFormat(id, useOrdinal, offset, options, pluralFn) {\n this.id = id;\n this.useOrdinal = useOrdinal;\n this.offset = offset;\n this.options = options;\n this.pluralFn = pluralFn;\n}\n\nPluralFormat.prototype.getOption = function (value) {\n var options = this.options;\n\n var option = options['=' + value] ||\n options[this.pluralFn(value - this.offset, this.useOrdinal)];\n\n return option || options.other;\n};\n\nfunction PluralOffsetString(id, offset, numberFormat, string) {\n this.id = id;\n this.offset = offset;\n this.numberFormat = numberFormat;\n this.string = string;\n}\n\nPluralOffsetString.prototype.format = function (value) {\n var number = this.numberFormat.format(value - this.offset);\n\n return this.string\n .replace(/(^|[^\\\\])#/g, '$1' + number)\n .replace(/\\\\#/g, '#');\n};\n\nfunction SelectFormat(id, options) {\n this.id = id;\n this.options = options;\n}\n\nSelectFormat.prototype.getOption = function (value) {\n var options = this.options;\n return options[value] || options.other;\n};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {extend, hop} from './utils';\nimport {defineProperty, objCreate} from './es5';\nimport Compiler from './compiler';\nimport parser from 'intl-messageformat-parser';\n\nexport default MessageFormat;\n\n// -- MessageFormat --------------------------------------------------------\n\nfunction MessageFormat(message, locales, formats) {\n // Parse string messages into an AST.\n var ast = typeof message === 'string' ?\n MessageFormat.__parse(message) : message;\n\n if (!(ast && ast.type === 'messageFormatPattern')) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n formats = this._mergeFormats(MessageFormat.formats, formats);\n\n // Defined first because it's used to build the format pattern.\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n\n // Compile the `ast` to a pattern that is highly optimized for repeated\n // `format()` invocations. **Note:** This passes the `locales` set provided\n // to the constructor instead of just the resolved locale.\n var pluralFn = this._findPluralRuleFunction(this._locale);\n var pattern = this._compilePattern(ast, locales, formats, pluralFn);\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var messageFormat = this;\n this.format = function (values) {\n try {\n return messageFormat._format(pattern, values);\n } catch (e) {\n if (e.variableId) {\n throw new Error(\n 'The intl string context variable \\'' + e.variableId + '\\'' +\n ' was not provided to the string \\'' + message + '\\''\n );\n } else {\n throw e;\n }\n }\n };\n}\n\n// Default format options used as the prototype of the `formats` provided to the\n// constructor. These are used when constructing the internal Intl.NumberFormat\n// and Intl.DateTimeFormat instances.\ndefineProperty(MessageFormat, 'formats', {\n enumerable: true,\n\n value: {\n number: {\n 'currency': {\n style: 'currency'\n },\n\n 'percent': {\n style: 'percent'\n }\n },\n\n date: {\n 'short': {\n month: 'numeric',\n day : 'numeric',\n year : '2-digit'\n },\n\n 'medium': {\n month: 'short',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'long': {\n month: 'long',\n day : 'numeric',\n year : 'numeric'\n },\n\n 'full': {\n weekday: 'long',\n month : 'long',\n day : 'numeric',\n year : 'numeric'\n }\n },\n\n time: {\n 'short': {\n hour : 'numeric',\n minute: 'numeric'\n },\n\n 'medium': {\n hour : 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n\n 'long': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n },\n\n 'full': {\n hour : 'numeric',\n minute : 'numeric',\n second : 'numeric',\n timeZoneName: 'short'\n }\n }\n }\n});\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(MessageFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(MessageFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlMessageFormat is missing a ' +\n '`locale` property'\n );\n }\n\n MessageFormat.__localeData__[data.locale.toLowerCase()] = data;\n}});\n\n// Defines `__parse()` static method as an exposed private.\ndefineProperty(MessageFormat, '__parse', {value: parser.parse});\n\n// Define public `defaultLocale` property which defaults to English, but can be\n// set by the developer.\ndefineProperty(MessageFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\nMessageFormat.prototype.resolvedOptions = function () {\n // TODO: Provide anything else?\n return {\n locale: this._locale\n };\n};\n\nMessageFormat.prototype._compilePattern = function (ast, locales, formats, pluralFn) {\n var compiler = new Compiler(locales, formats, pluralFn);\n return compiler.compile(ast);\n};\n\nMessageFormat.prototype._findPluralRuleFunction = function (locale) {\n var localeData = MessageFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find a `pluralRuleFunction` to return.\n while (data) {\n if (data.pluralRuleFunction) {\n return data.pluralRuleFunction;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlMessageFormat is missing a ' +\n '`pluralRuleFunction` for :' + locale\n );\n};\n\nMessageFormat.prototype._format = function (pattern, values) {\n var result = '',\n i, len, part, id, value, err;\n\n for (i = 0, len = pattern.length; i < len; i += 1) {\n part = pattern[i];\n\n // Exist early for string parts.\n if (typeof part === 'string') {\n result += part;\n continue;\n }\n\n id = part.id;\n\n // Enforce that all required values are provided by the caller.\n if (!(values && hop.call(values, id))) {\n err = new Error('A value must be provided for: ' + id);\n err.variableId = id;\n throw err;\n }\n\n value = values[id];\n\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (part.options) {\n result += this._format(part.getOption(value), values);\n } else {\n result += part.format(value);\n }\n }\n\n return result;\n};\n\nMessageFormat.prototype._mergeFormats = function (defaults, formats) {\n var mergedFormats = {},\n type, mergedType;\n\n for (type in defaults) {\n if (!hop.call(defaults, type)) { continue; }\n\n mergedFormats[type] = mergedType = objCreate(defaults[type]);\n\n if (formats && hop.call(formats, type)) {\n extend(mergedType, formats[type]);\n }\n }\n\n return mergedFormats;\n};\n\nMessageFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(MessageFormat.defaultLocale);\n\n var localeData = MessageFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlMessageFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nvar round = Math.round;\n\nfunction daysToYears(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n return days * 400 / 146097;\n}\n\nexport default function (from, to) {\n // Convert to ms timestamps.\n from = +from;\n to = +to;\n\n var millisecond = round(to - from),\n second = round(millisecond / 1000),\n minute = round(second / 60),\n hour = round(minute / 60),\n day = round(hour / 24),\n week = round(day / 7);\n\n var rawYears = daysToYears(day),\n month = round(rawYears * 12),\n year = round(rawYears);\n\n return {\n millisecond : millisecond,\n second : second,\n 'second-short' : second,\n minute : minute,\n 'minute-short' : minute,\n hour : hour,\n 'hour-short' : hour,\n day : day,\n 'day-short' : day,\n week : week,\n 'week-short' : week,\n month : month,\n 'month-short' : month,\n year : year,\n 'year-short' : year\n };\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport IntlMessageFormat from 'intl-messageformat';\nimport diff from './diff';\nimport {\n defineProperty,\n objCreate,\n arrIndexOf,\n isArray,\n dateNow\n} from './es5';\n\nexport default RelativeFormat;\n\n// -----------------------------------------------------------------------------\n\nvar FIELDS = [\n 'second', 'second-short',\n 'minute', 'minute-short',\n 'hour', 'hour-short',\n 'day', 'day-short',\n 'month', 'month-short',\n 'year', 'year-short'\n];\nvar STYLES = ['best fit', 'numeric'];\n\n// -- RelativeFormat -----------------------------------------------------------\n\nfunction RelativeFormat(locales, options) {\n options = options || {};\n\n // Make a copy of `locales` if it's an array, so that it doesn't change\n // since it's used lazily.\n if (isArray(locales)) {\n locales = locales.concat();\n }\n\n defineProperty(this, '_locale', {value: this._resolveLocale(locales)});\n defineProperty(this, '_options', {value: {\n style: this._resolveStyle(options.style),\n units: this._isValidUnits(options.units) && options.units\n }});\n\n defineProperty(this, '_locales', {value: locales});\n defineProperty(this, '_fields', {value: this._findFields(this._locale)});\n defineProperty(this, '_messages', {value: objCreate(null)});\n\n // \"Bind\" `format()` method to `this` so it can be passed by reference like\n // the other `Intl` APIs.\n var relativeFormat = this;\n this.format = function format(date, options) {\n return relativeFormat._format(date, options);\n };\n}\n\n// Define internal private properties for dealing with locale data.\ndefineProperty(RelativeFormat, '__localeData__', {value: objCreate(null)});\ndefineProperty(RelativeFormat, '__addLocaleData', {value: function (data) {\n if (!(data && data.locale)) {\n throw new Error(\n 'Locale data provided to IntlRelativeFormat is missing a ' +\n '`locale` property value'\n );\n }\n\n RelativeFormat.__localeData__[data.locale.toLowerCase()] = data;\n\n // Add data to IntlMessageFormat.\n IntlMessageFormat.__addLocaleData(data);\n}});\n\n// Define public `defaultLocale` property which can be set by the developer, or\n// it will be set when the first RelativeFormat instance is created by\n// leveraging the resolved locale from `Intl`.\ndefineProperty(RelativeFormat, 'defaultLocale', {\n enumerable: true,\n writable : true,\n value : undefined\n});\n\n// Define public `thresholds` property which can be set by the developer, and\n// defaults to relative time thresholds from moment.js.\ndefineProperty(RelativeFormat, 'thresholds', {\n enumerable: true,\n\n value: {\n second: 45, 'second-short': 45, // seconds to minute\n minute: 45, 'minute-short': 45, // minutes to hour\n hour : 22, 'hour-short': 22, // hours to day\n day : 26, 'day-short': 26, // days to month\n month : 11, 'month-short': 11 // months to year\n }\n});\n\nRelativeFormat.prototype.resolvedOptions = function () {\n return {\n locale: this._locale,\n style : this._options.style,\n units : this._options.units\n };\n};\n\nRelativeFormat.prototype._compileMessage = function (units) {\n // `this._locales` is the original set of locales the user specified to the\n // constructor, while `this._locale` is the resolved root locale.\n var locales = this._locales;\n var resolvedLocale = this._locale;\n\n var field = this._fields[units];\n var relativeTime = field.relativeTime;\n var future = '';\n var past = '';\n var i;\n\n for (i in relativeTime.future) {\n if (relativeTime.future.hasOwnProperty(i)) {\n future += ' ' + i + ' {' +\n relativeTime.future[i].replace('{0}', '#') + '}';\n }\n }\n\n for (i in relativeTime.past) {\n if (relativeTime.past.hasOwnProperty(i)) {\n past += ' ' + i + ' {' +\n relativeTime.past[i].replace('{0}', '#') + '}';\n }\n }\n\n var message = '{when, select, future {{0, plural, ' + future + '}}' +\n 'past {{0, plural, ' + past + '}}}';\n\n // Create the synthetic IntlMessageFormat instance using the original\n // locales value specified by the user when constructing the the parent\n // IntlRelativeFormat instance.\n return new IntlMessageFormat(message, locales);\n};\n\nRelativeFormat.prototype._getMessage = function (units) {\n var messages = this._messages;\n\n // Create a new synthetic message based on the locale data from CLDR.\n if (!messages[units]) {\n messages[units] = this._compileMessage(units);\n }\n\n return messages[units];\n};\n\nRelativeFormat.prototype._getRelativeUnits = function (diff, units) {\n var field = this._fields[units];\n\n if (field.relative) {\n return field.relative[diff];\n }\n};\n\nRelativeFormat.prototype._findFields = function (locale) {\n var localeData = RelativeFormat.__localeData__;\n var data = localeData[locale.toLowerCase()];\n\n // The locale data is de-duplicated, so we have to traverse the locale's\n // hierarchy until we find `fields` to return.\n while (data) {\n if (data.fields) {\n return data.fields;\n }\n\n data = data.parentLocale && localeData[data.parentLocale.toLowerCase()];\n }\n\n throw new Error(\n 'Locale data added to IntlRelativeFormat is missing `fields` for :' +\n locale\n );\n};\n\nRelativeFormat.prototype._format = function (date, options) {\n var now = options && options.now !== undefined ? options.now : dateNow();\n\n if (date === undefined) {\n date = now;\n }\n\n // Determine if the `date` and optional `now` values are valid, and throw a\n // similar error to what `Intl.DateTimeFormat#format()` would throw.\n if (!isFinite(now)) {\n throw new RangeError(\n 'The `now` option provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n if (!isFinite(date)) {\n throw new RangeError(\n 'The date value provided to IntlRelativeFormat#format() is not ' +\n 'in valid range.'\n );\n }\n\n var diffReport = diff(now, date);\n var units = this._options.units || this._selectUnits(diffReport);\n var diffInUnits = diffReport[units];\n\n if (this._options.style !== 'numeric') {\n var relativeUnits = this._getRelativeUnits(diffInUnits, units);\n if (relativeUnits) {\n return relativeUnits;\n }\n }\n\n return this._getMessage(units).format({\n '0' : Math.abs(diffInUnits),\n when: diffInUnits < 0 ? 'past' : 'future'\n });\n};\n\nRelativeFormat.prototype._isValidUnits = function (units) {\n if (!units || arrIndexOf.call(FIELDS, units) >= 0) {\n return true;\n }\n\n if (typeof units === 'string') {\n var suggestion = /s$/.test(units) && units.substr(0, units.length - 1);\n if (suggestion && arrIndexOf.call(FIELDS, suggestion) >= 0) {\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` ' +\n 'value, did you mean: ' + suggestion\n );\n }\n }\n\n throw new Error(\n '\"' + units + '\" is not a valid IntlRelativeFormat `units` value, it ' +\n 'must be one of: \"' + FIELDS.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._resolveLocale = function (locales) {\n if (typeof locales === 'string') {\n locales = [locales];\n }\n\n // Create a copy of the array so we can push on the default locale.\n locales = (locales || []).concat(RelativeFormat.defaultLocale);\n\n var localeData = RelativeFormat.__localeData__;\n var i, len, localeParts, data;\n\n // Using the set of locales + the default locale, we look for the first one\n // which that has been registered. When data does not exist for a locale, we\n // traverse its ancestors to find something that's been registered within\n // its hierarchy of locales. Since we lack the proper `parentLocale` data\n // here, we must take a naive approach to traversal.\n for (i = 0, len = locales.length; i < len; i += 1) {\n localeParts = locales[i].toLowerCase().split('-');\n\n while (localeParts.length) {\n data = localeData[localeParts.join('-')];\n if (data) {\n // Return the normalized locale string; e.g., we return \"en-US\",\n // instead of \"en-us\".\n return data.locale;\n }\n\n localeParts.pop();\n }\n }\n\n var defaultLocale = locales.pop();\n throw new Error(\n 'No locale data has been added to IntlRelativeFormat for: ' +\n locales.join(', ') + ', or the default locale: ' + defaultLocale\n );\n};\n\nRelativeFormat.prototype._resolveStyle = function (style) {\n // Default to \"best fit\" style.\n if (!style) {\n return STYLES[0];\n }\n\n if (arrIndexOf.call(STYLES, style) >= 0) {\n return style;\n }\n\n throw new Error(\n '\"' + style + '\" is not a valid IntlRelativeFormat `style` value, it ' +\n 'must be one of: \"' + STYLES.join('\", \"') + '\"'\n );\n};\n\nRelativeFormat.prototype._selectUnits = function (diffReport) {\n var i, l, units;\n var fields = FIELDS.filter(function(field) {\n return field.indexOf('-short') < 1;\n });\n\n for (i = 0, l = fields.length; i < l; i += 1) {\n units = fields[i];\n\n if (Math.abs(diffReport[units]) < RelativeFormat.thresholds[units]) {\n break;\n }\n }\n\n return units;\n};\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\n\nexport function addLocaleData(data = []) {\n let locales = Array.isArray(data) ? data : [data];\n\n locales.forEach(localeData => {\n if (localeData && localeData.locale) {\n IntlMessageFormat.__addLocaleData(localeData);\n IntlRelativeFormat.__addLocaleData(localeData);\n }\n });\n}\n\nexport function hasLocaleData(locale) {\n let localeParts = (locale || '').split('-');\n\n while (localeParts.length > 0) {\n if (hasIMFAndIRFLocaleData(localeParts.join('-'))) {\n return true;\n }\n\n localeParts.pop();\n }\n\n return false;\n}\n\nfunction hasIMFAndIRFLocaleData(locale) {\n let normalizedLocale = locale && locale.toLowerCase();\n\n return !!(\n IntlMessageFormat.__localeData__[normalizedLocale] &&\n IntlRelativeFormat.__localeData__[normalizedLocale]\n );\n}\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/*\nHTML escaping and shallow-equals implementations are the same as React's\n(on purpose.) Therefore, it has the following Copyright and Licensing:\n\nCopyright 2013-2014, Facebook, Inc.\nAll rights reserved.\n\nThis source code is licensed under the BSD-style license found in the LICENSE\nfile in the root directory of React's source tree.\n*/\n\nimport invariant from 'invariant';\nimport {intlConfigPropTypes} from './types';\n\nconst intlConfigPropNames = Object.keys(intlConfigPropTypes);\n\nconst ESCAPED_CHARS = {\n '&': '&',\n '>': '>',\n '<': '<',\n '\"': '"',\n \"'\": ''',\n};\n\nconst UNSAFE_CHARS_REGEX = /[&><\"']/g;\n\nexport function escape(str) {\n return ('' + str).replace(UNSAFE_CHARS_REGEX, match => ESCAPED_CHARS[match]);\n}\n\nexport function filterProps(props, whitelist, defaults = {}) {\n return whitelist.reduce((filtered, name) => {\n if (props.hasOwnProperty(name)) {\n filtered[name] = props[name];\n } else if (defaults.hasOwnProperty(name)) {\n filtered[name] = defaults[name];\n }\n\n return filtered;\n }, {});\n}\n\nexport function invariantIntlContext({intl} = {}) {\n invariant(\n intl,\n '[React Intl] Could not find required `intl` object. ' +\n '<IntlProvider> needs to exist in the component ancestry.'\n );\n}\n\nexport function shallowEquals(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (\n typeof objA !== 'object' ||\n objA === null ||\n typeof objB !== 'object' ||\n objB === null\n ) {\n return false;\n }\n\n let keysA = Object.keys(objA);\n let keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n let bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n for (let i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function shouldIntlComponentUpdate(\n {props, state, context = {}},\n nextProps,\n nextState,\n nextContext = {}\n) {\n const {intl = {}} = context;\n const {intl: nextIntl = {}} = nextContext;\n\n return (\n !shallowEquals(nextProps, props) ||\n !shallowEquals(nextState, state) ||\n !(\n nextIntl === intl ||\n shallowEquals(\n filterProps(nextIntl, intlConfigPropNames),\n filterProps(intl, intlConfigPropNames)\n )\n )\n );\n}\n\nexport function createError(message, exception) {\n const eMsg = exception ? `\\n${exception}` : '';\n return `[React Intl] ${message}${eMsg}`;\n}\n\nexport function defaultErrorHandler(error) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// Inspired by react-redux's `connect()` HOC factory function implementation:\n// https://github.com/rackt/react-redux\n\nimport React, {Component} from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport {intlShape} from './types';\nimport {invariantIntlContext} from './utils';\n\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n\nexport default function injectIntl(WrappedComponent, options = {}) {\n const {intlPropName = 'intl', withRef = false} = options;\n\n class InjectIntl extends Component {\n static displayName = `InjectIntl(${getDisplayName(WrappedComponent)})`;\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static WrappedComponent = WrappedComponent;\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n getWrappedInstance() {\n invariant(\n withRef,\n '[React Intl] To access the wrapped instance, ' +\n 'the `{withRef: true}` option must be set when calling: ' +\n '`injectIntl()`'\n );\n\n return this._wrappedInstance;\n }\n\n render() {\n return (\n <WrappedComponent\n {...this.props}\n {...{[intlPropName]: this.context.intl}}\n ref={withRef ? /* istanbul ignore next */ (ref => this._wrappedInstance = ref) : null}\n />\n );\n }\n }\n\n return hoistNonReactStatics(InjectIntl, WrappedComponent);\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\n// This is a \"hack\" until a proper `intl-pluralformat` package is created.\n\nimport IntlMessageFormat from 'intl-messageformat';\n\nfunction resolveLocale(locales) {\n // IntlMessageFormat#_resolveLocale() does not depend on `this`.\n return IntlMessageFormat.prototype._resolveLocale(locales);\n}\n\nfunction findPluralFunction(locale) {\n // IntlMessageFormat#_findPluralFunction() does not depend on `this`.\n return IntlMessageFormat.prototype._findPluralRuleFunction(locale);\n}\n\nexport default class IntlPluralFormat {\n constructor(locales, options = {}) {\n let useOrdinal = options.style === 'ordinal';\n let pluralFn = findPluralFunction(resolveLocale(locales));\n\n this.format = value => pluralFn(value, useOrdinal);\n }\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jshint esnext: true */\n\nimport {bind, objCreate} from './es5';\n\nexport default createFormatCache;\n\n// -----------------------------------------------------------------------------\n\nfunction createFormatCache(FormatConstructor) {\n var cache = objCreate(null);\n\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var cacheId = getCacheId(args);\n var format = cacheId && cache[cacheId];\n\n if (!format) {\n format = new (bind.apply(FormatConstructor, [null].concat(args)))();\n\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n\n return format;\n };\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction getCacheId(inputs) {\n // When JSON is not available in the runtime, we will not create a cache id.\n if (typeof JSON === 'undefined') { return; }\n\n var cacheId = [];\n\n var i, len, input;\n\n for (i = 0, len = inputs.length; i < len; i += 1) {\n input = inputs[i];\n\n if (input && typeof input === 'object') {\n cacheId.push(orderedProps(input));\n } else {\n cacheId.push(input);\n }\n }\n\n return JSON.stringify(cacheId);\n}\n\nfunction orderedProps(obj) {\n var props = [],\n keys = [];\n\n var key, i, len, prop;\n\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n\n var orderedKeys = keys.sort();\n\n for (i = 0, len = orderedKeys.length; i < len; i += 1) {\n key = orderedKeys[i];\n prop = {};\n\n prop[key] = obj[key];\n props[i] = prop;\n }\n\n return props;\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport invariant from 'invariant';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport {isValidElement} from 'react';\n\nimport {\n dateTimeFormatPropTypes,\n numberFormatPropTypes,\n relativeFormatPropTypes,\n pluralFormatPropTypes,\n} from './types';\n\nimport {createError, defaultErrorHandler, escape, filterProps} from './utils';\n\nconst DATE_TIME_FORMAT_OPTIONS = Object.keys(dateTimeFormatPropTypes);\nconst NUMBER_FORMAT_OPTIONS = Object.keys(numberFormatPropTypes);\nconst RELATIVE_FORMAT_OPTIONS = Object.keys(relativeFormatPropTypes);\nconst PLURAL_FORMAT_OPTIONS = Object.keys(pluralFormatPropTypes);\n\nconst RELATIVE_FORMAT_THRESHOLDS = {\n second: 60, // seconds to minute\n minute: 60, // minutes to hour\n hour: 24, // hours to day\n day: 30, // days to month\n month: 12, // months to year\n};\n\nfunction updateRelativeFormatThresholds(newThresholds) {\n const {thresholds} = IntlRelativeFormat;\n ({\n second: thresholds.second,\n minute: thresholds.minute,\n hour: thresholds.hour,\n day: thresholds.day,\n month: thresholds.month,\n 'second-short': thresholds['second-short'],\n 'minute-short': thresholds['minute-short'],\n 'hour-short': thresholds['hour-short'],\n 'day-short': thresholds['day-short'],\n 'month-short': thresholds['month-short'],\n } = newThresholds);\n}\n\nfunction getNamedFormat(formats, type, name, onError) {\n let format = formats && formats[type] && formats[type][name];\n if (format) {\n return format;\n }\n\n onError(createError(`No ${type} format named: ${name}`));\n}\n\nexport function formatDate(config, state, value, options = {}) {\n const {locale, formats, timeZone} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let defaults = {\n ...(timeZone && {timeZone}),\n ...(format && getNamedFormat(formats, 'date', format, onError)),\n };\n let filteredOptions = filterProps(\n options,\n DATE_TIME_FORMAT_OPTIONS,\n defaults\n );\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting date.', e));\n }\n\n return String(date);\n}\n\nexport function formatTime(config, state, value, options = {}) {\n const {locale, formats, timeZone} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let defaults = {\n ...(timeZone && {timeZone}),\n ...(format && getNamedFormat(formats, 'time', format, onError)),\n };\n let filteredOptions = filterProps(\n options,\n DATE_TIME_FORMAT_OPTIONS,\n defaults\n );\n\n if (\n !filteredOptions.hour &&\n !filteredOptions.minute &&\n !filteredOptions.second\n ) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = {...filteredOptions, hour: 'numeric', minute: 'numeric'};\n }\n\n try {\n return state.getDateTimeFormat(locale, filteredOptions).format(date);\n } catch (e) {\n onError(createError('Error formatting time.', e));\n }\n\n return String(date);\n}\n\nexport function formatRelative(config, state, value, options = {}) {\n const {locale, formats} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let date = new Date(value);\n let now = new Date(options.now);\n let defaults = format && getNamedFormat(formats, 'relative', format, onError);\n let filteredOptions = filterProps(options, RELATIVE_FORMAT_OPTIONS, defaults);\n\n // Capture the current threshold values, then temporarily override them with\n // specific values just for this render.\n const oldThresholds = {...IntlRelativeFormat.thresholds};\n updateRelativeFormatThresholds(RELATIVE_FORMAT_THRESHOLDS);\n\n try {\n return state.getRelativeFormat(locale, filteredOptions).format(date, {\n now: isFinite(now) ? now : state.now(),\n });\n } catch (e) {\n onError(createError('Error formatting relative time.', e));\n } finally {\n updateRelativeFormatThresholds(oldThresholds);\n }\n\n return String(date);\n}\n\nexport function formatNumber(config, state, value, options = {}) {\n const {locale, formats} = config;\n const {format} = options;\n\n let onError = config.onError || defaultErrorHandler;\n let defaults = format && getNamedFormat(formats, 'number', format, onError);\n let filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n\n try {\n return state.getNumberFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting number.', e));\n }\n\n return String(value);\n}\n\nexport function formatPlural(config, state, value, options = {}) {\n const {locale} = config;\n\n let filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n let onError = config.onError || defaultErrorHandler;\n\n try {\n return state.getPluralFormat(locale, filteredOptions).format(value);\n } catch (e) {\n onError(createError('Error formatting plural.', e));\n }\n\n return 'other';\n}\n\nexport function formatMessage(\n config,\n state,\n messageDescriptor = {},\n values = {}\n) {\n const {locale, formats, messages, defaultLocale, defaultFormats} = config;\n\n const {id, defaultMessage} = messageDescriptor;\n\n // Produce a better error if the user calls `intl.formatMessage(element)`\n if (process.env.NODE_ENV !== 'production') {\n invariant(!isValidElement(config), '[React Intl] Don\\'t pass React elements to ' +\n 'formatMessage(), pass `.props`.');\n }\n\n // `id` is a required field of a Message Descriptor.\n invariant(id, '[React Intl] An `id` must be provided to format a message.');\n\n const message = messages && messages[id];\n const hasValues = Object.keys(values).length > 0;\n\n // Avoid expensive message formatting for simple messages without values. In\n // development messages will always be formatted in case of missing values.\n if (!hasValues && process.env.NODE_ENV === 'production') {\n return message || defaultMessage || id;\n }\n\n let formattedMessage;\n let onError = config.onError || defaultErrorHandler;\n\n if (message) {\n try {\n let formatter = state.getMessageFormat(message, locale, formats);\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(\n createError(\n `Error formatting message: \"${id}\" for locale: \"${locale}\"` +\n (defaultMessage ? ', using default message as fallback.' : ''),\n e\n )\n );\n }\n } else {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale, and a default message is in the source.\n if (\n !defaultMessage ||\n (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())\n ) {\n onError(\n createError(\n `Missing message: \"${id}\" for locale: \"${locale}\"` +\n (defaultMessage ? ', using default message as fallback.' : '')\n )\n );\n }\n }\n\n if (!formattedMessage && defaultMessage) {\n try {\n let formatter = state.getMessageFormat(\n defaultMessage,\n defaultLocale,\n defaultFormats\n );\n\n formattedMessage = formatter.format(values);\n } catch (e) {\n onError(\n createError(`Error formatting the default message for: \"${id}\"`, e)\n );\n }\n }\n\n if (!formattedMessage) {\n onError(\n createError(\n `Cannot format message: \"${id}\", ` +\n `using message ${message || defaultMessage\n ? 'source'\n : 'id'} as fallback.`\n )\n );\n }\n\n return formattedMessage || message || defaultMessage || id;\n}\n\nexport function formatHTMLMessage(\n config,\n state,\n messageDescriptor,\n rawValues = {}\n) {\n // Process all the values before they are used when formatting the ICU\n // Message string. Since the formatted message might be injected via\n // `innerHTML`, all String-based values need to be HTML-escaped.\n let escapedValues = Object.keys(rawValues).reduce((escaped, name) => {\n let value = rawValues[name];\n escaped[name] = typeof value === 'string' ? escape(value) : value;\n return escaped;\n }, {});\n\n return formatMessage(config, state, messageDescriptor, escapedValues);\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, relativeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nconst SECOND = 1000;\nconst MINUTE = 1000 * 60;\nconst HOUR = 1000 * 60 * 60;\nconst DAY = 1000 * 60 * 60 * 24;\n\n// The maximum timer delay value is a 32-bit signed integer.\n// See: https://mdn.io/setTimeout\nconst MAX_TIMER_DELAY = 2147483647;\n\nfunction selectUnits(delta) {\n let absDelta = Math.abs(delta);\n\n if (absDelta < MINUTE) {\n return 'second';\n }\n\n if (absDelta < HOUR) {\n return 'minute';\n }\n\n if (absDelta < DAY) {\n return 'hour';\n }\n\n // The maximum scheduled delay will be measured in days since the maximum\n // timer delay is less than the number of milliseconds in 25 days.\n return 'day';\n}\n\nfunction getUnitDelay(units) {\n switch (units) {\n case 'second':\n return SECOND;\n case 'minute':\n return MINUTE;\n case 'hour':\n return HOUR;\n case 'day':\n return DAY;\n default:\n return MAX_TIMER_DELAY;\n }\n}\n\nfunction isSameDate(a, b) {\n if (a === b) {\n return true;\n }\n\n let aTime = new Date(a).getTime();\n let bTime = new Date(b).getTime();\n\n return isFinite(aTime) && isFinite(bTime) && aTime === bTime;\n}\n\nexport default class FormattedRelative extends Component {\n static displayName = 'FormattedRelative';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...relativeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n updateInterval: PropTypes.number,\n initialNow: PropTypes.any,\n children: PropTypes.func,\n };\n\n static defaultProps = {\n updateInterval: 1000 * 10,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n\n let now = isFinite(props.initialNow)\n ? Number(props.initialNow)\n : context.intl.now();\n\n // `now` is stored as state so that `render()` remains a function of\n // props + state, instead of accessing `Date.now()` inside `render()`.\n this.state = {now};\n }\n\n scheduleNextUpdate(props, state) {\n // Cancel and pending update because we're scheduling a new update.\n clearTimeout(this._timer);\n\n const {value, units, updateInterval} = props;\n const time = new Date(value).getTime();\n\n // If the `updateInterval` is falsy, including `0` or we don't have a\n // valid date, then auto updates have been turned off, so we bail and\n // skip scheduling an update.\n if (!updateInterval || !isFinite(time)) {\n return;\n }\n\n const delta = time - state.now;\n const unitDelay = getUnitDelay(units || selectUnits(delta));\n const unitRemainder = Math.abs(delta % unitDelay);\n\n // We want the largest possible timer delay which will still display\n // accurate information while reducing unnecessary re-renders. The delay\n // should be until the next \"interesting\" moment, like a tick from\n // \"1 minute ago\" to \"2 minutes ago\" when the delta is 120,000ms.\n const delay =\n delta < 0\n ? Math.max(updateInterval, unitDelay - unitRemainder)\n : Math.max(updateInterval, unitRemainder);\n\n this._timer = setTimeout(() => {\n this.setState({now: this.context.intl.now()});\n }, delay);\n }\n\n componentDidMount() {\n this.scheduleNextUpdate(this.props, this.state);\n }\n\n componentWillReceiveProps({value: nextValue}) {\n // When the `props.value` date changes, `state.now` needs to be updated,\n // and the next update can be rescheduled.\n if (!isSameDate(nextValue, this.props.value)) {\n this.setState({now: this.context.intl.now()});\n }\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n componentWillUpdate(nextProps, nextState) {\n this.scheduleNextUpdate(nextProps, nextState);\n }\n\n componentWillUnmount() {\n clearTimeout(this._timer);\n }\n\n render() {\n const {formatRelative, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedRelative = formatRelative(value, {\n ...this.props,\n ...this.state,\n });\n\n if (typeof children === 'function') {\n return children(formattedRelative);\n }\n\n return <Text>{formattedRelative}</Text>;\n }\n}\n","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}}}};\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\nimport {hop} from './utils';\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexport {defineProperty, objCreate};\n","export default (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function(elements) {\n return {\n type : 'messageFormatPattern',\n elements: elements\n };\n },\n peg$c2 = peg$FAILED,\n peg$c3 = function(text) {\n var string = '',\n i, j, outerLen, inner, innerLen;\n\n for (i = 0, outerLen = text.length; i < outerLen; i += 1) {\n inner = text[i];\n\n for (j = 0, innerLen = inner.length; j < innerLen; j += 1) {\n string += inner[j];\n }\n }\n\n return string;\n },\n peg$c4 = function(messageText) {\n return {\n type : 'messageTextElement',\n value: messageText\n };\n },\n peg$c5 = /^[^ \\t\\n\\r,.+={}#]/,\n peg$c6 = { type: \"class\", value: \"[^ \\\\t\\\\n\\\\r,.+={}#]\", description: \"[^ \\\\t\\\\n\\\\r,.+={}#]\" },\n peg$c7 = \"{\",\n peg$c8 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c9 = null,\n peg$c10 = \",\",\n peg$c11 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c12 = \"}\",\n peg$c13 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c14 = function(id, format) {\n return {\n type : 'argumentElement',\n id : id,\n format: format && format[2]\n };\n },\n peg$c15 = \"number\",\n peg$c16 = { type: \"literal\", value: \"number\", description: \"\\\"number\\\"\" },\n peg$c17 = \"date\",\n peg$c18 = { type: \"literal\", value: \"date\", description: \"\\\"date\\\"\" },\n peg$c19 = \"time\",\n peg$c20 = { type: \"literal\", value: \"time\", description: \"\\\"time\\\"\" },\n peg$c21 = function(type, style) {\n return {\n type : type + 'Format',\n style: style && style[2]\n };\n },\n peg$c22 = \"plural\",\n peg$c23 = { type: \"literal\", value: \"plural\", description: \"\\\"plural\\\"\" },\n peg$c24 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: false,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options\n };\n },\n peg$c25 = \"selectordinal\",\n peg$c26 = { type: \"literal\", value: \"selectordinal\", description: \"\\\"selectordinal\\\"\" },\n peg$c27 = function(pluralStyle) {\n return {\n type : pluralStyle.type,\n ordinal: true,\n offset : pluralStyle.offset || 0,\n options: pluralStyle.options\n }\n },\n peg$c28 = \"select\",\n peg$c29 = { type: \"literal\", value: \"select\", description: \"\\\"select\\\"\" },\n peg$c30 = function(options) {\n return {\n type : 'selectFormat',\n options: options\n };\n },\n peg$c31 = \"=\",\n peg$c32 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c33 = function(selector, pattern) {\n return {\n type : 'optionalFormatPattern',\n selector: selector,\n value : pattern\n };\n },\n peg$c34 = \"offset:\",\n peg$c35 = { type: \"literal\", value: \"offset:\", description: \"\\\"offset:\\\"\" },\n peg$c36 = function(number) {\n return number;\n },\n peg$c37 = function(offset, options) {\n return {\n type : 'pluralFormat',\n offset : offset,\n options: options\n };\n },\n peg$c38 = { type: \"other\", description: \"whitespace\" },\n peg$c39 = /^[ \\t\\n\\r]/,\n peg$c40 = { type: \"class\", value: \"[ \\\\t\\\\n\\\\r]\", description: \"[ \\\\t\\\\n\\\\r]\" },\n peg$c41 = { type: \"other\", description: \"optionalWhitespace\" },\n peg$c42 = /^[0-9]/,\n peg$c43 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c44 = /^[0-9a-f]/i,\n peg$c45 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c46 = \"0\",\n peg$c47 = { type: \"literal\", value: \"0\", description: \"\\\"0\\\"\" },\n peg$c48 = /^[1-9]/,\n peg$c49 = { type: \"class\", value: \"[1-9]\", description: \"[1-9]\" },\n peg$c50 = function(digits) {\n return parseInt(digits, 10);\n },\n peg$c51 = /^[^{}\\\\\\0-\\x1F \\t\\n\\r]/,\n peg$c52 = { type: \"class\", value: \"[^{}\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\", description: \"[^{}\\\\\\\\\\\\0-\\\\x1F \\\\t\\\\n\\\\r]\" },\n peg$c53 = \"\\\\\\\\\",\n peg$c54 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c55 = function() { return '\\\\'; },\n peg$c56 = \"\\\\#\",\n peg$c57 = { type: \"literal\", value: \"\\\\#\", description: \"\\\"\\\\\\\\#\\\"\" },\n peg$c58 = function() { return '\\\\#'; },\n peg$c59 = \"\\\\{\",\n peg$c60 = { type: \"literal\", value: \"\\\\{\", description: \"\\\"\\\\\\\\{\\\"\" },\n peg$c61 = function() { return '\\u007B'; },\n peg$c62 = \"\\\\}\",\n peg$c63 = { type: \"literal\", value: \"\\\\}\", description: \"\\\"\\\\\\\\}\\\"\" },\n peg$c64 = function() { return '\\u007D'; },\n peg$c65 = \"\\\\u\",\n peg$c66 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n peg$c67 = function(digits) {\n return String.fromCharCode(parseInt(digits, 16));\n },\n peg$c68 = function(chars) { return chars.join(''); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0;\n\n s0 = peg$parsemessageFormatPattern();\n\n return s0;\n }\n\n function peg$parsemessageFormatPattern() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsemessageFormatElement();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsemessageFormatElement();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsemessageFormatElement() {\n var s0;\n\n s0 = peg$parsemessageTextElement();\n if (s0 === peg$FAILED) {\n s0 = peg$parseargumentElement();\n }\n\n return s0;\n }\n\n function peg$parsemessageText() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsechars();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c3(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsews();\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsemessageTextElement() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsemessageText();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c4(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2;\n\n s0 = peg$parsenumber();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c5.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseargumentElement() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseargument();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s6 = peg$c10;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseelementFormat();\n if (s8 !== peg$FAILED) {\n s6 = [s6, s7, s8];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c2;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c9;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s7 = peg$c12;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c14(s3, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseelementFormat() {\n var s0;\n\n s0 = peg$parsesimpleFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepluralFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectOrdinalFormat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselectFormat();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsesimpleFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c15) {\n s1 = peg$c15;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c17) {\n s1 = peg$c17;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c18); }\n }\n if (s1 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c19) {\n s1 = peg$c19;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c10;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsechars();\n if (s6 !== peg$FAILED) {\n s4 = [s4, s5, s6];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c9;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c22) {\n s1 = peg$c22;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselectOrdinalFormat() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 13) === peg$c25) {\n s1 = peg$c25;\n peg$currPos += 13;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepluralStyle();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselectFormat() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c28) {\n s1 = peg$c28;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s3 = peg$c10;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseoptionalFormatPattern();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseoptionalFormatPattern();\n }\n } else {\n s5 = peg$c2;\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseselector() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c31;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsechars();\n }\n\n return s0;\n }\n\n function peg$parseoptionalFormatPattern() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseselector();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 123) {\n s4 = peg$c7;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsemessageFormatPattern();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s8 = peg$c12;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s8 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c34) {\n s1 = peg$c34;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsenumber();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c36(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsepluralStyle() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseoffset();\n if (s1 === peg$FAILED) {\n s1 = peg$c9;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseoptionalFormatPattern();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseoptionalFormatPattern();\n }\n } else {\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n return s0;\n }\n\n function peg$parsews() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = [];\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n }\n } else {\n s0 = peg$c2;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsews();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsews();\n }\n if (s1 !== peg$FAILED) {\n s1 = input.substring(s0, peg$currPos);\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n\n return s0;\n }\n\n function peg$parsedigit() {\n var s0;\n\n if (peg$c42.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n\n return s0;\n }\n\n function peg$parsehexDigit() {\n var s0;\n\n if (peg$c44.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 48) {\n s1 = peg$c46;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c47); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (peg$c48.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsedigit();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsedigit();\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c53) {\n s1 = peg$c53;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c55();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c56) {\n s1 = peg$c56;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c58();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c59) {\n s1 = peg$c59;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c64();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c65) {\n s1 = peg$c65;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$currPos;\n s4 = peg$parsehexDigit();\n if (s4 !== peg$FAILED) {\n s5 = peg$parsehexDigit();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsehexDigit();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsehexDigit();\n if (s7 !== peg$FAILED) {\n s4 = [s4, s5, s6, s7];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c67(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsechars() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"}};\n","/* jslint esnext: true */\n\nimport IntlMessageFormat from './core';\nimport defaultLocale from './en';\n\nIntlMessageFormat.__addLocaleData(defaultLocale);\nIntlMessageFormat.defaultLocale = 'en';\n\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nvar arrIndexOf = Array.prototype.indexOf || function (search, fromIndex) {\n /*jshint validthis:true */\n var arr = this;\n if (!arr.length) {\n return -1;\n }\n\n for (var i = fromIndex || 0, max = arr.length; i < max; i++) {\n if (arr[i] === search) {\n return i;\n }\n }\n\n return -1;\n};\n\nvar isArray = Array.isArray || function (obj) {\n return toString.call(obj) === '[object Array]';\n};\n\nvar dateNow = Date.now || function () {\n return new Date().getTime();\n};\n\nexport {defineProperty, objCreate, arrIndexOf, isArray, dateNow};\n","// GENERATED FILE\nexport default {\"locale\":\"en\",\"pluralRuleFunction\":function (n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}}};\n","/* jslint esnext: true */\n\nimport IntlRelativeFormat from './core';\nimport defaultLocale from './en';\n\nIntlRelativeFormat.__addLocaleData(defaultLocale);\nIntlRelativeFormat.defaultLocale = 'en';\n\nexport default IntlRelativeFormat;\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport PropTypes from 'prop-types';\n\nconst {\n bool,\n number,\n string,\n func,\n object,\n oneOf,\n shape,\n any,\n oneOfType,\n} = PropTypes;\nconst localeMatcher = oneOf(['best fit', 'lookup']);\nconst narrowShortLong = oneOf(['narrow', 'short', 'long']);\nconst numeric2digit = oneOf(['numeric', '2-digit']);\nconst funcReq = func.isRequired;\n\nexport const intlConfigPropTypes = {\n locale: string,\n timeZone: string,\n formats: object,\n messages: object,\n textComponent: any,\n\n defaultLocale: string,\n defaultFormats: object,\n\n onError: func,\n};\n\nexport const intlFormatPropTypes = {\n formatDate: funcReq,\n formatTime: funcReq,\n formatRelative: funcReq,\n formatNumber: funcReq,\n formatPlural: funcReq,\n formatMessage: funcReq,\n formatHTMLMessage: funcReq,\n};\n\nexport const intlShape = shape({\n ...intlConfigPropTypes,\n ...intlFormatPropTypes,\n formatters: object,\n now: funcReq,\n});\n\nexport const messageDescriptorPropTypes = {\n id: string.isRequired,\n description: oneOfType([string, object]),\n defaultMessage: string,\n};\n\nexport const dateTimeFormatPropTypes = {\n localeMatcher,\n formatMatcher: oneOf(['basic', 'best fit']),\n\n timeZone: string,\n hour12: bool,\n\n weekday: narrowShortLong,\n era: narrowShortLong,\n year: numeric2digit,\n month: oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: numeric2digit,\n hour: numeric2digit,\n minute: numeric2digit,\n second: numeric2digit,\n timeZoneName: oneOf(['short', 'long']),\n};\n\nexport const numberFormatPropTypes = {\n localeMatcher,\n\n style: oneOf(['decimal', 'currency', 'percent']),\n currency: string,\n currencyDisplay: oneOf(['symbol', 'code', 'name']),\n useGrouping: bool,\n\n minimumIntegerDigits: number,\n minimumFractionDigits: number,\n maximumFractionDigits: number,\n minimumSignificantDigits: number,\n maximumSignificantDigits: number,\n};\n\nexport const relativeFormatPropTypes = {\n style: oneOf(['best fit', 'numeric']),\n units: oneOf([\n 'second',\n 'minute',\n 'hour',\n 'day',\n 'month',\n 'year',\n 'second-short',\n 'minute-short',\n 'hour-short',\n 'day-short',\n 'month-short',\n 'year-short',\n ]),\n};\n\nexport const pluralFormatPropTypes = {\n style: oneOf(['cardinal', 'ordinal']),\n};\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n/* jslint esnext: true */\n\n// Function.prototype.bind implementation from Mozilla Developer Network:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill\n\nvar bind = Function.prototype.bind || function (oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n};\n\n// Purposely using the same implementation as the Intl.js `Intl` polyfill.\n// Copyright 2013 Andy Earnshaw, MIT License\n\nvar hop = Object.prototype.hasOwnProperty;\n\nvar realDefineProp = (function () {\n try { return !!Object.defineProperty({}, 'a', {}); }\n catch (e) { return false; }\n})();\n\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\nvar defineProperty = realDefineProp ? Object.defineProperty :\n function (obj, name, desc) {\n\n if ('get' in desc && obj.__defineGetter__) {\n obj.__defineGetter__(name, desc.get);\n } else if (!hop.call(obj, name) || 'value' in desc) {\n obj[name] = desc.value;\n }\n};\n\nvar objCreate = Object.create || function (proto, props) {\n var obj, k;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (k in props) {\n if (hop.call(props, k)) {\n defineProperty(obj, k, props[k]);\n }\n }\n\n return obj;\n};\n\nexport {bind, defineProperty, objCreate};\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport {Component, Children} from 'react';\nimport PropTypes from 'prop-types';\nimport IntlMessageFormat from 'intl-messageformat';\nimport IntlRelativeFormat from 'intl-relativeformat';\nimport IntlPluralFormat from '../plural';\nimport memoizeIntlConstructor from 'intl-format-cache';\nimport invariant from 'invariant';\nimport {\n createError,\n defaultErrorHandler,\n shouldIntlComponentUpdate,\n filterProps,\n} from '../utils';\nimport {intlConfigPropTypes, intlFormatPropTypes, intlShape} from '../types';\nimport * as format from '../format';\nimport {hasLocaleData} from '../locale-data-registry';\n\nconst intlConfigPropNames = Object.keys(intlConfigPropTypes);\nconst intlFormatPropNames = Object.keys(intlFormatPropTypes);\n\n// These are not a static property on the `IntlProvider` class so the intl\n// config values can be inherited from an <IntlProvider> ancestor.\nconst defaultProps = {\n formats: {},\n messages: {},\n timeZone: null,\n textComponent: 'span',\n\n defaultLocale: 'en',\n defaultFormats: {},\n\n onError: defaultErrorHandler,\n};\n\nexport default class IntlProvider extends Component {\n static displayName = 'IntlProvider';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static childContextTypes = {\n intl: intlShape.isRequired,\n };\n\n static propTypes = {\n ...intlConfigPropTypes,\n children: PropTypes.element.isRequired,\n initialNow: PropTypes.any,\n };\n\n constructor(props, context = {}) {\n super(props, context);\n\n invariant(\n typeof Intl !== 'undefined',\n '[React Intl] The `Intl` APIs must be available in the runtime, ' +\n 'and do not appear to be built-in. An `Intl` polyfill should be loaded.\\n' +\n 'See: http://formatjs.io/guides/runtime-environments/'\n );\n\n const {intl: intlContext} = context;\n\n // Used to stabilize time when performing an initial rendering so that\n // all relative times use the same reference \"now\" time.\n let initialNow;\n if (isFinite(props.initialNow)) {\n initialNow = Number(props.initialNow);\n } else {\n // When an `initialNow` isn't provided via `props`, look to see an\n // <IntlProvider> exists in the ancestry and call its `now()`\n // function to propagate its value for \"now\".\n initialNow = intlContext ? intlContext.now() : Date.now();\n }\n\n // Creating `Intl*` formatters is expensive. If there's a parent\n // `<IntlProvider>`, then its formatters will be used. Otherwise, this\n // memoize the `Intl*` constructors and cache them for the lifecycle of\n // this IntlProvider instance.\n const {\n formatters = {\n getDateTimeFormat: memoizeIntlConstructor(Intl.DateTimeFormat),\n getNumberFormat: memoizeIntlConstructor(Intl.NumberFormat),\n getMessageFormat: memoizeIntlConstructor(IntlMessageFormat),\n getRelativeFormat: memoizeIntlConstructor(IntlRelativeFormat),\n getPluralFormat: memoizeIntlConstructor(IntlPluralFormat),\n },\n } =\n intlContext || {};\n\n this.state = {\n ...formatters,\n\n // Wrapper to provide stable \"now\" time for initial render.\n now: () => {\n return this._didDisplay ? Date.now() : initialNow;\n },\n };\n }\n\n getConfig() {\n const {intl: intlContext} = this.context;\n\n // Build a whitelisted config object from `props`, defaults, and\n // `context.intl`, if an <IntlProvider> exists in the ancestry.\n let config = filterProps(this.props, intlConfigPropNames, intlContext);\n\n // Apply default props. This must be applied last after the props have\n // been resolved and inherited from any <IntlProvider> in the ancestry.\n // This matches how React resolves `defaultProps`.\n for (let propName in defaultProps) {\n if (config[propName] === undefined) {\n config[propName] = defaultProps[propName];\n }\n }\n\n if (!hasLocaleData(config.locale)) {\n const {locale, defaultLocale, defaultFormats, onError} = config;\n\n onError(\n createError(\n `Missing locale data for locale: \"${locale}\". ` +\n `Using default locale: \"${defaultLocale}\" as fallback.`\n )\n );\n\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n config = {\n ...config,\n locale: defaultLocale,\n formats: defaultFormats,\n messages: defaultProps.messages,\n };\n }\n\n return config;\n }\n\n getBoundFormatFns(config, state) {\n return intlFormatPropNames.reduce((boundFormatFns, name) => {\n boundFormatFns[name] = format[name].bind(null, config, state);\n return boundFormatFns;\n }, {});\n }\n\n getChildContext() {\n const config = this.getConfig();\n\n // Bind intl factories and current config to the format functions.\n const boundFormatFns = this.getBoundFormatFns(config, this.state);\n\n const {now, ...formatters} = this.state;\n\n return {\n intl: {\n ...config,\n ...boundFormatFns,\n formatters,\n now,\n },\n };\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n componentDidMount() {\n this._didDisplay = true;\n }\n\n render() {\n return Children.only(this.props.children);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, dateTimeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedDate extends Component {\n static displayName = 'FormattedDate';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...dateTimeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatDate, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedDate = formatDate(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedDate);\n }\n\n return <Text>{formattedDate}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, dateTimeFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedTime extends Component {\n static displayName = 'FormattedTime';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...dateTimeFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatTime, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedTime = formatTime(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedTime);\n }\n\n return <Text>{formattedTime}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, numberFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedNumber extends Component {\n static displayName = 'FormattedNumber';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...numberFormatPropTypes,\n value: PropTypes.any.isRequired,\n format: PropTypes.string,\n children: PropTypes.func,\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatNumber, textComponent: Text} = this.context.intl;\n const {value, children} = this.props;\n\n let formattedNumber = formatNumber(value, this.props);\n\n if (typeof children === 'function') {\n return children(formattedNumber);\n }\n\n return <Text>{formattedNumber}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, pluralFormatPropTypes} from '../types';\nimport {invariantIntlContext, shouldIntlComponentUpdate} from '../utils';\n\nexport default class FormattedPlural extends Component {\n static displayName = 'FormattedPlural';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...pluralFormatPropTypes,\n value: PropTypes.any.isRequired,\n\n other: PropTypes.node.isRequired,\n zero: PropTypes.node,\n one: PropTypes.node,\n two: PropTypes.node,\n few: PropTypes.node,\n many: PropTypes.node,\n\n children: PropTypes.func,\n };\n\n static defaultProps = {\n style: 'cardinal',\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(...next) {\n return shouldIntlComponentUpdate(this, ...next);\n }\n\n render() {\n const {formatPlural, textComponent: Text} = this.context.intl;\n const {value, other, children} = this.props;\n\n let pluralCategory = formatPlural(value, this.props);\n let formattedPlural = this.props[pluralCategory] || other;\n\n if (typeof children === 'function') {\n return children(formattedPlural);\n }\n\n return <Text>{formattedPlural}</Text>;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport {Component, createElement, isValidElement} from 'react';\nimport PropTypes from 'prop-types';\nimport IntlMessageFormat from 'intl-messageformat';\nimport memoizeIntlConstructor from 'intl-format-cache';\nimport {intlShape, messageDescriptorPropTypes} from '../types';\nimport {\n invariantIntlContext,\n shallowEquals,\n shouldIntlComponentUpdate,\n} from '../utils';\nimport {formatMessage as baseFormatMessage} from '../format';\n\nconst defaultFormatMessage = (descriptor, values) => {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n '[React Intl] Could not find required `intl` object. <IntlProvider> needs to exist in the component ancestry. Using default message as fallback.'\n );\n }\n return baseFormatMessage(\n {},\n {getMessageFormat: memoizeIntlConstructor(IntlMessageFormat)},\n descriptor,\n values\n );\n};\n\nexport default class FormattedMessage extends Component {\n static displayName = 'FormattedMessage';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...messageDescriptorPropTypes,\n values: PropTypes.object,\n tagName: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n children: PropTypes.func,\n };\n\n static defaultProps = {\n values: {},\n };\n\n constructor(props, context) {\n super(props, context);\n if (!props.defaultMessage) {\n invariantIntlContext(context);\n }\n }\n\n shouldComponentUpdate(nextProps, ...next) {\n const {values} = this.props;\n const {values: nextValues} = nextProps;\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n let nextPropsToCheck = {\n ...nextProps,\n values,\n };\n\n return shouldIntlComponentUpdate(this, nextPropsToCheck, ...next);\n }\n\n render() {\n const {formatMessage = defaultFormatMessage, textComponent: Text = 'span'} =\n this.context.intl || {};\n\n const {\n id,\n description,\n defaultMessage,\n values,\n tagName: Component = Text,\n children,\n } = this.props;\n\n let tokenDelimiter;\n let tokenizedValues;\n let elements;\n\n let hasValues = values && Object.keys(values).length > 0;\n if (hasValues) {\n // Creates a token with a random UID that should not be guessable or\n // conflict with other parts of the `message` string.\n let uid = Math.floor(Math.random() * 0x10000000000).toString(16);\n\n let generateToken = (() => {\n let counter = 0;\n return () => `ELEMENT-${uid}-${(counter += 1)}`;\n })();\n\n // Splitting with a delimiter to support IE8. When using a regex\n // with a capture group IE8 does not include the capture group in\n // the resulting array.\n tokenDelimiter = `@__${uid}__@`;\n tokenizedValues = {};\n elements = {};\n\n // Iterates over the `props` to keep track of any React Element\n // values so they can be represented by the `token` as a placeholder\n // when the `message` is formatted. This allows the formatted\n // message to then be broken-up into parts with references to the\n // React Elements inserted back in.\n Object.keys(values).forEach(name => {\n let value = values[name];\n\n if (isValidElement(value)) {\n let token = generateToken();\n tokenizedValues[name] = tokenDelimiter + token + tokenDelimiter;\n elements[token] = value;\n } else {\n tokenizedValues[name] = value;\n }\n });\n }\n\n let descriptor = {id, description, defaultMessage};\n let formattedMessage = formatMessage(descriptor, tokenizedValues || values);\n\n let nodes;\n\n let hasElements = elements && Object.keys(elements).length > 0;\n if (hasElements) {\n // Split the message into parts so the React Element values captured\n // above can be inserted back into the rendered message. This\n // approach allows messages to render with React Elements while\n // keeping React's virtual diffing working properly.\n nodes = formattedMessage\n .split(tokenDelimiter)\n .filter(part => !!part)\n .map(part => elements[part] || part);\n } else {\n nodes = [formattedMessage];\n }\n\n if (typeof children === 'function') {\n return children(...nodes);\n }\n\n // Needs to use `createElement()` instead of JSX, otherwise React will\n // warn about a missing `key` prop with rich-text message formatting.\n return createElement(Component, null, ...nodes);\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {intlShape, messageDescriptorPropTypes} from '../types';\nimport {\n invariantIntlContext,\n shallowEquals,\n shouldIntlComponentUpdate,\n} from '../utils';\n\nexport default class FormattedHTMLMessage extends Component {\n static displayName = 'FormattedHTMLMessage';\n\n static contextTypes = {\n intl: intlShape,\n };\n\n static propTypes = {\n ...messageDescriptorPropTypes,\n values: PropTypes.object,\n tagName: PropTypes.string,\n children: PropTypes.func,\n };\n\n static defaultProps = {\n values: {},\n };\n\n constructor(props, context) {\n super(props, context);\n invariantIntlContext(context);\n }\n\n shouldComponentUpdate(nextProps, ...next) {\n const {values} = this.props;\n const {values: nextValues} = nextProps;\n\n if (!shallowEquals(nextValues, values)) {\n return true;\n }\n\n // Since `values` has already been checked, we know they're not\n // different, so the current `values` are carried over so the shallow\n // equals comparison on the other props isn't affected by the `values`.\n let nextPropsToCheck = {\n ...nextProps,\n values,\n };\n\n return shouldIntlComponentUpdate(this, nextPropsToCheck, ...next);\n }\n\n render() {\n const {formatHTMLMessage, textComponent: Text} = this.context.intl;\n\n const {\n id,\n description,\n defaultMessage,\n values: rawValues,\n tagName: Component = Text,\n children,\n } = this.props;\n\n let descriptor = {id, description, defaultMessage};\n let formattedHTMLMessage = formatHTMLMessage(descriptor, rawValues);\n\n if (typeof children === 'function') {\n return children(formattedHTMLMessage);\n }\n\n // Since the message presumably has HTML in it, we need to set\n // `innerHTML` in order for it to be rendered and not escaped by React.\n // To be safe, all string prop values were escaped when formatting the\n // message. It is assumed that the message is not UGC, and came from the\n // developer making it more like a template.\n //\n // Note: There's a perf impact of using this component since there's no\n // way for React to do its virtual DOM diffing.\n const html = {__html: formattedHTMLMessage};\n return <Component dangerouslySetInnerHTML={html} />;\n }\n}\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nimport defaultLocaleData from './en';\nimport {addLocaleData} from './locale-data-registry';\n\naddLocaleData(defaultLocaleData);\n\nexport {addLocaleData};\nexport {intlShape} from './types';\nexport {default as injectIntl} from './inject';\nexport {default as defineMessages} from './define-messages';\n\nexport {default as IntlProvider} from './components/provider';\nexport {default as FormattedDate} from './components/date';\nexport {default as FormattedTime} from './components/time';\nexport {default as FormattedRelative} from './components/relative';\nexport {default as FormattedNumber} from './components/number';\nexport {default as FormattedPlural} from './components/plural';\nexport {default as FormattedMessage} from './components/message';\nexport {default as FormattedHTMLMessage} from './components/html-message';\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\nexport default function defineMessages(messageDescriptors) {\n // This simply returns what's passed-in because it's meant to be a hook for\n // babel-plugin-react-intl.\n return messageDescriptors;\n}\n"],"names":["extend","obj","i","len","source","key","sources","Array","prototype","slice","call","arguments","length","hop","Compiler","locales","formats","pluralFn","StringFormat","id","PluralFormat","useOrdinal","offset","options","PluralOffsetString","numberFormat","string","SelectFormat","MessageFormat","message","ast","__parse","type","TypeError","this","_mergeFormats","value","_resolveLocale","_findPluralRuleFunction","_locale","pattern","_compilePattern","messageFormat","format","values","_format","e","variableId","Error","daysToYears","days","RelativeFormat","isArray","concat","_resolveStyle","style","_isValidUnits","units","_findFields","objCreate","relativeFormat","date","addLocaleData","data","forEach","localeData","locale","__addLocaleData","hasLocaleData","localeParts","split","hasIMFAndIRFLocaleData","join","pop","normalizedLocale","toLowerCase","IntlMessageFormat","__localeData__","IntlRelativeFormat","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","objectPrototype","inheritedComponent","getPrototypeOf","keys","getOwnPropertyNames","getOwnPropertySymbols","REACT_STATICS","KNOWN_STATICS","descriptor","getOwnPropertyDescriptor","escape","str","replace","UNSAFE_CHARS_REGEX","ESCAPED_CHARS","match","filterProps","props","whitelist","defaults","reduce","filtered","name","hasOwnProperty","invariantIntlContext","intl","shallowEquals","objA","objB","keysA","Object","keysB","bHasOwnProperty","bind","shouldIntlComponentUpdate","nextProps","nextState","state","context","nextContext","nextIntl","intlConfigPropNames","createError","exception","defaultErrorHandler","error","getDisplayName","Component","displayName","resolveLocale","findPluralFunction","createFormatCache","FormatConstructor","cache","args","cacheId","getCacheId","apply","inputs","JSON","input","push","orderedProps","stringify","prop","orderedKeys","sort","updateRelativeFormatThresholds","newThresholds","thresholds","second","minute","hour","day","month","getNamedFormat","onError","formatMessage","config","messageDescriptor","messages","defaultLocale","defaultFormats","defaultMessage","formattedMessage","getMessageFormat","selectUnits","delta","absDelta","Math","abs","MINUTE","HOUR","DAY","getUnitDelay","SECOND","MAX_TIMER_DELAY","isSameDate","a","b","aTime","Date","getTime","bTime","isFinite","pluralRuleFunction","n","ord","s","String","v0","t0","Number","n10","n100","fields","year","relative","0","1","-1","relativeTime","future","one","other","past","defineProperty","desc","__defineGetter__","get","create","proto","F","k","compile","pluralStack","currentPlural","pluralNumberFormat","compileMessage","element","elements","compileMessageText","compileArgument","test","Intl","NumberFormat","number","DateTimeFormat","time","compileOptions","ordinal","optionsHash","option","selector","getOption","SyntaxError","expected","found","line","column","child","parent","ctor","constructor","peg$computePosDetails","pos","peg$cachedPos","seenCR","details","startPos","endPos","p","ch","charAt","peg$cachedPosDetails","peg$fail","peg$currPos","peg$maxFailPos","peg$parsestart","peg$parsemessageFormatPattern","s1","s2","peg$parsemessageFormatElement","peg$FAILED","peg$c1","s0","peg$parsemessageTextElement","peg$parseargumentElement","peg$parsemessageText","s3","s4","s5","peg$parse_","peg$parsechars","peg$c2","peg$c3","peg$parsews","substring","peg$c4","peg$parseargument","peg$parsenumber","peg$c5","peg$silentFails","peg$c6","s6","s7","s8","charCodeAt","peg$c7","peg$c8","peg$c10","peg$c11","peg$parseelementFormat","peg$c9","peg$c12","peg$c13","peg$c14","peg$parsesimpleFormat","peg$parsepluralFormat","peg$parseselectOrdinalFormat","peg$parseselectFormat","substr","peg$c15","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","peg$c22","peg$c23","peg$parsepluralStyle","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$parseoptionalFormatPattern","peg$c30","peg$parseselector","peg$c31","peg$c32","peg$c33","peg$parseoffset","peg$c34","peg$c35","peg$c36","peg$c37","peg$c39","peg$c40","peg$c38","peg$c41","peg$parsedigit","peg$c42","peg$c43","peg$parsehexDigit","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","peg$parsechar","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$result","peg$startRuleFunctions","start","peg$startRuleFunction","text","j","outerLen","inner","innerLen","messageText","description","pluralStyle","digits","parseInt","fromCharCode","chars","peg$maxFailExpected","startRule","posDetails","splice","expectedDesc","foundDesc","expectedDescs","hex","toString","toUpperCase","parser","parse","undefined","resolvedOptions","parentLocale","part","err","result","mergedType","mergedFormats","round","from","to","millisecond","week","rawYears","arrIndexOf","indexOf","search","fromIndex","arr","max","dateNow","now","FIELDS","STYLES","second-short","minute-short","hour-short","day-short","month-short","_options","_compileMessage","_locales","_fields","_getMessage","_messages","_getRelativeUnits","diff","field","RangeError","diffReport","_selectUnits","diffInUnits","relativeUnits","suggestion","l","filter","year-short","bool","PropTypes","func","object","oneOf","shape","any","oneOfType","localeMatcher","narrowShortLong","numeric2digit","funcReq","isRequired","intlConfigPropTypes","intlFormatPropTypes","intlShape","dateTimeFormatPropTypes","numberFormatPropTypes","relativeFormatPropTypes","pluralFormatPropTypes","condition","c","d","f","argIndex","framesToPop","IntlPluralFormat","Function","oThis","aArgs","fToBind","fNOP","fBound","DATE_TIME_FORMAT_OPTIONS","NUMBER_FORMAT_OPTIONS","RELATIVE_FORMAT_OPTIONS","PLURAL_FORMAT_OPTIONS","RELATIVE_FORMAT_THRESHOLDS","timeZone","filteredOptions","getDateTimeFormat","oldThresholds","getRelativeFormat","getNumberFormat","getPluralFormat","rawValues","escaped","intlFormatPropNames","defaultProps","IntlProvider","intlContext","initialNow","formatters","memoizeIntlConstructor","_this","_didDisplay","propName","boundFormatFns","getConfig","getBoundFormatFns","next","Children","only","children","contextTypes","childContextTypes","FormattedDate","formatDate","Text","textComponent","formattedDate","React","FormattedTime","formatTime","formattedTime","FormattedRelative","_timer","updateInterval","unitDelay","unitRemainder","delay","setTimeout","setState","_this2","scheduleNextUpdate","formatRelative","formattedRelative","FormattedNumber","formatNumber","formattedNumber","FormattedPlural","formatPlural","pluralCategory","formattedPlural","defaultFormatMessage","baseFormatMessage","FormattedMessage","nextPropsToCheck","tagName","tokenDelimiter","tokenizedValues","uid","floor","random","generateToken","counter","isValidElement","token","nodes","map","createElement","FormattedHTMLMessage","formatHTMLMessage","formattedHTMLMessage","html","__html","dangerouslySetInnerHTML","defaultLocaleData","WrappedComponent","intlPropName","withRef","InjectIntl","_wrappedInstance","ref","messageDescriptors"],"mappings":"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"}
|