{"version":3,"sources":["webpack:///./node_modules/intl/lib/core.js","webpack:///./node_modules/intl/index.js"],"names":["REACT_ELEMENT_TYPE","_typeof","Symbol","iterator","obj","constructor","jsx","for","type","props","key","children","defaultProps","childrenLength","arguments","length","propName","childArray","Array","i","$$typeof","undefined","ref","_owner","createClass","defineProperties","target","descriptor","enumerable","configurable","writable","Object","defineProperty","Constructor","protoProps","staticProps","prototype","defineProperty$1","value","_extends","assign","source","hasOwnProperty","call","selfGlobal","global","self","slicedToArray","arr","isArray","_arr","_n","_d","_e","_s","_i","next","done","push","err","sliceIterator","TypeError","babelHelpers$1","freeze","asyncToGenerator","fn","gen","apply","this","Promise","resolve","reject","step","arg","info","error","then","classCallCheck","instance","defineEnumerableProperties","descs","desc","defaults","keys","getOwnPropertyNames","getOwnPropertyDescriptor","get","object","property","receiver","Function","parent","getPrototypeOf","getter","inherits","subClass","superClass","create","setPrototypeOf","__proto__","interopRequireDefault","__esModule","default","interopRequireWildcard","newObj","newArrowCheck","innerThis","boundThis","objectDestructuringEmpty","objectWithoutProperties","indexOf","possibleConstructorReturn","ReferenceError","set","setter","slicedToArrayLoose","_step","_iterator","taggedTemplateLiteral","strings","raw","taggedTemplateLiteralLoose","temporalRef","val","name","undef","temporalUndefined","toArray","from","toConsumableArray","arr2","typeof","extends","instanceof","left","right","hasInstance","realDefineProp","sentinel","a","e","es3","__defineGetter__","hop","arrIndexOf","search","t","max","objCreate","proto","F","k","arrSlice","slice","arrConcat","concat","arrPush","arrJoin","join","arrShift","shift","fnBind","bind","thisObj","args","internals","secret","Math","random","Record","List","createRegExpRestore","disableRegExpRestore","regExpCache","lastMatch","RegExp","leftContext","multiline","input","has","esc","lm","replace","reg","m","exprStr","match","expr","lastIndex","exec","toObject","toNumber","Number","toLength","len","number","isNaN","Infinity","floor","abs","toInteger","pow","min","getInternalProperties","__getInternalProperties","variant","extension","singleton","expBCP47Syntax","expVariantDupes","expSingletonDupes","expExtSequences","defaultLocale","redundantTags","tags","subtags","BU","DD","FX","TP","YD","ZR","heploc","iw","ji","jw","mo","ayx","bjd","ccq","cjr","cka","cmk","drh","drw","gav","hrr","ibi","kgh","lcq","mst","myt","sca","tie","tkk","tlw","tnf","ybd","yma","extLang","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","aed","aen","afb","afg","ajp","apc","apd","arb","arq","ars","ary","arz","ase","asf","asp","asq","asw","auz","avl","ayh","ayl","ayn","ayp","bbz","bfi","bfk","bjn","bog","bqn","bqy","btj","bve","bvl","bvu","bzs","cdo","cds","cjy","cmn","coa","cpx","csc","csd","cse","csf","csg","csl","csn","csq","csr","czh","czo","doq","dse","dsl","dup","ecs","esl","esn","eso","eth","fcs","fse","fsl","fss","gan","gds","gom","gse","gsg","gsm","gss","gus","hab","haf","hak","hds","hji","hks","hos","hps","hsh","hsl","hsn","icl","ils","inl","ins","ise","isg","isr","jak","jax","jcs","jhs","jls","jos","jsl","jus","kgi","knn","kvb","kvk","kvr","kxd","lbs","lce","lcf","liw","lls","lsg","lsl","lso","lsp","lst","lsy","ltg","lvs","lzh","mdl","meo","mfa","mfb","mfs","mnp","mqg","mre","msd","msi","msr","mui","mzc","mzg","mzy","nan","nbs","ncs","nsi","nsl","nsp","nsr","nzs","okl","orn","ors","pel","pga","pks","prl","prz","psc","psd","pse","psg","psl","pso","psp","psr","pys","rms","rsi","rsl","sdl","sfb","sfs","sgg","sgx","shu","slf","sls","sqk","sqs","ssh","ssp","ssr","svk","swc","swh","swl","syy","tmw","tse","tsm","tsq","tss","tsy","tza","ugn","ugy","ukl","uks","urk","uzn","uzs","vgt","vkk","vkt","vsi","vsl","vsv","wuu","xki","xml","xmm","xms","yds","ysl","yue","zib","zlm","zmi","zsl","zsm","toLatinUpperCase","str","ch","charAt","toUpperCase","IsStructurallyValidLanguageTag","locale","test","CanonicalizeLanguageTag","parts","toLowerCase","split","sort","_max","expCurrencyCode","expUnicodeExSeq","CanonicalizeLocaleList","locales","seen","O","Pk","String","kValue","tag","RangeError","BestAvailableLocale","availableLocales","candidate","pos","lastIndexOf","substring","LookupMatcher","requestedLocales","availableLocale","noExtensionsLocale","result","extensionIndex","ResolveLocale","options","relevantExtensionKeys","localeData","r","foundLocale","BestFitMatcher","extensionSubtags","extensionSubtagsLength","supportedExtension","keyLocaleData","supportedExtensionAddition","keyPos","requestedValue","optionsValue","privateIndex","preExtension","postExtension","LookupSupportedLocales","subset","SupportedLocales","matcher","localeMatcher","P","BestFitSupportedLocales","GetOption","values","fallback","Boolean","GetNumberOption","minimum","maximum","Intl","ll","currencyMinorUnits","BHD","BYR","XOF","BIF","XAF","CLF","CLP","KMF","DJF","XPF","GNF","ISK","IQD","JPY","JOD","KRW","KWD","LYD","OMR","PYG","RWF","TND","UGX","UYI","VUV","VND","NumberFormatConstructor","numberFormat","internal","regexpRestore","opt","NumberFormat","dataLocale","s","c","currency","normalized","cDigits","CurrencyDigits","cd","mnid","mnfd","mxfdDefault","mxfd","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","g","stylePatterns","patterns","positivePattern","negativePattern","format","GetFormatNumber","InitializeNumberFormat","bf","FormatNumber","PartitionNumberPattern","x","nums","data","ild","symbols","latn","pattern","beginIndex","endIndex","nextIndex","Error","literal","p","n","isFinite","_n2","ToRawPrecision","ToRawFixed","numSys","digits","digit","integer","fraction","decimalSepIndex","groupSepSymbol","group","groups","pgSize","primaryGroupSize","sgSize","secondaryGroupSize","end","idx","start","integerGroup","decimalSepSymbol","decimal","infinity","plusSignSymbol","plusSign","minusSignSymbol","minusSign","percentSignSymbol","percentSign","currencies","_literal","_literal2","minPrecision","maxPrecision","log10","round","log","LOG10E","log10Floor","f","exp","LN10","cut","minInteger","minFraction","maxFraction","toFixed","int","b","part","FormatNumberToParts","arab","arabext","bali","beng","deva","fullwide","gujr","guru","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","prop","expDTComponents","expPatternTrimmer","unwantedDTCs","dtKeys","tmKeys","isDateFormatOnly","isTimeFormatOnly","joinDateAndTimeFormats","dateFormatObj","timeFormatObj","o","_","j","computeFinalPatterns","formatObj","pattern12","extendedPattern","$0","expDTComponentsMeta","era","year","quarter","month","week","day","weekday","hour12","hour","minute","second","timeZoneName","createDateTimeFormat","skeleton","originalPattern","validSyntheticProps","numeric","narrow","short","long","dateWidths","resolveDateString","ca","component","width","gregory","alts","resolved","DateTimeFormatConstructor","dateTimeFormat","ToDateTimeOptions","DateTimeFormat","tz","timeZone","dateTimeComponents","bestFormat","dataLocaleData","formats","toString","availableFormats","timeFormats","dateFormats","computed","timeRelatedFormats","dateRelatedFormats","full","medium","createDateTimeFormats","ToDateTimeFormats","bestScore","score","optionsProp","formatProp","optionsPropIndex","formatPropIndex","delta","BasicFormatMatcher","_hr","optionsPropNames","_bestFormat","propValue","_ref2","generateSyntheticFormat","_property","patternProp","BestFitFormatMatcher","_prop","hr12","hourNo0","GetFormatDateTime","InitializeDateTimeFormat","required","opt2","needDefaults","date","Date","now","FormatDateTime","CreateDateTimeParts","d","nf","useGrouping","nf2","minimumIntegerDigits","tm","index","calendars","fv","v","substr","FormatToPartsDateTime","ls","__localeSensitiveProtos","toLocaleString","toLocaleDateString","toLocaleTimeString","nu","setDefaultLocale","addLocaleData","module","exports","IntlPolyfill","__applyLocaleSensitivePrototypes"],"mappings":"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MACLC,IAAK,MACLC,IAAK,MACLC,IAAK,OAETC,QAAS,CACLC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbzO,IAAK,CAAC,MAAO,MACb0O,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbvL,IAAK,CAAC,MAAO,MACbwL,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,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","file":"38.7c289df8de9c1376cade.chunk.js","sourcesContent":["'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n\nvar jsx = function () {\n var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7;\n return function createRawReactElement(type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {};\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n };\n}();\n\nvar asyncToGenerator = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step(\"next\", value);\n }, function (err) {\n return step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineEnumerableProperties = function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n return obj;\n};\n\nvar defaults = function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n};\n\nvar defineProperty$1 = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar _instanceof = function (left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n};\n\nvar interopRequireDefault = function (obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n};\n\nvar interopRequireWildcard = function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n};\n\nvar newArrowCheck = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};\n\nvar objectDestructuringEmpty = function (obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar selfGlobal = typeof global === \"undefined\" ? self : global;\n\nvar set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar slicedToArrayLoose = function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n};\n\nvar taggedTemplateLiteral = function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n};\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\nvar temporalRef = function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n } else {\n return val;\n }\n};\n\nvar temporalUndefined = {};\n\nvar toArray = function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n\n\nvar babelHelpers$1 = Object.freeze({\n jsx: jsx,\n asyncToGenerator: asyncToGenerator,\n classCallCheck: classCallCheck,\n createClass: createClass,\n defineEnumerableProperties: defineEnumerableProperties,\n defaults: defaults,\n defineProperty: defineProperty$1,\n get: get,\n inherits: inherits,\n interopRequireDefault: interopRequireDefault,\n interopRequireWildcard: interopRequireWildcard,\n newArrowCheck: newArrowCheck,\n objectDestructuringEmpty: objectDestructuringEmpty,\n objectWithoutProperties: objectWithoutProperties,\n possibleConstructorReturn: possibleConstructorReturn,\n selfGlobal: selfGlobal,\n set: set,\n slicedToArray: slicedToArray,\n slicedToArrayLoose: slicedToArrayLoose,\n taggedTemplateLiteral: taggedTemplateLiteral,\n taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,\n temporalRef: temporalRef,\n temporalUndefined: temporalUndefined,\n toArray: toArray,\n toConsumableArray: toConsumableArray,\n typeof: _typeof,\n extends: _extends,\n instanceof: _instanceof\n});\n\nvar realDefineProp = function () {\n var sentinel = function sentinel() {};\n try {\n Object.defineProperty(sentinel, 'a', {\n get: function get() {\n return 1;\n }\n });\n Object.defineProperty(sentinel, 'prototype', { writable: false });\n return sentinel.a === 1 && sentinel.prototype instanceof Object;\n } catch (e) {\n return false;\n }\n}();\n\n// Need a workaround for getters in ES3\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\n// We use this a lot (and need it for proto-less objects)\nvar hop = Object.prototype.hasOwnProperty;\n\n// Naive defineProperty for compatibility\nvar defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value;\n};\n\n// Array.prototype.indexOf, as good as we need it to be\nvar arrIndexOf = Array.prototype.indexOf || function (search) {\n /*jshint validthis:true */\n var t = this;\n if (!t.length) return -1;\n\n for (var i = arguments[1] || 0, max = t.length; i < max; i++) {\n if (t[i] === search) return i;\n }\n\n return -1;\n};\n\n// Create an object with the specified prototype (2nd arg required for Record)\nvar objCreate = Object.create || function (proto, props) {\n var obj = void 0;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (var k in props) {\n if (hop.call(props, k)) defineProperty(obj, k, props[k]);\n }\n\n return obj;\n};\n\n// Snapshot some (hopefully still) native built-ins\nvar arrSlice = Array.prototype.slice;\nvar arrConcat = Array.prototype.concat;\nvar arrPush = Array.prototype.push;\nvar arrJoin = Array.prototype.join;\nvar arrShift = Array.prototype.shift;\n\n// Naive Function.prototype.bind for compatibility\nvar fnBind = Function.prototype.bind || function (thisObj) {\n var fn = this,\n args = arrSlice.call(arguments, 1);\n\n // All our (presently) bound functions have either 1 or 0 arguments. By returning\n // different function signatures, we can pass some tests in ES3 environments\n if (fn.length === 1) {\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n }\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n};\n\n// Object housing internal properties for constructors\nvar internals = objCreate(null);\n\n// Keep internal properties internal\nvar secret = Math.random();\n\n// Helper functions\n// ================\n\n/**\n * A function to deal with the inaccuracy of calculating log10 in pre-ES6\n * JavaScript environments. Math.log(num) / Math.LN10 was responsible for\n * causing issue #62.\n */\nfunction log10Floor(n) {\n // ES6 provides the more accurate Math.log10\n if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n));\n\n var x = Math.round(Math.log(n) * Math.LOG10E);\n return x - (Number('1e' + x) > n);\n}\n\n/**\n * A map that doesn't contain Object in its prototype chain\n */\nfunction Record(obj) {\n // Copy only own properties over unless this object is already a Record instance\n for (var k in obj) {\n if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true });\n }\n}\nRecord.prototype = objCreate(null);\n\n/**\n * An ordered list\n */\nfunction List() {\n defineProperty(this, 'length', { writable: true, value: 0 });\n\n if (arguments.length) arrPush.apply(this, arrSlice.call(arguments));\n}\nList.prototype = objCreate(null);\n\n/**\n * Constructs a regular expression to restore tainted RegExp properties\n */\nfunction createRegExpRestore() {\n if (internals.disableRegExpRestore) {\n return function () {/* no-op */};\n }\n\n var regExpCache = {\n lastMatch: RegExp.lastMatch || '',\n leftContext: RegExp.leftContext,\n multiline: RegExp.multiline,\n input: RegExp.input\n },\n has = false;\n\n // Create a snapshot of all the 'captured' properties\n for (var i = 1; i <= 9; i++) {\n has = (regExpCache['$' + i] = RegExp['$' + i]) || has;\n }return function () {\n // Now we've snapshotted some properties, escape the lastMatch string\n var esc = /[.?*+^$[\\]\\\\(){}|-]/g,\n lm = regExpCache.lastMatch.replace(esc, '\\\\$&'),\n reg = new List();\n\n // If any of the captured strings were non-empty, iterate over them all\n if (has) {\n for (var _i = 1; _i <= 9; _i++) {\n var m = regExpCache['$' + _i];\n\n // If it's empty, add an empty capturing group\n if (!m) lm = '()' + lm;\n\n // Else find the string in lm and escape & wrap it to capture it\n else {\n m = m.replace(esc, '\\\\$&');\n lm = lm.replace(m, '(' + m + ')');\n }\n\n // Push it to the reg and chop lm to make sure further groups come after\n arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1));\n lm = lm.slice(lm.indexOf('(') + 1);\n }\n }\n\n var exprStr = arrJoin.call(reg, '') + lm;\n\n // Shorten the regex by replacing each part of the expression with a match\n // for a string of that exact length. This is safe for the type of\n // expressions generated above, because the expression matches the whole\n // match string, so we know each group and each segment between capturing\n // groups can be matched by its length alone.\n exprStr = exprStr.replace(/(\\\\\\(|\\\\\\)|[^()])+/g, function (match) {\n return '[\\\\s\\\\S]{' + match.replace('\\\\', '').length + '}';\n });\n\n // Create the regular expression that will reconstruct the RegExp properties\n var expr = new RegExp(exprStr, regExpCache.multiline ? 'gm' : 'g');\n\n // Set the lastIndex of the generated expression to ensure that the match\n // is found in the correct index.\n expr.lastIndex = regExpCache.leftContext.length;\n\n expr.exec(regExpCache.input);\n };\n}\n\n/**\n * Mimics ES5's abstract ToObject() function\n */\nfunction toObject(arg) {\n if (arg === null) throw new TypeError('Cannot convert null or undefined to object');\n\n if ((typeof arg === 'undefined' ? 'undefined' : babelHelpers$1['typeof'](arg)) === 'object') return arg;\n return Object(arg);\n}\n\nfunction toNumber(arg) {\n if (typeof arg === 'number') return arg;\n return Number(arg);\n}\n\nfunction toInteger(arg) {\n var number = toNumber(arg);\n if (isNaN(number)) return 0;\n if (number === +0 || number === -0 || number === +Infinity || number === -Infinity) return number;\n if (number < 0) return Math.floor(Math.abs(number)) * -1;\n return Math.floor(Math.abs(number));\n}\n\nfunction toLength(arg) {\n var len = toInteger(arg);\n if (len <= 0) return 0;\n if (len === Infinity) return Math.pow(2, 53) - 1;\n return Math.min(len, Math.pow(2, 53) - 1);\n}\n\n/**\n * Returns \"internal\" properties for an object\n */\nfunction getInternalProperties(obj) {\n if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret);\n\n return objCreate(null);\n}\n\n/**\n* Defines regular expressions for various operations related to the BCP 47 syntax,\n* as defined at http://tools.ietf.org/html/bcp47#section-2.1\n*/\n\n// extlang = 3ALPHA ; selected ISO 639 codes\n// *2(\"-\" 3ALPHA) ; permanently reserved\nvar extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}';\n\n// language = 2*3ALPHA ; shortest ISO 639 code\n// [\"-\" extlang] ; sometimes followed by\n// ; extended language subtags\n// / 4ALPHA ; or reserved for future use\n// / 5*8ALPHA ; or registered language subtag\nvar language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})';\n\n// script = 4ALPHA ; ISO 15924 code\nvar script = '[a-z]{4}';\n\n// region = 2ALPHA ; ISO 3166-1 code\n// / 3DIGIT ; UN M.49 code\nvar region = '(?:[a-z]{2}|\\\\d{3})';\n\n// variant = 5*8alphanum ; registered variants\n// / (DIGIT 3alphanum)\nvar variant = '(?:[a-z0-9]{5,8}|\\\\d[a-z0-9]{3})';\n\n// ; Single alphanumerics\n// ; \"x\" reserved for private use\n// singleton = DIGIT ; 0 - 9\n// / %x41-57 ; A - W\n// / %x59-5A ; Y - Z\n// / %x61-77 ; a - w\n// / %x79-7A ; y - z\nvar singleton = '[0-9a-wy-z]';\n\n// extension = singleton 1*(\"-\" (2*8alphanum))\nvar extension = singleton + '(?:-[a-z0-9]{2,8})+';\n\n// privateuse = \"x\" 1*(\"-\" (1*8alphanum))\nvar privateuse = 'x(?:-[a-z0-9]{1,8})+';\n\n// irregular = \"en-GB-oed\" ; irregular tags do not match\n// / \"i-ami\" ; the 'langtag' production and\n// / \"i-bnn\" ; would not otherwise be\n// / \"i-default\" ; considered 'well-formed'\n// / \"i-enochian\" ; These tags are all valid,\n// / \"i-hak\" ; but most are deprecated\n// / \"i-klingon\" ; in favor of more modern\n// / \"i-lux\" ; subtags or subtag\n// / \"i-mingo\" ; combination\n// / \"i-navajo\"\n// / \"i-pwn\"\n// / \"i-tao\"\n// / \"i-tay\"\n// / \"i-tsu\"\n// / \"sgn-BE-FR\"\n// / \"sgn-BE-NL\"\n// / \"sgn-CH-DE\"\nvar irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))';\n\n// regular = \"art-lojban\" ; these tags match the 'langtag'\n// / \"cel-gaulish\" ; production, but their subtags\n// / \"no-bok\" ; are not extended language\n// / \"no-nyn\" ; or variant subtags: their meaning\n// / \"zh-guoyu\" ; is defined by their registration\n// / \"zh-hakka\" ; and all of these are deprecated\n// / \"zh-min\" ; in favor of a more modern\n// / \"zh-min-nan\" ; subtag or sequence of subtags\n// / \"zh-xiang\"\nvar regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))';\n\n// grandfathered = irregular ; non-redundant tags registered\n// / regular ; during the RFC 3066 era\nvar grandfathered = '(?:' + irregular + '|' + regular + ')';\n\n// langtag = language\n// [\"-\" script]\n// [\"-\" region]\n// *(\"-\" variant)\n// *(\"-\" extension)\n// [\"-\" privateuse]\nvar langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?';\n\n// Language-Tag = langtag ; normal language tags\n// / privateuse ; private use tag\n// / grandfathered ; grandfathered tags\nvar expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i');\n\n// Match duplicate variants in a language tag\nvar expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\\\w{4,8}-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match duplicate singletons in a language tag (except in private use)\nvar expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\\\w+-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match all extension sequences\nvar expExtSequences = RegExp('-' + extension, 'ig');\n\n// Default locale is the first-added locale data for us\nvar defaultLocale = void 0;\nfunction setDefaultLocale(locale) {\n defaultLocale = locale;\n}\n\n// IANA Subtag Registry redundant tag and subtag maps\nvar redundantTags = {\n tags: {\n \"art-lojban\": \"jbo\",\n \"i-ami\": \"ami\",\n \"i-bnn\": \"bnn\",\n \"i-hak\": \"hak\",\n \"i-klingon\": \"tlh\",\n \"i-lux\": \"lb\",\n \"i-navajo\": \"nv\",\n \"i-pwn\": \"pwn\",\n \"i-tao\": \"tao\",\n \"i-tay\": \"tay\",\n \"i-tsu\": \"tsu\",\n \"no-bok\": \"nb\",\n \"no-nyn\": \"nn\",\n \"sgn-BE-FR\": \"sfb\",\n \"sgn-BE-NL\": \"vgt\",\n \"sgn-CH-DE\": \"sgg\",\n \"zh-guoyu\": \"cmn\",\n \"zh-hakka\": \"hak\",\n \"zh-min-nan\": \"nan\",\n \"zh-xiang\": \"hsn\",\n \"sgn-BR\": \"bzs\",\n \"sgn-CO\": \"csn\",\n \"sgn-DE\": \"gsg\",\n \"sgn-DK\": \"dsl\",\n \"sgn-ES\": \"ssp\",\n \"sgn-FR\": \"fsl\",\n \"sgn-GB\": \"bfi\",\n \"sgn-GR\": \"gss\",\n \"sgn-IE\": \"isg\",\n \"sgn-IT\": \"ise\",\n \"sgn-JP\": \"jsl\",\n \"sgn-MX\": \"mfs\",\n \"sgn-NI\": \"ncs\",\n \"sgn-NL\": \"dse\",\n \"sgn-NO\": \"nsl\",\n \"sgn-PT\": \"psr\",\n \"sgn-SE\": \"swl\",\n \"sgn-US\": \"ase\",\n \"sgn-ZA\": \"sfs\",\n \"zh-cmn\": \"cmn\",\n \"zh-cmn-Hans\": \"cmn-Hans\",\n \"zh-cmn-Hant\": \"cmn-Hant\",\n \"zh-gan\": \"gan\",\n \"zh-wuu\": \"wuu\",\n \"zh-yue\": \"yue\"\n },\n subtags: {\n BU: \"MM\",\n DD: \"DE\",\n FX: \"FR\",\n TP: \"TL\",\n YD: \"YE\",\n ZR: \"CD\",\n heploc: \"alalc97\",\n 'in': \"id\",\n iw: \"he\",\n ji: \"yi\",\n jw: \"jv\",\n mo: \"ro\",\n ayx: \"nun\",\n bjd: \"drl\",\n ccq: \"rki\",\n cjr: \"mom\",\n cka: \"cmr\",\n cmk: \"xch\",\n drh: \"khk\",\n drw: \"prs\",\n gav: \"dev\",\n hrr: \"jal\",\n ibi: \"opa\",\n kgh: \"kml\",\n lcq: \"ppr\",\n mst: \"mry\",\n myt: \"mry\",\n sca: \"hle\",\n tie: \"ras\",\n tkk: \"twm\",\n tlw: \"weo\",\n tnf: \"prs\",\n ybd: \"rki\",\n yma: \"lrr\"\n },\n extLang: {\n aao: [\"aao\", \"ar\"],\n abh: [\"abh\", \"ar\"],\n abv: [\"abv\", \"ar\"],\n acm: [\"acm\", \"ar\"],\n acq: [\"acq\", \"ar\"],\n acw: [\"acw\", \"ar\"],\n acx: [\"acx\", \"ar\"],\n acy: [\"acy\", \"ar\"],\n adf: [\"adf\", \"ar\"],\n ads: [\"ads\", \"sgn\"],\n aeb: [\"aeb\", \"ar\"],\n aec: [\"aec\", \"ar\"],\n aed: [\"aed\", \"sgn\"],\n aen: [\"aen\", \"sgn\"],\n afb: [\"afb\", \"ar\"],\n afg: [\"afg\", \"sgn\"],\n ajp: [\"ajp\", \"ar\"],\n apc: [\"apc\", \"ar\"],\n apd: [\"apd\", \"ar\"],\n arb: [\"arb\", \"ar\"],\n arq: [\"arq\", \"ar\"],\n ars: [\"ars\", \"ar\"],\n ary: [\"ary\", \"ar\"],\n arz: [\"arz\", \"ar\"],\n ase: [\"ase\", \"sgn\"],\n asf: [\"asf\", \"sgn\"],\n asp: [\"asp\", \"sgn\"],\n asq: [\"asq\", \"sgn\"],\n asw: [\"asw\", \"sgn\"],\n auz: [\"auz\", \"ar\"],\n avl: [\"avl\", \"ar\"],\n ayh: [\"ayh\", \"ar\"],\n ayl: [\"ayl\", \"ar\"],\n ayn: [\"ayn\", \"ar\"],\n ayp: [\"ayp\", \"ar\"],\n bbz: [\"bbz\", \"ar\"],\n bfi: [\"bfi\", \"sgn\"],\n bfk: [\"bfk\", \"sgn\"],\n bjn: [\"bjn\", \"ms\"],\n bog: [\"bog\", \"sgn\"],\n bqn: [\"bqn\", \"sgn\"],\n bqy: [\"bqy\", \"sgn\"],\n btj: [\"btj\", \"ms\"],\n bve: [\"bve\", \"ms\"],\n bvl: [\"bvl\", \"sgn\"],\n bvu: [\"bvu\", \"ms\"],\n bzs: [\"bzs\", \"sgn\"],\n cdo: [\"cdo\", \"zh\"],\n cds: [\"cds\", \"sgn\"],\n cjy: [\"cjy\", \"zh\"],\n cmn: [\"cmn\", \"zh\"],\n coa: [\"coa\", \"ms\"],\n cpx: [\"cpx\", \"zh\"],\n csc: [\"csc\", \"sgn\"],\n csd: [\"csd\", \"sgn\"],\n cse: [\"cse\", \"sgn\"],\n csf: [\"csf\", \"sgn\"],\n csg: [\"csg\", \"sgn\"],\n csl: [\"csl\", \"sgn\"],\n csn: [\"csn\", \"sgn\"],\n csq: [\"csq\", \"sgn\"],\n csr: [\"csr\", \"sgn\"],\n czh: [\"czh\", \"zh\"],\n czo: [\"czo\", \"zh\"],\n doq: [\"doq\", \"sgn\"],\n dse: [\"dse\", \"sgn\"],\n dsl: [\"dsl\", \"sgn\"],\n dup: [\"dup\", \"ms\"],\n ecs: [\"ecs\", \"sgn\"],\n esl: [\"esl\", \"sgn\"],\n esn: [\"esn\", \"sgn\"],\n eso: [\"eso\", \"sgn\"],\n eth: [\"eth\", \"sgn\"],\n fcs: [\"fcs\", \"sgn\"],\n fse: [\"fse\", \"sgn\"],\n fsl: [\"fsl\", \"sgn\"],\n fss: [\"fss\", \"sgn\"],\n gan: [\"gan\", \"zh\"],\n gds: [\"gds\", \"sgn\"],\n gom: [\"gom\", \"kok\"],\n gse: [\"gse\", \"sgn\"],\n gsg: [\"gsg\", \"sgn\"],\n gsm: [\"gsm\", \"sgn\"],\n gss: [\"gss\", \"sgn\"],\n gus: [\"gus\", \"sgn\"],\n hab: [\"hab\", \"sgn\"],\n haf: [\"haf\", \"sgn\"],\n hak: [\"hak\", \"zh\"],\n hds: [\"hds\", \"sgn\"],\n hji: [\"hji\", \"ms\"],\n hks: [\"hks\", \"sgn\"],\n hos: [\"hos\", \"sgn\"],\n hps: [\"hps\", \"sgn\"],\n hsh: [\"hsh\", \"sgn\"],\n hsl: [\"hsl\", \"sgn\"],\n hsn: [\"hsn\", \"zh\"],\n icl: [\"icl\", \"sgn\"],\n ils: [\"ils\", \"sgn\"],\n inl: [\"inl\", \"sgn\"],\n ins: [\"ins\", \"sgn\"],\n ise: [\"ise\", \"sgn\"],\n isg: [\"isg\", \"sgn\"],\n isr: [\"isr\", \"sgn\"],\n jak: [\"jak\", \"ms\"],\n jax: [\"jax\", \"ms\"],\n jcs: [\"jcs\", \"sgn\"],\n jhs: [\"jhs\", \"sgn\"],\n jls: [\"jls\", \"sgn\"],\n jos: [\"jos\", \"sgn\"],\n jsl: [\"jsl\", \"sgn\"],\n jus: [\"jus\", \"sgn\"],\n kgi: [\"kgi\", \"sgn\"],\n knn: [\"knn\", \"kok\"],\n kvb: [\"kvb\", \"ms\"],\n kvk: [\"kvk\", \"sgn\"],\n kvr: [\"kvr\", \"ms\"],\n kxd: [\"kxd\", \"ms\"],\n lbs: [\"lbs\", \"sgn\"],\n lce: [\"lce\", \"ms\"],\n lcf: [\"lcf\", \"ms\"],\n liw: [\"liw\", \"ms\"],\n lls: [\"lls\", \"sgn\"],\n lsg: [\"lsg\", \"sgn\"],\n lsl: [\"lsl\", \"sgn\"],\n lso: [\"lso\", \"sgn\"],\n lsp: [\"lsp\", \"sgn\"],\n lst: [\"lst\", \"sgn\"],\n lsy: [\"lsy\", \"sgn\"],\n ltg: [\"ltg\", \"lv\"],\n lvs: [\"lvs\", \"lv\"],\n lzh: [\"lzh\", \"zh\"],\n max: [\"max\", \"ms\"],\n mdl: [\"mdl\", \"sgn\"],\n meo: [\"meo\", \"ms\"],\n mfa: [\"mfa\", \"ms\"],\n mfb: [\"mfb\", \"ms\"],\n mfs: [\"mfs\", \"sgn\"],\n min: [\"min\", \"ms\"],\n mnp: [\"mnp\", \"zh\"],\n mqg: [\"mqg\", \"ms\"],\n mre: [\"mre\", \"sgn\"],\n msd: [\"msd\", \"sgn\"],\n msi: [\"msi\", \"ms\"],\n msr: [\"msr\", \"sgn\"],\n mui: [\"mui\", \"ms\"],\n mzc: [\"mzc\", \"sgn\"],\n mzg: [\"mzg\", \"sgn\"],\n mzy: [\"mzy\", \"sgn\"],\n nan: [\"nan\", \"zh\"],\n nbs: [\"nbs\", \"sgn\"],\n ncs: [\"ncs\", \"sgn\"],\n nsi: [\"nsi\", \"sgn\"],\n nsl: [\"nsl\", \"sgn\"],\n nsp: [\"nsp\", \"sgn\"],\n nsr: [\"nsr\", \"sgn\"],\n nzs: [\"nzs\", \"sgn\"],\n okl: [\"okl\", \"sgn\"],\n orn: [\"orn\", \"ms\"],\n ors: [\"ors\", \"ms\"],\n pel: [\"pel\", \"ms\"],\n pga: [\"pga\", \"ar\"],\n pks: [\"pks\", \"sgn\"],\n prl: [\"prl\", \"sgn\"],\n prz: [\"prz\", \"sgn\"],\n psc: [\"psc\", \"sgn\"],\n psd: [\"psd\", \"sgn\"],\n pse: [\"pse\", \"ms\"],\n psg: [\"psg\", \"sgn\"],\n psl: [\"psl\", \"sgn\"],\n pso: [\"pso\", \"sgn\"],\n psp: [\"psp\", \"sgn\"],\n psr: [\"psr\", \"sgn\"],\n pys: [\"pys\", \"sgn\"],\n rms: [\"rms\", \"sgn\"],\n rsi: [\"rsi\", \"sgn\"],\n rsl: [\"rsl\", \"sgn\"],\n sdl: [\"sdl\", \"sgn\"],\n sfb: [\"sfb\", \"sgn\"],\n sfs: [\"sfs\", \"sgn\"],\n sgg: [\"sgg\", \"sgn\"],\n sgx: [\"sgx\", \"sgn\"],\n shu: [\"shu\", \"ar\"],\n slf: [\"slf\", \"sgn\"],\n sls: [\"sls\", \"sgn\"],\n sqk: [\"sqk\", \"sgn\"],\n sqs: [\"sqs\", \"sgn\"],\n ssh: [\"ssh\", \"ar\"],\n ssp: [\"ssp\", \"sgn\"],\n ssr: [\"ssr\", \"sgn\"],\n svk: [\"svk\", \"sgn\"],\n swc: [\"swc\", \"sw\"],\n swh: [\"swh\", \"sw\"],\n swl: [\"swl\", \"sgn\"],\n syy: [\"syy\", \"sgn\"],\n tmw: [\"tmw\", \"ms\"],\n tse: [\"tse\", \"sgn\"],\n tsm: [\"tsm\", \"sgn\"],\n tsq: [\"tsq\", \"sgn\"],\n tss: [\"tss\", \"sgn\"],\n tsy: [\"tsy\", \"sgn\"],\n tza: [\"tza\", \"sgn\"],\n ugn: [\"ugn\", \"sgn\"],\n ugy: [\"ugy\", \"sgn\"],\n ukl: [\"ukl\", \"sgn\"],\n uks: [\"uks\", \"sgn\"],\n urk: [\"urk\", \"ms\"],\n uzn: [\"uzn\", \"uz\"],\n uzs: [\"uzs\", \"uz\"],\n vgt: [\"vgt\", \"sgn\"],\n vkk: [\"vkk\", \"ms\"],\n vkt: [\"vkt\", \"ms\"],\n vsi: [\"vsi\", \"sgn\"],\n vsl: [\"vsl\", \"sgn\"],\n vsv: [\"vsv\", \"sgn\"],\n wuu: [\"wuu\", \"zh\"],\n xki: [\"xki\", \"sgn\"],\n xml: [\"xml\", \"sgn\"],\n xmm: [\"xmm\", \"ms\"],\n xms: [\"xms\", \"sgn\"],\n yds: [\"yds\", \"sgn\"],\n ysl: [\"ysl\", \"sgn\"],\n yue: [\"yue\", \"zh\"],\n zib: [\"zib\", \"sgn\"],\n zlm: [\"zlm\", \"ms\"],\n zmi: [\"zmi\", \"ms\"],\n zsl: [\"zsl\", \"sgn\"],\n zsm: [\"zsm\", \"ms\"]\n }\n};\n\n/**\n * Convert only a-z to uppercase as per section 6.1 of the spec\n */\nfunction toLatinUpperCase(str) {\n var i = str.length;\n\n while (i--) {\n var ch = str.charAt(i);\n\n if (ch >= \"a\" && ch <= \"z\") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1);\n }\n\n return str;\n}\n\n/**\n * The IsStructurallyValidLanguageTag abstract operation verifies that the locale\n * argument (which must be a String value)\n *\n * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section\n * 2.1, or successor,\n * - does not include duplicate variant subtags, and\n * - does not include duplicate singleton subtags.\n *\n * The abstract operation returns true if locale can be generated from the ABNF\n * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not\n * contain duplicate variant or singleton subtags (other than as a private use\n * subtag). It returns false otherwise. Terminal value characters in the grammar are\n * interpreted as the Unicode equivalents of the ASCII octet values given.\n */\nfunction /* 6.2.2 */IsStructurallyValidLanguageTag(locale) {\n // represents a well-formed BCP 47 language tag as specified in RFC 5646\n if (!expBCP47Syntax.test(locale)) return false;\n\n // does not include duplicate variant subtags, and\n if (expVariantDupes.test(locale)) return false;\n\n // does not include duplicate singleton subtags.\n if (expSingletonDupes.test(locale)) return false;\n\n return true;\n}\n\n/**\n * The CanonicalizeLanguageTag abstract operation returns the canonical and case-\n * regularized form of the locale argument (which must be a String value that is\n * a structurally valid BCP 47 language tag as verified by the\n * IsStructurallyValidLanguageTag abstract operation). It takes the steps\n * specified in RFC 5646 section 4.5, or successor, to bring the language tag\n * into canonical form, and to regularize the case of the subtags, but does not\n * take the steps to bring a language tag into “extlang form” and to reorder\n * variant subtags.\n\n * The specifications for extensions to BCP 47 language tags, such as RFC 6067,\n * may include canonicalization rules for the extension subtag sequences they\n * define that go beyond the canonicalization rules of RFC 5646 section 4.5.\n * Implementations are allowed, but not required, to apply these additional rules.\n */\nfunction /* 6.2.3 */CanonicalizeLanguageTag(locale) {\n var match = void 0,\n parts = void 0;\n\n // A language tag is in 'canonical form' when the tag is well-formed\n // according to the rules in Sections 2.1 and 2.2\n\n // Section 2.1 says all subtags use lowercase...\n locale = locale.toLowerCase();\n\n // ...with 2 exceptions: 'two-letter and four-letter subtags that neither\n // appear at the start of the tag nor occur after singletons. Such two-letter\n // subtags are all uppercase (as in the tags \"en-CA-x-ca\" or \"sgn-BE-FR\") and\n // four-letter subtags are titlecase (as in the tag \"az-Latn-x-latn\").\n parts = locale.split('-');\n for (var i = 1, max = parts.length; i < max; i++) {\n // Two-letter subtags are all uppercase\n if (parts[i].length === 2) parts[i] = parts[i].toUpperCase();\n\n // Four-letter subtags are titlecase\n else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1);\n\n // Is it a singleton?\n else if (parts[i].length === 1 && parts[i] !== 'x') break;\n }\n locale = arrJoin.call(parts, '-');\n\n // The steps laid out in RFC 5646 section 4.5 are as follows:\n\n // 1. Extension sequences are ordered into case-insensitive ASCII order\n // by singleton subtag.\n if ((match = locale.match(expExtSequences)) && match.length > 1) {\n // The built-in sort() sorts by ASCII order, so use that\n match.sort();\n\n // Replace all extensions with the joined, sorted array\n locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, ''));\n }\n\n // 2. Redundant or grandfathered tags are replaced by their 'Preferred-\n // Value', if there is one.\n if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale];\n\n // 3. Subtags are replaced by their 'Preferred-Value', if there is one.\n // For extlangs, the original primary language subtag is also\n // replaced if there is a primary language subtag in the 'Preferred-\n // Value'.\n parts = locale.split('-');\n\n for (var _i = 1, _max = parts.length; _i < _max; _i++) {\n if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) {\n parts[_i] = redundantTags.extLang[parts[_i]][0];\n\n // For extlang tags, the prefix needs to be removed if it is redundant\n if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) {\n parts = arrSlice.call(parts, _i++);\n _max -= 1;\n }\n }\n }\n\n return arrJoin.call(parts, '-');\n}\n\n/**\n * The DefaultLocale abstract operation returns a String value representing the\n * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the\n * host environment’s current locale.\n */\nfunction /* 6.2.4 */DefaultLocale() {\n return defaultLocale;\n}\n\n// Sect 6.3 Currency Codes\n// =======================\n\nvar expCurrencyCode = /^[A-Z]{3}$/;\n\n/**\n * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument\n * (after conversion to a String value) represents a well-formed 3-letter ISO currency\n * code. The following steps are taken:\n */\nfunction /* 6.3.1 */IsWellFormedCurrencyCode(currency) {\n // 1. Let `c` be ToString(currency)\n var c = String(currency);\n\n // 2. Let `normalized` be the result of mapping c to upper case as described\n // in 6.1.\n var normalized = toLatinUpperCase(c);\n\n // 3. If the string length of normalized is not 3, return false.\n // 4. If normalized contains any character that is not in the range \"A\" to \"Z\"\n // (U+0041 to U+005A), return false.\n if (expCurrencyCode.test(normalized) === false) return false;\n\n // 5. Return true\n return true;\n}\n\nvar expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below\n\nfunction /* 9.2.1 */CanonicalizeLocaleList(locales) {\n // The abstract operation CanonicalizeLocaleList takes the following steps:\n\n // 1. If locales is undefined, then a. Return a new empty List\n if (locales === undefined) return new List();\n\n // 2. Let seen be a new empty List.\n var seen = new List();\n\n // 3. If locales is a String value, then\n // a. Let locales be a new array created as if by the expression new\n // Array(locales) where Array is the standard built-in constructor with\n // that name and locales is the value of locales.\n locales = typeof locales === 'string' ? [locales] : locales;\n\n // 4. Let O be ToObject(locales).\n var O = toObject(locales);\n\n // 5. Let lenValue be the result of calling the [[Get]] internal method of\n // O with the argument \"length\".\n // 6. Let len be ToUint32(lenValue).\n var len = toLength(O.length);\n\n // 7. Let k be 0.\n var k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n var Pk = String(k);\n\n // b. Let kPresent be the result of calling the [[HasProperty]] internal\n // method of O with argument Pk.\n var kPresent = Pk in O;\n\n // c. If kPresent is true, then\n if (kPresent) {\n // i. Let kValue be the result of calling the [[Get]] internal\n // method of O with argument Pk.\n var kValue = O[Pk];\n\n // ii. If the type of kValue is not String or Object, then throw a\n // TypeError exception.\n if (kValue === null || typeof kValue !== 'string' && (typeof kValue === \"undefined\" ? \"undefined\" : babelHelpers$1[\"typeof\"](kValue)) !== 'object') throw new TypeError('String or Object type expected');\n\n // iii. Let tag be ToString(kValue).\n var tag = String(kValue);\n\n // iv. If the result of calling the abstract operation\n // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as\n // the argument, is false, then throw a RangeError exception.\n if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError(\"'\" + tag + \"' is not a structurally valid language tag\");\n\n // v. Let tag be the result of calling the abstract operation\n // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the\n // argument.\n tag = CanonicalizeLanguageTag(tag);\n\n // vi. If tag is not an element of seen, then append tag as the last\n // element of seen.\n if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag);\n }\n\n // d. Increase k by 1.\n k++;\n }\n\n // 9. Return seen.\n return seen;\n}\n\n/**\n * The BestAvailableLocale abstract operation compares the provided argument\n * locale, which must be a String value with a structurally valid and\n * canonicalized BCP 47 language tag, against the locales in availableLocales and\n * returns either the longest non-empty prefix of locale that is an element of\n * availableLocales, or undefined if there is no such element. It uses the\n * fallback mechanism of RFC 4647, section 3.4. The following steps are taken:\n */\nfunction /* 9.2.2 */BestAvailableLocale(availableLocales, locale) {\n // 1. Let candidate be locale\n var candidate = locale;\n\n // 2. Repeat\n while (candidate) {\n // a. If availableLocales contains an element equal to candidate, then return\n // candidate.\n if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate;\n\n // b. Let pos be the character index of the last occurrence of \"-\"\n // (U+002D) within candidate. If that character does not occur, return\n // undefined.\n var pos = candidate.lastIndexOf('-');\n\n if (pos < 0) return;\n\n // c. If pos ≥ 2 and the character \"-\" occurs at index pos-2 of candidate,\n // then decrease pos by 2.\n if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2;\n\n // d. Let candidate be the substring of candidate from position 0, inclusive,\n // to position pos, exclusive.\n candidate = candidate.substring(0, pos);\n }\n}\n\n/**\n * The LookupMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The following steps are taken:\n */\nfunction /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) {\n // 1. Let i be 0.\n var i = 0;\n\n // 2. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n\n // 3. Let availableLocale be undefined.\n var availableLocale = void 0;\n\n var locale = void 0,\n noExtensionsLocale = void 0;\n\n // 4. Repeat while i < len and availableLocale is undefined:\n while (i < len && !availableLocale) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position i.\n locale = requestedLocales[i];\n\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. Increase i by 1.\n i++;\n }\n\n // 5. Let result be a new Record.\n var result = new Record();\n\n // 6. If availableLocale is not undefined, then\n if (availableLocale !== undefined) {\n // a. Set result.[[locale]] to availableLocale.\n result['[[locale]]'] = availableLocale;\n\n // b. If locale and noExtensionsLocale are not the same String value, then\n if (String(locale) !== String(noExtensionsLocale)) {\n // i. Let extension be the String value consisting of the first\n // substring of locale that is a Unicode locale extension sequence.\n var extension = locale.match(expUnicodeExSeq)[0];\n\n // ii. Let extensionIndex be the character position of the initial\n // \"-\" of the first Unicode locale extension sequence within locale.\n var extensionIndex = locale.indexOf('-u-');\n\n // iii. Set result.[[extension]] to extension.\n result['[[extension]]'] = extension;\n\n // iv. Set result.[[extensionIndex]] to extensionIndex.\n result['[[extensionIndex]]'] = extensionIndex;\n }\n }\n // 7. Else\n else\n // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract\n // operation (defined in 6.2.4).\n result['[[locale]]'] = DefaultLocale();\n\n // 8. Return result\n return result;\n}\n\n/**\n * The BestFitMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The algorithm is implementation dependent, but should produce results\n * that a typical user of the requested locales would perceive as at least as\n * good as those produced by the LookupMatcher abstract operation. Options\n * specified through Unicode locale extension sequences must be ignored by the\n * algorithm. Information about such subsequences is returned separately.\n * The abstract operation returns a record with a [[locale]] field, whose value\n * is the language tag of the selected locale, which must be an element of\n * availableLocales. If the language tag of the request locale that led to the\n * selected locale contained a Unicode locale extension sequence, then the\n * returned record also contains an [[extension]] field whose value is the first\n * Unicode locale extension sequence, and an [[extensionIndex]] field whose value\n * is the index of the first Unicode locale extension sequence within the request\n * locale language tag.\n */\nfunction /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) {\n return LookupMatcher(availableLocales, requestedLocales);\n}\n\n/**\n * The ResolveLocale abstract operation compares a BCP 47 language priority list\n * requestedLocales against the locales in availableLocales and determines the\n * best available language to meet the request. availableLocales and\n * requestedLocales must be provided as List values, options as a Record.\n */\nfunction /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n if (availableLocales.length === 0) {\n throw new ReferenceError('No locale data has been provided for this object yet.');\n }\n\n // The following steps are taken:\n // 1. Let matcher be the value of options.[[localeMatcher]].\n var matcher = options['[[localeMatcher]]'];\n\n var r = void 0;\n\n // 2. If matcher is \"lookup\", then\n if (matcher === 'lookup')\n // a. Let r be the result of calling the LookupMatcher abstract operation\n // (defined in 9.2.3) with arguments availableLocales and\n // requestedLocales.\n r = LookupMatcher(availableLocales, requestedLocales);\n\n // 3. Else\n else\n // a. Let r be the result of calling the BestFitMatcher abstract\n // operation (defined in 9.2.4) with arguments availableLocales and\n // requestedLocales.\n r = BestFitMatcher(availableLocales, requestedLocales);\n\n // 4. Let foundLocale be the value of r.[[locale]].\n var foundLocale = r['[[locale]]'];\n\n var extensionSubtags = void 0,\n extensionSubtagsLength = void 0;\n\n // 5. If r has an [[extension]] field, then\n if (hop.call(r, '[[extension]]')) {\n // a. Let extension be the value of r.[[extension]].\n var extension = r['[[extension]]'];\n // b. Let split be the standard built-in function object defined in ES5,\n // 15.5.4.14.\n var split = String.prototype.split;\n // c. Let extensionSubtags be the result of calling the [[Call]] internal\n // method of split with extension as the this value and an argument\n // list containing the single item \"-\".\n extensionSubtags = split.call(extension, '-');\n // d. Let extensionSubtagsLength be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument \"length\".\n extensionSubtagsLength = extensionSubtags.length;\n }\n\n // 6. Let result be a new Record.\n var result = new Record();\n\n // 7. Set result.[[dataLocale]] to foundLocale.\n result['[[dataLocale]]'] = foundLocale;\n\n // 8. Let supportedExtension be \"-u\".\n var supportedExtension = '-u';\n // 9. Let i be 0.\n var i = 0;\n // 10. Let len be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument \"length\".\n var len = relevantExtensionKeys.length;\n\n // 11 Repeat while i < len:\n while (i < len) {\n // a. Let key be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument ToString(i).\n var key = relevantExtensionKeys[i];\n // b. Let foundLocaleData be the result of calling the [[Get]] internal\n // method of localeData with the argument foundLocale.\n var foundLocaleData = localeData[foundLocale];\n // c. Let keyLocaleData be the result of calling the [[Get]] internal\n // method of foundLocaleData with the argument key.\n var keyLocaleData = foundLocaleData[key];\n // d. Let value be the result of calling the [[Get]] internal method of\n // keyLocaleData with argument \"0\".\n var value = keyLocaleData['0'];\n // e. Let supportedExtensionAddition be \"\".\n var supportedExtensionAddition = '';\n // f. Let indexOf be the standard built-in function object defined in\n // ES5, 15.4.4.14.\n var indexOf = arrIndexOf;\n\n // g. If extensionSubtags is not undefined, then\n if (extensionSubtags !== undefined) {\n // i. Let keyPos be the result of calling the [[Call]] internal\n // method of indexOf with extensionSubtags as the this value and\n // an argument list containing the single item key.\n var keyPos = indexOf.call(extensionSubtags, key);\n\n // ii. If keyPos ≠ -1, then\n if (keyPos !== -1) {\n // 1. If keyPos + 1 < extensionSubtagsLength and the length of the\n // result of calling the [[Get]] internal method of\n // extensionSubtags with argument ToString(keyPos +1) is greater\n // than 2, then\n if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) {\n // a. Let requestedValue be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument\n // ToString(keyPos + 1).\n var requestedValue = extensionSubtags[keyPos + 1];\n // b. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the\n // this value and an argument list containing the single\n // item requestedValue.\n var valuePos = indexOf.call(keyLocaleData, requestedValue);\n\n // c. If valuePos ≠ -1, then\n if (valuePos !== -1) {\n // i. Let value be requestedValue.\n value = requestedValue,\n // ii. Let supportedExtensionAddition be the\n // concatenation of \"-\", key, \"-\", and value.\n supportedExtensionAddition = '-' + key + '-' + value;\n }\n }\n // 2. Else\n else {\n // a. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the this\n // value and an argument list containing the single item\n // \"true\".\n var _valuePos = indexOf(keyLocaleData, 'true');\n\n // b. If valuePos ≠ -1, then\n if (_valuePos !== -1)\n // i. Let value be \"true\".\n value = 'true';\n }\n }\n }\n // h. If options has a field [[]], then\n if (hop.call(options, '[[' + key + ']]')) {\n // i. Let optionsValue be the value of options.[[]].\n var optionsValue = options['[[' + key + ']]'];\n\n // ii. If the result of calling the [[Call]] internal method of indexOf\n // with keyLocaleData as the this value and an argument list\n // containing the single item optionsValue is not -1, then\n if (indexOf.call(keyLocaleData, optionsValue) !== -1) {\n // 1. If optionsValue is not equal to value, then\n if (optionsValue !== value) {\n // a. Let value be optionsValue.\n value = optionsValue;\n // b. Let supportedExtensionAddition be \"\".\n supportedExtensionAddition = '';\n }\n }\n }\n // i. Set result.[[]] to value.\n result['[[' + key + ']]'] = value;\n\n // j. Append supportedExtensionAddition to supportedExtension.\n supportedExtension += supportedExtensionAddition;\n\n // k. Increase i by 1.\n i++;\n }\n // 12. If the length of supportedExtension is greater than 2, then\n if (supportedExtension.length > 2) {\n // a.\n var privateIndex = foundLocale.indexOf(\"-x-\");\n // b.\n if (privateIndex === -1) {\n // i.\n foundLocale = foundLocale + supportedExtension;\n }\n // c.\n else {\n // i.\n var preExtension = foundLocale.substring(0, privateIndex);\n // ii.\n var postExtension = foundLocale.substring(privateIndex);\n // iii.\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n // d. asserting - skipping\n // e.\n foundLocale = CanonicalizeLanguageTag(foundLocale);\n }\n // 13. Set result.[[locale]] to foundLocale.\n result['[[locale]]'] = foundLocale;\n\n // 14. Return result.\n return result;\n}\n\n/**\n * The LookupSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the BCP 47 Lookup algorithm.\n * Locales appear in the same order in the returned list as in requestedLocales.\n * The following steps are taken:\n */\nfunction /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) {\n // 1. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n // 2. Let subset be a new empty List.\n var subset = new List();\n // 3. Let k be 0.\n var k = 0;\n\n // 4. Repeat while k < len\n while (k < len) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position k.\n var locale = requestedLocales[k];\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. If availableLocale is not undefined, then append locale to the end of\n // subset.\n if (availableLocale !== undefined) arrPush.call(subset, locale);\n\n // e. Increment k by 1.\n k++;\n }\n\n // 5. Let subsetArray be a new Array object whose elements are the same\n // values in the same order as the elements of subset.\n var subsetArray = arrSlice.call(subset);\n\n // 6. Return subsetArray.\n return subsetArray;\n}\n\n/**\n * The BestFitSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the Best Fit Matcher\n * algorithm. Locales appear in the same order in the returned list as in\n * requestedLocales. The steps taken are implementation dependent.\n */\nfunction /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) {\n // ###TODO: implement this function as described by the specification###\n return LookupSupportedLocales(availableLocales, requestedLocales);\n}\n\n/**\n * The SupportedLocales abstract operation returns the subset of the provided BCP\n * 47 language priority list requestedLocales for which availableLocales has a\n * matching locale. Two algorithms are available to match the locales: the Lookup\n * algorithm described in RFC 4647 section 3.4, and an implementation dependent\n * best-fit algorithm. Locales appear in the same order in the returned list as\n * in requestedLocales. The following steps are taken:\n */\nfunction /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) {\n var matcher = void 0,\n subset = void 0;\n\n // 1. If options is not undefined, then\n if (options !== undefined) {\n // a. Let options be ToObject(options).\n options = new Record(toObject(options));\n // b. Let matcher be the result of calling the [[Get]] internal method of\n // options with argument \"localeMatcher\".\n matcher = options.localeMatcher;\n\n // c. If matcher is not undefined, then\n if (matcher !== undefined) {\n // i. Let matcher be ToString(matcher).\n matcher = String(matcher);\n\n // ii. If matcher is not \"lookup\" or \"best fit\", then throw a RangeError\n // exception.\n if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be \"lookup\" or \"best fit\"');\n }\n }\n // 2. If matcher is undefined or \"best fit\", then\n if (matcher === undefined || matcher === 'best fit')\n // a. Let subset be the result of calling the BestFitSupportedLocales\n // abstract operation (defined in 9.2.7) with arguments\n // availableLocales and requestedLocales.\n subset = BestFitSupportedLocales(availableLocales, requestedLocales);\n // 3. Else\n else\n // a. Let subset be the result of calling the LookupSupportedLocales\n // abstract operation (defined in 9.2.6) with arguments\n // availableLocales and requestedLocales.\n subset = LookupSupportedLocales(availableLocales, requestedLocales);\n\n // 4. For each named own property name P of subset,\n for (var P in subset) {\n if (!hop.call(subset, P)) continue;\n\n // a. Let desc be the result of calling the [[GetOwnProperty]] internal\n // method of subset with P.\n // b. Set desc.[[Writable]] to false.\n // c. Set desc.[[Configurable]] to false.\n // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc,\n // and true as arguments.\n defineProperty(subset, P, {\n writable: false, configurable: false, value: subset[P]\n });\n }\n // \"Freeze\" the array so no new elements can be added\n defineProperty(subset, 'length', { writable: false });\n\n // 5. Return subset\n return subset;\n}\n\n/**\n * The GetOption abstract operation extracts the value of the property named\n * property from the provided options object, converts it to the required type,\n * checks whether it is one of a List of allowed values, and fills in a fallback\n * value if necessary.\n */\nfunction /*9.2.9 */GetOption(options, property, type, values, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Assert: type is \"boolean\" or \"string\".\n // b. If type is \"boolean\", then let value be ToBoolean(value).\n // c. If type is \"string\", then let value be ToString(value).\n value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value;\n\n // d. If values is not undefined, then\n if (values !== undefined) {\n // i. If values does not contain an element equal to value, then throw a\n // RangeError exception.\n if (arrIndexOf.call(values, value) === -1) throw new RangeError(\"'\" + value + \"' is not an allowed value for `\" + property + '`');\n }\n\n // e. Return value.\n return value;\n }\n // Else return fallback.\n return fallback;\n}\n\n/**\n * The GetNumberOption abstract operation extracts a property value from the\n * provided options object, converts it to a Number value, checks whether it is\n * in the allowed range, and fills in a fallback value if necessary.\n */\nfunction /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Let value be ToNumber(value).\n value = Number(value);\n\n // b. If value is NaN or less than minimum or greater than maximum, throw a\n // RangeError exception.\n if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range');\n\n // c. Return floor(value).\n return Math.floor(value);\n }\n // 3. Else return fallback.\n return fallback;\n}\n\n// 8 The Intl Object\nvar Intl = {};\n\n// 8.2 Function Properties of the Intl Object\n\n// 8.2.1\n// @spec[tc39/ecma402/master/spec/intl.html]\n// @clause[sec-intl.getcanonicallocales]\nfunction getCanonicalLocales(locales) {\n // 1. Let ll be ? CanonicalizeLocaleList(locales).\n var ll = CanonicalizeLocaleList(locales);\n // 2. Return CreateArrayFromList(ll).\n {\n var result = [];\n\n var len = ll.length;\n var k = 0;\n\n while (k < len) {\n result[k] = ll[k];\n k++;\n }\n return result;\n }\n}\n\nObject.defineProperty(Intl, 'getCanonicalLocales', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: getCanonicalLocales\n});\n\n// Currency minor units output from get-4217 grunt task, formatted\nvar currencyMinorUnits = {\n BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0,\n XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3,\n OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0\n};\n\n// Define the NumberFormat constructor internally so it cannot be tainted\nfunction NumberFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.NumberFormat(locales, options);\n }\n\n return InitializeNumberFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'NumberFormat', {\n configurable: true,\n writable: true,\n value: NumberFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(Intl.NumberFormat, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeNumberFormat accepts the arguments\n * numberFormat (which must be an object), locales, and options. It initializes\n * numberFormat as a NumberFormat object.\n */\nfunction /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(numberFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If numberFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(numberFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. If options is undefined, then\n if (options === undefined)\n // a. Let options be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in constructor\n // with that name.\n options = {};\n\n // 5. Else\n else\n // a. Let options be ToObject(options).\n options = toObject(options);\n\n // 6. Let opt be a new Record.\n var opt = new Record(),\n\n\n // 7. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with the arguments options, \"localeMatcher\", \"string\",\n // a List containing the two String values \"lookup\" and \"best fit\", and\n // \"best fit\".\n matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 8. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 9. Let NumberFormat be the standard built-in object that is the initial value\n // of Intl.NumberFormat.\n // 10. Let localeData be the value of the [[localeData]] internal property of\n // NumberFormat.\n var localeData = internals.NumberFormat['[[localeData]]'];\n\n // 11. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of NumberFormat, and localeData.\n var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 12. Set the [[locale]] internal property of numberFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 13. Set the [[numberingSystem]] internal property of numberFormat to the value\n // of r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let s be the result of calling the GetOption abstract operation with the\n // arguments options, \"style\", \"string\", a List containing the three String\n // values \"decimal\", \"percent\", and \"currency\", and \"decimal\".\n var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal');\n\n // 16. Set the [[style]] internal property of numberFormat to s.\n internal['[[style]]'] = s;\n\n // 17. Let c be the result of calling the GetOption abstract operation with the\n // arguments options, \"currency\", \"string\", undefined, and undefined.\n var c = GetOption(options, 'currency', 'string');\n\n // 18. If c is not undefined and the result of calling the\n // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with\n // argument c is false, then throw a RangeError exception.\n if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError(\"'\" + c + \"' is not a valid currency code\");\n\n // 19. If s is \"currency\" and c is undefined, throw a TypeError exception.\n if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency');\n\n var cDigits = void 0;\n\n // 20. If s is \"currency\", then\n if (s === 'currency') {\n // a. Let c be the result of converting c to upper case as specified in 6.1.\n c = c.toUpperCase();\n\n // b. Set the [[currency]] internal property of numberFormat to c.\n internal['[[currency]]'] = c;\n\n // c. Let cDigits be the result of calling the CurrencyDigits abstract\n // operation (defined below) with argument c.\n cDigits = CurrencyDigits(c);\n }\n\n // 21. Let cd be the result of calling the GetOption abstract operation with the\n // arguments options, \"currencyDisplay\", \"string\", a List containing the\n // three String values \"code\", \"symbol\", and \"name\", and \"symbol\".\n var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol');\n\n // 22. If s is \"currency\", then set the [[currencyDisplay]] internal property of\n // numberFormat to cd.\n if (s === 'currency') internal['[[currencyDisplay]]'] = cd;\n\n // 23. Let mnid be the result of calling the GetNumberOption abstract operation\n // (defined in 9.2.10) with arguments options, \"minimumIntegerDigits\", 1, 21,\n // and 1.\n var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1);\n\n // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid.\n internal['[[minimumIntegerDigits]]'] = mnid;\n\n // 25. If s is \"currency\", then let mnfdDefault be cDigits; else let mnfdDefault\n // be 0.\n var mnfdDefault = s === 'currency' ? cDigits : 0;\n\n // 26. Let mnfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"minimumFractionDigits\", 0, 20, and mnfdDefault.\n var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault);\n\n // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd.\n internal['[[minimumFractionDigits]]'] = mnfd;\n\n // 28. If s is \"currency\", then let mxfdDefault be max(mnfd, cDigits); else if s\n // is \"percent\", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault\n // be max(mnfd, 3).\n var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3);\n\n // 29. Let mxfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"maximumFractionDigits\", mnfd, 20, and mxfdDefault.\n var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault);\n\n // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd.\n internal['[[maximumFractionDigits]]'] = mxfd;\n\n // 31. Let mnsd be the result of calling the [[Get]] internal method of options\n // with argument \"minimumSignificantDigits\".\n var mnsd = options.minimumSignificantDigits;\n\n // 32. Let mxsd be the result of calling the [[Get]] internal method of options\n // with argument \"maximumSignificantDigits\".\n var mxsd = options.maximumSignificantDigits;\n\n // 33. If mnsd is not undefined or mxsd is not undefined, then:\n if (mnsd !== undefined || mxsd !== undefined) {\n // a. Let mnsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"minimumSignificantDigits\", 1, 21,\n // and 1.\n mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1);\n\n // b. Let mxsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"maximumSignificantDigits\", mnsd,\n // 21, and 21.\n mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21);\n\n // c. Set the [[minimumSignificantDigits]] internal property of numberFormat\n // to mnsd, and the [[maximumSignificantDigits]] internal property of\n // numberFormat to mxsd.\n internal['[[minimumSignificantDigits]]'] = mnsd;\n internal['[[maximumSignificantDigits]]'] = mxsd;\n }\n // 34. Let g be the result of calling the GetOption abstract operation with the\n // arguments options, \"useGrouping\", \"boolean\", undefined, and true.\n var g = GetOption(options, 'useGrouping', 'boolean', undefined, true);\n\n // 35. Set the [[useGrouping]] internal property of numberFormat to g.\n internal['[[useGrouping]]'] = g;\n\n // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 37. Let patterns be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"patterns\".\n var patterns = dataLocaleData.patterns;\n\n // 38. Assert: patterns is an object (see 11.2.3)\n\n // 39. Let stylePatterns be the result of calling the [[Get]] internal method of\n // patterns with argument s.\n var stylePatterns = patterns[s];\n\n // 40. Set the [[positivePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"positivePattern\".\n internal['[[positivePattern]]'] = stylePatterns.positivePattern;\n\n // 41. Set the [[negativePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"negativePattern\".\n internal['[[negativePattern]]'] = stylePatterns.negativePattern;\n\n // 42. Set the [[boundFormat]] internal property of numberFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to\n // true.\n internal['[[initializedNumberFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) numberFormat.format = GetFormatNumber.call(numberFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return numberFormat;\n}\n\nfunction CurrencyDigits(currency) {\n // When the CurrencyDigits abstract operation is called with an argument currency\n // (which must be an upper case String value), the following steps are taken:\n\n // 1. If the ISO 4217 currency and funds code list contains currency as an\n // alphabetic code, then return the minor unit value corresponding to the\n // currency from the list; else return 2.\n return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2;\n}\n\n/* 11.2.3 */internals.NumberFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.NumberFormat is called, the\n * following steps are taken:\n */\n/* 11.2.2 */\ndefineProperty(Intl.NumberFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * NumberFormat object.\n */\n/* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatNumber\n});\n\nfunction GetFormatNumber() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this NumberFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 1, that takes the argument value and\n // performs the following steps:\n var F = function F(value) {\n // i. If value is not provided, then let value be undefined.\n // ii. Let x be ToNumber(value).\n // iii. Return the result of calling the FormatNumber abstract\n // operation (defined below) with arguments this and x.\n return FormatNumber(this, /* x = */Number(value));\n };\n\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts() {\n var value = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.');\n\n var x = Number(value);\n return FormatNumberToParts(this, x);\n}\n\nObject.defineProperty(Intl.NumberFormat.prototype, 'formatToParts', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: formatToParts\n});\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumbertoparts]\n */\nfunction FormatNumberToParts(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be ArrayCreate(0).\n var result = [];\n // 3. Let n be 0.\n var n = 0;\n // 4. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Let O be ObjectCreate(%ObjectPrototype%).\n var O = {};\n // a. Perform ? CreateDataPropertyOrThrow(O, \"type\", part.[[type]]).\n O.type = part['[[type]]'];\n // a. Perform ? CreateDataPropertyOrThrow(O, \"value\", part.[[value]]).\n O.value = part['[[value]]'];\n // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O).\n result[n] = O;\n // a. Increment n by 1.\n n += 1;\n }\n // 5. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-partitionnumberpattern]\n */\nfunction PartitionNumberPattern(numberFormat, x) {\n\n var internal = getInternalProperties(numberFormat),\n locale = internal['[[dataLocale]]'],\n nums = internal['[[numberingSystem]]'],\n data = internals.NumberFormat['[[localeData]]'][locale],\n ild = data.symbols[nums] || data.symbols.latn,\n pattern = void 0;\n\n // 1. If x is not NaN and x < 0, then:\n if (!isNaN(x) && x < 0) {\n // a. Let x be -x.\n x = -x;\n // a. Let pattern be the value of numberFormat.[[negativePattern]].\n pattern = internal['[[negativePattern]]'];\n }\n // 2. Else,\n else {\n // a. Let pattern be the value of numberFormat.[[positivePattern]].\n pattern = internal['[[positivePattern]]'];\n }\n // 3. Let result be a new empty List.\n var result = new List();\n // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, \"{\", 0).\n var beginIndex = pattern.indexOf('{', 0);\n // 5. Let endIndex be 0.\n var endIndex = 0;\n // 6. Let nextIndex be 0.\n var nextIndex = 0;\n // 7. Let length be the number of code units in pattern.\n var length = pattern.length;\n // 8. Repeat while beginIndex is an integer index into pattern:\n while (beginIndex > -1 && beginIndex < length) {\n // a. Set endIndex to Call(%StringProto_indexOf%, pattern, \"}\", beginIndex)\n endIndex = pattern.indexOf('}', beginIndex);\n // a. If endIndex = -1, throw new Error exception.\n if (endIndex === -1) throw new Error();\n // a. If beginIndex is greater than nextIndex, then:\n if (beginIndex > nextIndex) {\n // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive.\n var literal = pattern.substring(nextIndex, beginIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal });\n }\n // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // a. If p is equal \"number\", then:\n if (p === \"number\") {\n // i. If x is NaN,\n if (isNaN(x)) {\n // 1. Let n be an ILD String value indicating the NaN value.\n var n = ild.nan;\n // 2. Add new part record { [[type]]: \"nan\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n });\n }\n // ii. Else if isFinite(x) is false,\n else if (!isFinite(x)) {\n // 1. Let n be an ILD String value indicating infinity.\n var _n = ild.infinity;\n // 2. Add new part record { [[type]]: \"infinity\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n });\n }\n // iii. Else,\n else {\n // 1. If the value of numberFormat.[[style]] is \"percent\" and isFinite(x), let x be 100 × x.\n if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100;\n\n var _n2 = void 0;\n // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then\n if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) {\n // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]).\n _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']);\n }\n // 3. Else,\n else {\n // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]).\n _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']);\n }\n // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the \"Numbering System\" column of Table 2 below, then\n if (numSys[nums]) {\n (function () {\n // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the \"Digits\" column of the matching row in Table 2.\n var digits = numSys[nums];\n // a. Replace each digit in n with the value of digits[digit].\n _n2 = String(_n2).replace(/\\d/g, function (digit) {\n return digits[digit];\n });\n })();\n }\n // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system.\n else _n2 = String(_n2); // ###TODO###\n\n var integer = void 0;\n var fraction = void 0;\n // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, \".\", 0).\n var decimalSepIndex = _n2.indexOf('.', 0);\n // 7. If decimalSepIndex > 0, then:\n if (decimalSepIndex > 0) {\n // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive.\n integer = _n2.substring(0, decimalSepIndex);\n // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n.\n fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length);\n }\n // 8. Else:\n else {\n // a. Let integer be n.\n integer = _n2;\n // a. Let fraction be undefined.\n fraction = undefined;\n }\n // 9. If the value of the numberFormat.[[useGrouping]] is true,\n if (internal['[[useGrouping]]'] === true) {\n // a. Let groupSepSymbol be the ILND String representing the grouping separator.\n var groupSepSymbol = ild.group;\n // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer.\n var groups = [];\n // ----> implementation:\n // Primary group represents the group closest to the decimal\n var pgSize = data.patterns.primaryGroupSize || 3;\n // Secondary group is every other group\n var sgSize = data.patterns.secondaryGroupSize || pgSize;\n // Group only if necessary\n if (integer.length > pgSize) {\n // Index of the primary grouping separator\n var end = integer.length - pgSize;\n // Starting index for our loop\n var idx = end % sgSize;\n var start = integer.slice(0, idx);\n if (start.length) arrPush.call(groups, start);\n // Loop to separate into secondary grouping digits\n while (idx < end) {\n arrPush.call(groups, integer.slice(idx, idx + sgSize));\n idx += sgSize;\n }\n // Add the primary grouping digits\n arrPush.call(groups, integer.slice(end));\n } else {\n arrPush.call(groups, integer);\n }\n // a. Assert: The number of elements in groups List is greater than 0.\n if (groups.length === 0) throw new Error();\n // a. Repeat, while groups List is not empty:\n while (groups.length) {\n // i. Remove the first element from groups and let integerGroup be the value of that element.\n var integerGroup = arrShift.call(groups);\n // ii. Add new part record { [[type]]: \"integer\", [[value]]: integerGroup } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup });\n // iii. If groups List is not empty, then:\n if (groups.length) {\n // 1. Add new part record { [[type]]: \"group\", [[value]]: groupSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol });\n }\n }\n }\n // 10. Else,\n else {\n // a. Add new part record { [[type]]: \"integer\", [[value]]: integer } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer });\n }\n // 11. If fraction is not undefined, then:\n if (fraction !== undefined) {\n // a. Let decimalSepSymbol be the ILND String representing the decimal separator.\n var decimalSepSymbol = ild.decimal;\n // a. Add new part record { [[type]]: \"decimal\", [[value]]: decimalSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol });\n // a. Add new part record { [[type]]: \"fraction\", [[value]]: fraction } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction });\n }\n }\n }\n // a. Else if p is equal \"plusSign\", then:\n else if (p === \"plusSign\") {\n // i. Let plusSignSymbol be the ILND String representing the plus sign.\n var plusSignSymbol = ild.plusSign;\n // ii. Add new part record { [[type]]: \"plusSign\", [[value]]: plusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol });\n }\n // a. Else if p is equal \"minusSign\", then:\n else if (p === \"minusSign\") {\n // i. Let minusSignSymbol be the ILND String representing the minus sign.\n var minusSignSymbol = ild.minusSign;\n // ii. Add new part record { [[type]]: \"minusSign\", [[value]]: minusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol });\n }\n // a. Else if p is equal \"percentSign\" and numberFormat.[[style]] is \"percent\", then:\n else if (p === \"percentSign\" && internal['[[style]]'] === \"percent\") {\n // i. Let percentSignSymbol be the ILND String representing the percent sign.\n var percentSignSymbol = ild.percentSign;\n // ii. Add new part record { [[type]]: \"percentSign\", [[value]]: percentSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol });\n }\n // a. Else if p is equal \"currency\" and numberFormat.[[style]] is \"currency\", then:\n else if (p === \"currency\" && internal['[[style]]'] === \"currency\") {\n // i. Let currency be the value of numberFormat.[[currency]].\n var currency = internal['[[currency]]'];\n\n var cd = void 0;\n\n // ii. If numberFormat.[[currencyDisplay]] is \"code\", then\n if (internal['[[currencyDisplay]]'] === \"code\") {\n // 1. Let cd be currency.\n cd = currency;\n }\n // iii. Else if numberFormat.[[currencyDisplay]] is \"symbol\", then\n else if (internal['[[currencyDisplay]]'] === \"symbol\") {\n // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself.\n cd = data.currencies[currency] || currency;\n }\n // iv. Else if numberFormat.[[currencyDisplay]] is \"name\", then\n else if (internal['[[currencyDisplay]]'] === \"name\") {\n // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself.\n cd = currency;\n }\n // v. Add new part record { [[type]]: \"currency\", [[value]]: cd } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd });\n }\n // a. Else,\n else {\n // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive.\n var _literal = pattern.substring(beginIndex, endIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal });\n }\n // a. Set nextIndex to endIndex + 1.\n nextIndex = endIndex + 1;\n // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, \"{\", nextIndex)\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n // 9. If nextIndex is less than length, then:\n if (nextIndex < length) {\n // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive.\n var _literal2 = pattern.substring(nextIndex, length);\n // a. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 });\n }\n // 10. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumber]\n */\nfunction FormatNumber(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be an empty String.\n var result = '';\n // 3. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Set result to a String value produced by concatenating result and part.[[value]].\n result += part['[[value]]'];\n }\n // 4. Return result.\n return result;\n}\n\n/**\n * When the ToRawPrecision abstract operation is called with arguments x (which\n * must be a finite non-negative number), minPrecision, and maxPrecision (both\n * must be integers between 1 and 21) the following steps are taken:\n */\nfunction ToRawPrecision(x, minPrecision, maxPrecision) {\n // 1. Let p be maxPrecision.\n var p = maxPrecision;\n\n var m = void 0,\n e = void 0;\n\n // 2. If x = 0, then\n if (x === 0) {\n // a. Let m be the String consisting of p occurrences of the character \"0\".\n m = arrJoin.call(Array(p + 1), '0');\n // b. Let e be 0.\n e = 0;\n }\n // 3. Else\n else {\n // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the\n // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as\n // possible. If there are two such sets of e and n, pick the e and n for\n // which n × 10ᵉ⁻ᵖ⁺¹ is larger.\n e = log10Floor(Math.abs(x));\n\n // Easier to get to m from here\n var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10));\n\n // b. Let m be the String consisting of the digits of the decimal\n // representation of n (in order, with no leading zeroes)\n m = String(Math.round(e - p + 1 < 0 ? x * f : x / f));\n }\n\n // 4. If e ≥ p, then\n if (e >= p)\n // a. Return the concatenation of m and e-p+1 occurrences of the character \"0\".\n return m + arrJoin.call(Array(e - p + 1 + 1), '0');\n\n // 5. If e = p-1, then\n else if (e === p - 1)\n // a. Return m.\n return m;\n\n // 6. If e ≥ 0, then\n else if (e >= 0)\n // a. Let m be the concatenation of the first e+1 characters of m, the character\n // \".\", and the remaining p–(e+1) characters of m.\n m = m.slice(0, e + 1) + '.' + m.slice(e + 1);\n\n // 7. If e < 0, then\n else if (e < 0)\n // a. Let m be the concatenation of the String \"0.\", –(e+1) occurrences of the\n // character \"0\", and the string m.\n m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m;\n\n // 8. If m contains the character \".\", and maxPrecision > minPrecision, then\n if (m.indexOf(\".\") >= 0 && maxPrecision > minPrecision) {\n // a. Let cut be maxPrecision – minPrecision.\n var cut = maxPrecision - minPrecision;\n\n // b. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.charAt(m.length - 1) === '0') {\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n\n // ii. Decrease cut by 1.\n cut--;\n }\n\n // c. If the last character of m is \".\", then\n if (m.charAt(m.length - 1) === '.')\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. Return m.\n return m;\n}\n\n/**\n * @spec[tc39/ecma402/master/spec/numberformat.html]\n * @clause[sec-torawfixed]\n * When the ToRawFixed abstract operation is called with arguments x (which must\n * be a finite non-negative number), minInteger (which must be an integer between\n * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and\n * 20) the following steps are taken:\n */\nfunction ToRawFixed(x, minInteger, minFraction, maxFraction) {\n // 1. Let f be maxFraction.\n var f = maxFraction;\n // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n.\n var n = Math.pow(10, f) * x; // diverging...\n // 3. If n = 0, let m be the String \"0\". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes).\n var m = n === 0 ? \"0\" : n.toFixed(0); // divering...\n\n {\n // this diversion is needed to take into consideration big numbers, e.g.:\n // 1.2344501e+37 -> 12344501000000000000000000000000000000\n var idx = void 0;\n var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0;\n if (exp) {\n m = m.slice(0, idx).replace('.', '');\n m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0');\n }\n }\n\n var int = void 0;\n // 4. If f ≠ 0, then\n if (f !== 0) {\n // a. Let k be the number of characters in m.\n var k = m.length;\n // a. If k ≤ f, then\n if (k <= f) {\n // i. Let z be the String consisting of f+1–k occurrences of the character \"0\".\n var z = arrJoin.call(Array(f + 1 - k + 1), '0');\n // ii. Let m be the concatenation of Strings z and m.\n m = z + m;\n // iii. Let k be f+1.\n k = f + 1;\n }\n // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m.\n var a = m.substring(0, k - f),\n b = m.substring(k - f, m.length);\n // a. Let m be the concatenation of the three Strings a, \".\", and b.\n m = a + \".\" + b;\n // a. Let int be the number of characters in a.\n int = a.length;\n }\n // 5. Else, let int be the number of characters in m.\n else int = m.length;\n // 6. Let cut be maxFraction – minFraction.\n var cut = maxFraction - minFraction;\n // 7. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.slice(-1) === \"0\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n // a. Decrease cut by 1.\n cut--;\n }\n // 8. If the last character of m is \".\", then\n if (m.slice(-1) === \".\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. If int < minInteger, then\n if (int < minInteger) {\n // a. Let z be the String consisting of minInteger–int occurrences of the character \"0\".\n var _z = arrJoin.call(Array(minInteger - int + 1), '0');\n // a. Let m be the concatenation of Strings z and m.\n m = _z + m;\n }\n // 10. Return m.\n return m;\n}\n\n// Sect 11.3.2 Table 2, Numbering systems\n// ======================================\nvar numSys = {\n arab: [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n arabext: [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"],\n bali: [\"᭐\", \"᭑\", \"᭒\", \"᭓\", \"᭔\", \"᭕\", \"᭖\", \"᭗\", \"᭘\", \"᭙\"],\n beng: [\"০\", \"১\", \"২\", \"৩\", \"৪\", \"৫\", \"৬\", \"৭\", \"৮\", \"৯\"],\n deva: [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"],\n fullwide: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n gujr: [\"૦\", \"૧\", \"૨\", \"૩\", \"૪\", \"૫\", \"૬\", \"૭\", \"૮\", \"૯\"],\n guru: [\"੦\", \"੧\", \"੨\", \"੩\", \"੪\", \"੫\", \"੬\", \"੭\", \"੮\", \"੯\"],\n hanidec: [\"〇\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\"],\n khmr: [\"០\", \"១\", \"២\", \"៣\", \"៤\", \"៥\", \"៦\", \"៧\", \"៨\", \"៩\"],\n knda: [\"೦\", \"೧\", \"೨\", \"೩\", \"೪\", \"೫\", \"೬\", \"೭\", \"೮\", \"೯\"],\n laoo: [\"໐\", \"໑\", \"໒\", \"໓\", \"໔\", \"໕\", \"໖\", \"໗\", \"໘\", \"໙\"],\n latn: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n limb: [\"᥆\", \"᥇\", \"᥈\", \"᥉\", \"᥊\", \"᥋\", \"᥌\", \"᥍\", \"᥎\", \"᥏\"],\n mlym: [\"൦\", \"൧\", \"൨\", \"൩\", \"൪\", \"൫\", \"൬\", \"൭\", \"൮\", \"൯\"],\n mong: [\"᠐\", \"᠑\", \"᠒\", \"᠓\", \"᠔\", \"᠕\", \"᠖\", \"᠗\", \"᠘\", \"᠙\"],\n mymr: [\"၀\", \"၁\", \"၂\", \"၃\", \"၄\", \"၅\", \"၆\", \"၇\", \"၈\", \"၉\"],\n orya: [\"୦\", \"୧\", \"୨\", \"୩\", \"୪\", \"୫\", \"୬\", \"୭\", \"୮\", \"୯\"],\n tamldec: [\"௦\", \"௧\", \"௨\", \"௩\", \"௪\", \"௫\", \"௬\", \"௭\", \"௮\", \"௯\"],\n telu: [\"౦\", \"౧\", \"౨\", \"౩\", \"౪\", \"౫\", \"౬\", \"౭\", \"౮\", \"౯\"],\n thai: [\"๐\", \"๑\", \"๒\", \"๓\", \"๔\", \"๕\", \"๖\", \"๗\", \"๘\", \"๙\"],\n tibt: [\"༠\", \"༡\", \"༢\", \"༣\", \"༤\", \"༥\", \"༦\", \"༧\", \"༨\", \"༩\"]\n};\n\n/**\n * This function provides access to the locale and formatting options computed\n * during initialization of the object.\n *\n * The function returns a new object whose properties and attributes are set as\n * if constructed by an object literal assigning to each of the following\n * properties the value of the corresponding internal property of this\n * NumberFormat object (see 11.4): locale, numberingSystem, style, currency,\n * currencyDisplay, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and\n * useGrouping. Properties whose corresponding internal properties are not present\n * are not assigned.\n */\n/* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', {\n configurable: true,\n writable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\n/* jslint esnext: true */\n\n// Match these datetime components in a CLDR pattern, except those in single quotes\nvar expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n// Skip over patterns with these datetime components because we don't have data\n// to back them up:\n// timezone, weekday, amoung others\nvar unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string\n\nvar dtKeys = [\"era\", \"year\", \"month\", \"day\", \"weekday\", \"quarter\"];\nvar tmKeys = [\"hour\", \"minute\", \"second\", \"hour12\", \"timeZoneName\"];\n\nfunction isDateFormatOnly(obj) {\n for (var i = 0; i < tmKeys.length; i += 1) {\n if (obj.hasOwnProperty(tmKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isTimeFormatOnly(obj) {\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (obj.hasOwnProperty(dtKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction joinDateAndTimeFormats(dateFormatObj, timeFormatObj) {\n var o = { _: {} };\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (dateFormatObj[dtKeys[i]]) {\n o[dtKeys[i]] = dateFormatObj[dtKeys[i]];\n }\n if (dateFormatObj._[dtKeys[i]]) {\n o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]];\n }\n }\n for (var j = 0; j < tmKeys.length; j += 1) {\n if (timeFormatObj[tmKeys[j]]) {\n o[tmKeys[j]] = timeFormatObj[tmKeys[j]];\n }\n if (timeFormatObj._[tmKeys[j]]) {\n o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]];\n }\n }\n return o;\n}\n\nfunction computeFinalPatterns(formatObj) {\n // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns:\n // 'In patterns, two single quotes represents a literal single quote, either\n // inside or outside single quotes. Text within single quotes is not\n // interpreted in any way (except for two adjacent single quotes).'\n formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) {\n return literal ? literal : \"'\";\n });\n\n // pattern 12 is always the default. we can produce the 24 by removing {ampm}\n formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, '');\n return formatObj;\n}\n\nfunction expDTComponentsMeta($0, formatObj) {\n switch ($0.charAt(0)) {\n // --- Era\n case 'G':\n formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1];\n return '{era}';\n\n // --- Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n formatObj.year = $0.length === 2 ? '2-digit' : 'numeric';\n return '{year}';\n\n // --- Quarter (not supported in this polyfill)\n case 'Q':\n case 'q':\n formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{quarter}';\n\n // --- Month\n case 'M':\n case 'L':\n formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{month}';\n\n // --- Week (not supported in this polyfill)\n case 'w':\n // week of the year\n formatObj.week = $0.length === 2 ? '2-digit' : 'numeric';\n return '{weekday}';\n case 'W':\n // week of the month\n formatObj.week = 'numeric';\n return '{weekday}';\n\n // --- Day\n case 'd':\n // day of the month\n formatObj.day = $0.length === 2 ? '2-digit' : 'numeric';\n return '{day}';\n case 'D': // day of the year\n case 'F': // day of the week\n case 'g':\n // 1..n: Modified Julian day\n formatObj.day = 'numeric';\n return '{day}';\n\n // --- Week Day\n case 'E':\n // day of the week\n formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'e':\n // local day of the week\n formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'c':\n // stand alone local day of the week\n formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n\n // --- Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B':\n // flexible day periods\n formatObj.hour12 = true;\n return '{ampm}';\n\n // --- Hour\n case 'h':\n case 'H':\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n case 'k':\n case 'K':\n formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K)\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n\n // --- Minute\n case 'm':\n formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric';\n return '{minute}';\n\n // --- Second\n case 's':\n formatObj.second = $0.length === 2 ? '2-digit' : 'numeric';\n return '{second}';\n case 'S':\n case 'A':\n formatObj.second = 'numeric';\n return '{second}';\n\n // --- Timezone\n case 'z': // 1..3, 4: specific non-location format\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n // this polyfill only supports much, for now, we are just doing something dummy\n formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long';\n return '{timeZoneName}';\n }\n}\n\n/**\n * Converts the CLDR availableFormats into the objects and patterns required by\n * the ECMAScript Internationalization API specification.\n */\nfunction createDateTimeFormat(skeleton, pattern) {\n // we ignore certain patterns that are unsupported to avoid this expensive op.\n if (unwantedDTCs.test(pattern)) return undefined;\n\n var formatObj = {\n originalPattern: pattern,\n _: {}\n };\n\n // Replace the pattern string with the one required by the specification, whilst\n // at the same time evaluating it for the subsets and formats\n formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj._);\n });\n\n // Match the skeleton string with the one required by the specification\n // this implementation is based on the Date Field Symbol Table:\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n // Note: we are adding extra data to the formatObject even though this polyfill\n // might not support it.\n skeleton.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj);\n });\n\n return computeFinalPatterns(formatObj);\n}\n\n/**\n * Processes DateTime formats from CLDR to an easier-to-parse format.\n * the result of this operation should be cached the first time a particular\n * calendar is analyzed.\n *\n * The specification requires we support at least the following subsets of\n * date/time components:\n *\n * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second'\n * - 'weekday', 'year', 'month', 'day'\n * - 'year', 'month', 'day'\n * - 'year', 'month'\n * - 'month', 'day'\n * - 'hour', 'minute', 'second'\n * - 'hour', 'minute'\n *\n * We need to cherry pick at least these subsets from the CLDR data and convert\n * them into the pattern objects used in the ECMA-402 API.\n */\nfunction createDateTimeFormats(formats) {\n var availableFormats = formats.availableFormats;\n var timeFormats = formats.timeFormats;\n var dateFormats = formats.dateFormats;\n var result = [];\n var skeleton = void 0,\n pattern = void 0,\n computed = void 0,\n i = void 0,\n j = void 0;\n var timeRelatedFormats = [];\n var dateRelatedFormats = [];\n\n // Map available (custom) formats into a pattern for createDateTimeFormats\n for (skeleton in availableFormats) {\n if (availableFormats.hasOwnProperty(skeleton)) {\n pattern = availableFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n // in some cases, the format is only displaying date specific props\n // or time specific props, in which case we need to also produce the\n // combined formats.\n if (isDateFormatOnly(computed)) {\n dateRelatedFormats.push(computed);\n } else if (isTimeFormatOnly(computed)) {\n timeRelatedFormats.push(computed);\n }\n }\n }\n }\n\n // Map time formats into a pattern for createDateTimeFormats\n for (skeleton in timeFormats) {\n if (timeFormats.hasOwnProperty(skeleton)) {\n pattern = timeFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n timeRelatedFormats.push(computed);\n }\n }\n }\n\n // Map date formats into a pattern for createDateTimeFormats\n for (skeleton in dateFormats) {\n if (dateFormats.hasOwnProperty(skeleton)) {\n pattern = dateFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n dateRelatedFormats.push(computed);\n }\n }\n }\n\n // combine custom time and custom date formats when they are orthogonals to complete the\n // formats supported by CLDR.\n // This Algo is based on section \"Missing Skeleton Fields\" from:\n // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n for (i = 0; i < timeRelatedFormats.length; i += 1) {\n for (j = 0; j < dateRelatedFormats.length; j += 1) {\n if (dateRelatedFormats[j].month === 'long') {\n pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long;\n } else if (dateRelatedFormats[j].month === 'short') {\n pattern = formats.medium;\n } else {\n pattern = formats.short;\n }\n computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]);\n computed.originalPattern = pattern;\n computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\\s]+|[,\\s]+$/gi, '');\n result.push(computeFinalPatterns(computed));\n }\n }\n\n return result;\n}\n\n// this represents the exceptions of the rule that are not covered by CLDR availableFormats\n// for single property configurations, they play no role when using multiple properties, and\n// those that are not in this table, are not exceptions or are not covered by the data we\n// provide.\nvar validSyntheticProps = {\n second: {\n numeric: 's',\n '2-digit': 'ss'\n },\n minute: {\n numeric: 'm',\n '2-digit': 'mm'\n },\n year: {\n numeric: 'y',\n '2-digit': 'yy'\n },\n day: {\n numeric: 'd',\n '2-digit': 'dd'\n },\n month: {\n numeric: 'L',\n '2-digit': 'LL',\n narrow: 'LLLLL',\n short: 'LLL',\n long: 'LLLL'\n },\n weekday: {\n narrow: 'ccccc',\n short: 'ccc',\n long: 'cccc'\n }\n};\n\nfunction generateSyntheticFormat(propName, propValue) {\n if (validSyntheticProps[propName] && validSyntheticProps[propName][propValue]) {\n var _ref2;\n\n return _ref2 = {\n originalPattern: validSyntheticProps[propName][propValue],\n _: defineProperty$1({}, propName, propValue),\n extendedPattern: \"{\" + propName + \"}\"\n }, defineProperty$1(_ref2, propName, propValue), defineProperty$1(_ref2, \"pattern12\", \"{\" + propName + \"}\"), defineProperty$1(_ref2, \"pattern\", \"{\" + propName + \"}\"), _ref2;\n }\n}\n\n// An object map of date component keys, saves using a regex later\nvar dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} });\n\n/**\n * Returns a string for a date component, resolved using multiple inheritance as specified\n * as specified in the Unicode Technical Standard 35.\n */\nfunction resolveDateString(data, ca, component, width, key) {\n // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance:\n // 'In clearly specified instances, resources may inherit from within the same locale.\n // For example, ... the Buddhist calendar inherits from the Gregorian calendar.'\n var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component],\n\n\n // \"sideways\" inheritance resolves strings when a key doesn't exist\n alts = {\n narrow: ['short', 'long'],\n short: ['long', 'narrow'],\n long: ['short', 'narrow']\n },\n\n\n //\n resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]];\n\n // `key` wouldn't be specified for components 'dayPeriods'\n return key !== null ? resolved[key] : resolved;\n}\n\n// Define the DateTimeFormat constructor internally so it cannot be tainted\nfunction DateTimeFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.DateTimeFormat(locales, options);\n }\n return InitializeDateTimeFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'DateTimeFormat', {\n configurable: true,\n writable: true,\n value: DateTimeFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(DateTimeFormatConstructor, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat\n * (which must be an object), locales, and options. It initializes dateTimeFormat as a\n * DateTimeFormat object.\n */\nfunction /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(dateTimeFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(dateTimeFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined below) with arguments options, \"any\", and \"date\".\n options = ToDateTimeOptions(options, 'any', 'date');\n\n // 5. Let opt be a new Record.\n var opt = new Record();\n\n // 6. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with arguments options, \"localeMatcher\", \"string\", a List\n // containing the two String values \"lookup\" and \"best fit\", and \"best fit\".\n var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 7. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 8. Let DateTimeFormat be the standard built-in object that is the initial\n // value of Intl.DateTimeFormat.\n var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need\n\n // 9. Let localeData be the value of the [[localeData]] internal property of\n // DateTimeFormat.\n var localeData = DateTimeFormat['[[localeData]]'];\n\n // 10. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of DateTimeFormat, and localeData.\n var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 11. Set the [[locale]] internal property of dateTimeFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of\n // r.[[ca]].\n internal['[[calendar]]'] = r['[[ca]]'];\n\n // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of\n // r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let tz be the result of calling the [[Get]] internal method of options with\n // argument \"timeZone\".\n var tz = options.timeZone;\n\n // 16. If tz is not undefined, then\n if (tz !== undefined) {\n // a. Let tz be ToString(tz).\n // b. Convert tz to upper case as described in 6.1.\n // NOTE: If an implementation accepts additional time zone values, as permitted\n // under certain conditions by the Conformance clause, different casing\n // rules apply.\n tz = toLatinUpperCase(tz);\n\n // c. If tz is not \"UTC\", then throw a RangeError exception.\n // ###TODO: accept more time zones###\n if (tz !== 'UTC') throw new RangeError('timeZone is not supported.');\n }\n\n // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz.\n internal['[[timeZone]]'] = tz;\n\n // 18. Let opt be a new Record.\n opt = new Record();\n\n // 19. For each row of Table 3, except the header row, do:\n for (var prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, prop)) continue;\n\n // 20. Let prop be the name given in the Property column of the row.\n // 21. Let value be the result of calling the GetOption abstract operation,\n // passing as argument options, the name given in the Property column of the\n // row, \"string\", a List containing the strings given in the Values column of\n // the row, and undefined.\n var value = GetOption(options, prop, 'string', dateTimeComponents[prop]);\n\n // 22. Set opt.[[]] to value.\n opt['[[' + prop + ']]'] = value;\n }\n\n // Assigned a value below\n var bestFormat = void 0;\n\n // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 24. Let formats be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"formats\".\n // Note: we process the CLDR formats into the spec'd structure\n var formats = ToDateTimeFormats(dataLocaleData.formats);\n\n // 25. Let matcher be the result of calling the GetOption abstract operation with\n // arguments options, \"formatMatcher\", \"string\", a List containing the two String\n // values \"basic\" and \"best fit\", and \"best fit\".\n matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit');\n\n // Optimization: caching the processed formats as a one time operation by\n // replacing the initial structure from localeData\n dataLocaleData.formats = formats;\n\n // 26. If matcher is \"basic\", then\n if (matcher === 'basic') {\n // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract\n // operation (defined below) with opt and formats.\n bestFormat = BasicFormatMatcher(opt, formats);\n\n // 28. Else\n } else {\n {\n // diverging\n var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr;\n }\n // 29. Let bestFormat be the result of calling the BestFitFormatMatcher\n // abstract operation (defined below) with opt and formats.\n bestFormat = BestFitFormatMatcher(opt, formats);\n }\n\n // 30. For each row in Table 3, except the header row, do\n for (var _prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _prop)) continue;\n\n // a. Let prop be the name given in the Property column of the row.\n // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of\n // bestFormat with argument prop.\n // c. If pDesc is not undefined, then\n if (hop.call(bestFormat, _prop)) {\n // i. Let p be the result of calling the [[Get]] internal method of bestFormat\n // with argument prop.\n var p = bestFormat[_prop];\n {\n // diverging\n p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p;\n }\n\n // ii. Set the [[]] internal property of dateTimeFormat to p.\n internal['[[' + _prop + ']]'] = p;\n }\n }\n\n var pattern = void 0; // Assigned a value below\n\n // 31. Let hr12 be the result of calling the GetOption abstract operation with\n // arguments options, \"hour12\", \"boolean\", undefined, and undefined.\n var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n\n // 32. If dateTimeFormat has an internal property [[hour]], then\n if (internal['[[hour]]']) {\n // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]]\n // internal method of dataLocaleData with argument \"hour12\".\n hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12;\n\n // b. Set the [[hour12]] internal property of dateTimeFormat to hr12.\n internal['[[hour12]]'] = hr12;\n\n // c. If hr12 is true, then\n if (hr12 === true) {\n // i. Let hourNo0 be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"hourNo0\".\n var hourNo0 = dataLocaleData.hourNo0;\n\n // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0.\n internal['[[hourNo0]]'] = hourNo0;\n\n // iii. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern12\".\n pattern = bestFormat.pattern12;\n }\n\n // d. Else\n else\n // i. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n }\n\n // 33. Else\n else\n // a. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n\n // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern.\n internal['[[pattern]]'] = pattern;\n\n // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to\n // true.\n internal['[[initializedDateTimeFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return dateTimeFormat;\n}\n\n/**\n * Several DateTimeFormat algorithms use values from the following table, which provides\n * property names and allowable values for the components of date and time formats:\n */\nvar dateTimeComponents = {\n weekday: [\"narrow\", \"short\", \"long\"],\n era: [\"narrow\", \"short\", \"long\"],\n year: [\"2-digit\", \"numeric\"],\n month: [\"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\"],\n day: [\"2-digit\", \"numeric\"],\n hour: [\"2-digit\", \"numeric\"],\n minute: [\"2-digit\", \"numeric\"],\n second: [\"2-digit\", \"numeric\"],\n timeZoneName: [\"short\", \"long\"]\n};\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeFormats(formats) {\n if (Object.prototype.toString.call(formats) === '[object Array]') {\n return formats;\n }\n return createDateTimeFormats(formats);\n}\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeOptions(options, required, defaults) {\n // 1. If options is undefined, then let options be null, else let options be\n // ToObject(options).\n if (options === undefined) options = null;else {\n // (#12) options needs to be a Record, but it also needs to inherit properties\n var opt2 = toObject(options);\n options = new Record();\n\n for (var k in opt2) {\n options[k] = opt2[k];\n }\n }\n\n // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5.\n var create = objCreate;\n\n // 3. Let options be the result of calling the [[Call]] internal method of create with\n // undefined as the this value and an argument list containing the single item\n // options.\n options = create(options);\n\n // 4. Let needDefaults be true.\n var needDefaults = true;\n\n // 5. If required is \"date\" or \"any\", then\n if (required === 'date' || required === 'any') {\n // a. For each of the property names \"weekday\", \"year\", \"month\", \"day\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false;\n }\n\n // 6. If required is \"time\" or \"any\", then\n if (required === 'time' || required === 'any') {\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false;\n }\n\n // 7. If needDefaults is true and defaults is either \"date\" or \"all\", then\n if (needDefaults && (defaults === 'date' || defaults === 'all'))\n // a. For each of the property names \"year\", \"month\", \"day\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.year = options.month = options.day = 'numeric';\n\n // 8. If needDefaults is true and defaults is either \"time\" or \"all\", then\n if (needDefaults && (defaults === 'time' || defaults === 'all'))\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.hour = options.minute = options.second = 'numeric';\n\n // 9. Return options.\n return options;\n}\n\n/**\n * When the BasicFormatMatcher abstract operation is called with two arguments options and\n * formats, the following steps are taken:\n */\nfunction BasicFormatMatcher(options, formats) {\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, property) ? format[property] : undefined;\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta === 2) score -= longMorePenalty;\n\n // 6. Else if delta = 1, decrease score by shortMorePenalty.\n else if (delta === 1) score -= shortMorePenalty;\n\n // 7. Else if delta = -1, decrease score by shortLessPenalty.\n else if (delta === -1) score -= shortLessPenalty;\n\n // 8. Else if delta = -2, decrease score by longLessPenalty.\n else if (delta === -2) score -= longLessPenalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/**\n * When the BestFitFormatMatcher abstract operation is called with two arguments options\n * and formats, it performs implementation dependent steps, which should return a set of\n * component representations that a typical user of the selected locale would perceive as\n * at least as good as the one returned by BasicFormatMatcher.\n *\n * This polyfill defines the algorithm to be the same as BasicFormatMatcher,\n * with the addition of bonus points awarded where the requested format is of\n * the same data type as the potentially matching format.\n *\n * This algo relies on the concept of closest distance matching described here:\n * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n * Typically a “best match” is found using a closest distance match, such as:\n *\n * Symbols requesting a best choice for the locale are replaced.\n * j → one of {H, k, h, K}; C → one of {a, b, B}\n * -> Covered by cldr.js matching process\n *\n * For fields with symbols representing the same type (year, month, day, etc):\n * Most symbols have a small distance from each other.\n * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ...\n * -> Covered by cldr.js matching process\n *\n * Width differences among fields, other than those marking text vs numeric, are given small distance from each other.\n * MMM ≅ MMMM\n * MM ≅ M\n * Numeric and text fields are given a larger distance from each other.\n * MMM ≈ MM\n * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other.\n * d ≋ D; ...\n * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields).\n *\n *\n * For example,\n *\n * { month: 'numeric', day: 'numeric' }\n *\n * should match\n *\n * { month: '2-digit', day: '2-digit' }\n *\n * rather than\n *\n * { month: 'short', day: 'numeric' }\n *\n * This makes sense because a user requesting a formatted date with numeric parts would\n * not expect to see the returned format containing narrow, short or long part names\n */\nfunction BestFitFormatMatcher(options, formats) {\n /** Diverging: this block implements the hack for single property configuration, eg.:\n *\n * `new Intl.DateTimeFormat('en', {day: 'numeric'})`\n *\n * should produce a single digit with the day of the month. This is needed because\n * CLDR `availableFormats` data structure doesn't cover these cases.\n */\n {\n var optionsPropNames = [];\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n if (options['[[' + property + ']]'] !== undefined) {\n optionsPropNames.push(property);\n }\n }\n if (optionsPropNames.length === 1) {\n var _bestFormat = generateSyntheticFormat(optionsPropNames[0], options['[[' + optionsPropNames[0] + ']]']);\n if (_bestFormat) {\n return _bestFormat;\n }\n }\n }\n\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n var patternPenalty = 2;\n\n var hour12Penalty = 1;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var _property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + _property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, _property) ? format[_property] : undefined;\n\n // Diverging: using the default properties produced by the pattern/skeleton\n // to match it with user options, and apply a penalty\n var patternProp = hop.call(format._, _property) ? format._[_property] : undefined;\n if (optionsProp !== patternProp) {\n score -= patternPenalty;\n }\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n {\n // diverging from spec\n // When the bestFit argument is true, subtract additional penalty where data types are not the same\n if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty;\n } else {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty;\n }\n }\n }\n }\n\n {\n // diverging to also take into consideration differences between 12 or 24 hours\n // which is special for the best fit only.\n if (format._.hour12 !== options.hour12) {\n score -= hour12Penalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/* 12.2.3 */internals.DateTimeFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['ca', 'nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the\n * following steps are taken:\n */\n/* 12.2.2 */\ndefineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * DateTimeFormat object.\n */\n/* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatDateTime\n});\n\nfunction GetFormatDateTime() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this DateTimeFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 0, that takes the argument date and\n // performs the following steps:\n var F = function F() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n // i. If date is not provided or is undefined, then let x be the\n // result as if by the expression Date.now() where Date.now is\n // the standard built-in function defined in ES5, 15.9.4.4.\n // ii. Else let x be ToNumber(date).\n // iii. Return the result of calling the FormatDateTime abstract\n // operation (defined below) with arguments this and x.\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatDateTime(this, x);\n };\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts$1() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.');\n\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatToPartsDateTime(this, x);\n}\n\nObject.defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: formatToParts$1\n});\n\nfunction CreateDateTimeParts(dateTimeFormat, x) {\n // 1. If x is not a finite Number, then throw a RangeError exception.\n if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format');\n\n var internal = dateTimeFormat.__getInternalProperties(secret);\n\n // Creating restore point for properties on the RegExp object... please wait\n /* let regexpRestore = */createRegExpRestore(); // ###TODO: review this\n\n // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat.\n var locale = internal['[[locale]]'];\n\n // 3. Let nf be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {useGrouping: false}) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n var nf = new Intl.NumberFormat([locale], { useGrouping: false });\n\n // 4. Let nf2 be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping:\n // false}) where Intl.NumberFormat is the standard built-in constructor defined in\n // 11.1.3.\n var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false });\n\n // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined\n // below) with x, the value of the [[calendar]] internal property of dateTimeFormat,\n // and the value of the [[timeZone]] internal property of dateTimeFormat.\n var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']);\n\n // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat.\n var pattern = internal['[[pattern]]'];\n\n // 7.\n var result = new List();\n\n // 8.\n var index = 0;\n\n // 9.\n var beginIndex = pattern.indexOf('{');\n\n // 10.\n var endIndex = 0;\n\n // Need the locale minus any extensions\n var dataLocale = internal['[[dataLocale]]'];\n\n // Need the calendar data from CLDR\n var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars;\n var ca = internal['[[calendar]]'];\n\n // 11.\n while (beginIndex !== -1) {\n var fv = void 0;\n // a.\n endIndex = pattern.indexOf('}', beginIndex);\n // b.\n if (endIndex === -1) {\n throw new Error('Unclosed pattern');\n }\n // c.\n if (beginIndex > index) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(index, beginIndex)\n });\n }\n // d.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // e.\n if (dateTimeComponents.hasOwnProperty(p)) {\n // i. Let f be the value of the [[

]] internal property of dateTimeFormat.\n var f = internal['[[' + p + ']]'];\n // ii. Let v be the value of tm.[[

]].\n var v = tm['[[' + p + ']]'];\n // iii. If p is \"year\" and v ≤ 0, then let v be 1 - v.\n if (p === 'year' && v <= 0) {\n v = 1 - v;\n }\n // iv. If p is \"month\", then increase v by 1.\n else if (p === 'month') {\n v++;\n }\n // v. If p is \"hour\" and the value of the [[hour12]] internal property of\n // dateTimeFormat is true, then\n else if (p === 'hour' && internal['[[hour12]]'] === true) {\n // 1. Let v be v modulo 12.\n v = v % 12;\n // 2. If v is 0 and the value of the [[hourNo0]] internal property of\n // dateTimeFormat is true, then let v be 12.\n if (v === 0 && internal['[[hourNo0]]'] === true) {\n v = 12;\n }\n }\n\n // vi. If f is \"numeric\", then\n if (f === 'numeric') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments nf and v.\n fv = FormatNumber(nf, v);\n }\n // vii. Else if f is \"2-digit\", then\n else if (f === '2-digit') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // with arguments nf2 and v.\n fv = FormatNumber(nf2, v);\n // 2. If the length of fv is greater than 2, let fv be the substring of fv\n // containing the last two characters.\n if (fv.length > 2) {\n fv = fv.slice(-2);\n }\n }\n // viii. Else if f is \"narrow\", \"short\", or \"long\", then let fv be a String\n // value representing f in the desired form; the String value depends upon\n // the implementation and the effective locale and calendar of\n // dateTimeFormat. If p is \"month\", then the String value may also depend\n // on whether dateTimeFormat has a [[day]] internal property. If p is\n // \"timeZoneName\", then the String value may also depend on the value of\n // the [[inDST]] field of tm.\n else if (f in dateWidths) {\n switch (p) {\n case 'month':\n fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']);\n break;\n\n case 'weekday':\n try {\n fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']);\n // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']];\n } catch (e) {\n throw new Error('Could not find weekday data for locale ' + locale);\n }\n break;\n\n case 'timeZoneName':\n fv = ''; // ###TODO\n break;\n\n case 'era':\n try {\n fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']);\n } catch (e) {\n throw new Error('Could not find era data for locale ' + locale);\n }\n break;\n\n default:\n fv = tm['[[' + p + ']]'];\n }\n }\n // ix\n arrPush.call(result, {\n type: p,\n value: fv\n });\n // f.\n } else if (p === 'ampm') {\n // i.\n var _v = tm['[[hour]]'];\n // ii./iii.\n fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null);\n // iv.\n arrPush.call(result, {\n type: 'dayPeriod',\n value: fv\n });\n // g.\n } else {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(beginIndex, endIndex + 1)\n });\n }\n // h.\n index = endIndex + 1;\n // i.\n beginIndex = pattern.indexOf('{', index);\n }\n // 12.\n if (endIndex < pattern.length - 1) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substr(endIndex + 1)\n });\n }\n // 13.\n return result;\n}\n\n/**\n * When the FormatDateTime abstract operation is called with arguments dateTimeFormat\n * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number\n * value), it returns a String value representing x (interpreted as a time value as\n * specified in ES5, 15.9.1.1) according to the effective locale and the formatting\n * options of dateTimeFormat.\n */\nfunction FormatDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = '';\n\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result += part.value;\n }\n return result;\n}\n\nfunction FormatToPartsDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = [];\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result.push({\n type: part.type,\n value: part.value\n });\n }\n return result;\n}\n\n/**\n * When the ToLocalTime abstract operation is called with arguments date, calendar, and\n * timeZone, the following steps are taken:\n */\nfunction ToLocalTime(date, calendar, timeZone) {\n // 1. Apply calendrical calculations on date for the given calendar and time zone to\n // produce weekday, era, year, month, day, hour, minute, second, and inDST values.\n // The calculations should use best available information about the specified\n // calendar and time zone. If the calendar is \"gregory\", then the calculations must\n // match the algorithms specified in ES5, 15.9.1, except that calculations are not\n // bound by the restrictions on the use of best available information on time zones\n // for local time zone adjustment and daylight saving time adjustment imposed by\n // ES5, 15.9.1.7 and 15.9.1.8.\n // ###TODO###\n var d = new Date(date),\n m = 'get' + (timeZone || '');\n\n // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]],\n // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding\n // calculated value.\n return new Record({\n '[[weekday]]': d[m + 'Day'](),\n '[[era]]': +(d[m + 'FullYear']() >= 0),\n '[[year]]': d[m + 'FullYear'](),\n '[[month]]': d[m + 'Month'](),\n '[[day]]': d[m + 'Date'](),\n '[[hour]]': d[m + 'Hours'](),\n '[[minute]]': d[m + 'Minutes'](),\n '[[second]]': d[m + 'Seconds'](),\n '[[inDST]]': false // ###TODO###\n });\n}\n\n/**\n * The function returns a new object whose properties and attributes are set as if\n * constructed by an object literal assigning to each of the following properties the\n * value of the corresponding internal property of this DateTimeFormat object (see 12.4):\n * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day,\n * hour, minute, second, and timeZoneName. Properties whose corresponding internal\n * properties are not present are not assigned.\n */\n/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {\n writable: true,\n configurable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\nvar ls = Intl.__localeSensitiveProtos = {\n Number: {},\n Date: {}\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.2.1 */ls.Number.toLocaleString = function () {\n // Satisfy test 13.2.1_1\n if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()');\n\n // 1. Let x be this Number value (as defined in ES5, 15.7.4).\n // 2. If locales is not provided, then let locales be undefined.\n // 3. If options is not provided, then let options be undefined.\n // 4. Let numberFormat be the result of creating a new object as if by the\n // expression new Intl.NumberFormat(locales, options) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n // 5. Return the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments numberFormat and x.\n return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this);\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.3.1 */ls.Date.toLocaleString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"any\", and \"all\".\n options = ToDateTimeOptions(options, 'any', 'all');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleDateString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.2 */ls.Date.toLocaleDateString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0],\n\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"date\", and \"date\".\n options = ToDateTimeOptions(options, 'date', 'date');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleTimeString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.3 */ls.Date.toLocaleTimeString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"time\", and \"time\".\n options = ToDateTimeOptions(options, 'time', 'time');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\ndefineProperty(Intl, '__applyLocaleSensitivePrototypes', {\n writable: true,\n configurable: true,\n value: function value() {\n defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString });\n // Need this here for IE 8, to avoid the _DontEnum_ bug\n defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString });\n\n for (var k in ls.Date) {\n if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] });\n }\n }\n});\n\n/**\n * Can't really ship a single script with data for hundreds of locales, so we provide\n * this __addLocaleData method as a means for the developer to add the data on an\n * as-needed basis\n */\ndefineProperty(Intl, '__addLocaleData', {\n value: function value(data) {\n if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error(\"Object passed doesn't identify itself with a valid language tag\");\n\n addLocaleData(data, data.locale);\n }\n});\n\nfunction addLocaleData(data, tag) {\n // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present\n if (!data.number) throw new Error(\"Object passed doesn't contain locale data for Intl.NumberFormat\");\n\n var locale = void 0,\n locales = [tag],\n parts = tag.split('-');\n\n // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc\n if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]);\n\n while (locale = arrShift.call(locales)) {\n // Add to NumberFormat internal properties as per 11.2.3\n arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale);\n internals.NumberFormat['[[localeData]]'][locale] = data.number;\n\n // ...and DateTimeFormat internal properties as per 12.2.3\n if (data.date) {\n data.date.nu = data.number.nu;\n arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale);\n internals.DateTimeFormat['[[localeData]]'][locale] = data.date;\n }\n }\n\n // If this is the first set of locale data added, make it the default\n if (defaultLocale === undefined) setDefaultLocale(tag);\n}\n\ndefineProperty(Intl, '__disableRegExpRestore', {\n value: function value() {\n internals.disableRegExpRestore = true;\n }\n});\n\nmodule.exports = Intl;","// Expose `IntlPolyfill` as global to add locale data into runtime later on.\nglobal.IntlPolyfill = require('./lib/core.js');\n\n// Require all locale data for `Intl`. This module will be\n// ignored when bundling for the browser with Browserify/Webpack.\nrequire('./locale-data/complete.js');\n\n// hack to export the polyfill as global Intl if needed\nif (!global.Intl) {\n global.Intl = global.IntlPolyfill;\n global.IntlPolyfill.__applyLocaleSensitivePrototypes();\n}\n\n// providing an idiomatic api for the nodejs version of this module\nmodule.exports = global.IntlPolyfill;\n"],"sourceRoot":""}