{"version":3,"file":"static/js/03901bdf4852a9f6eb4c.bundle.js","mappings":"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ACbC,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,MACbhO,IAAK,CAAC,MAAO,MACbiO,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbxL,IAAK,CAAC,MAAO,MACbyL,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,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","sources":["webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/ieee754/index.js?ff2a","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/inherits/inherits_browser.js?d1d3","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/intl-format-cache/src/index.ts?14d4","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/intl-locales-supported/src/index.ts?ddf4","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/intl/index.js?d9cf","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/intl/lib/core.js?4cb3","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/invariant/browser.js?611d","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/js-cookie/src/js.cookie.js?ec8b","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/js-sha256/src/sha256.js?baaa","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/json2mq/index.js?74b9","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/lazysizes/lazysizes.js?e5e4","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/lazysizes/plugins/attrchange/ls.attrchange.js?e126","webpack://@msdyn365-commerce-partners/fabrikam/./node_modules/lazysizes/plugins/bgset/ls.bgset.js?e9d9"],"sourcesContent":["/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n// -----------------------------------------------------------------------------\n\n// TODO: Remove this once Intl.RelativeTimeFormat is no longer a draft\ninterface RelativeTimeFormat {\n format(value: number, unit: string): string;\n formatToParts(value: number, unit: string): { value: string }[];\n resolvedOptions(): ResolvedRelativeTimeFormatOptions;\n}\ninterface ResolvedRelativeTimeFormatOptions\n extends Pick {\n locale: string;\n}\ninterface RelativeTimeFormatOptions {\n localeMatcher: 'best fit' | 'lookup';\n numeric: 'always' | 'auto';\n style: 'long' | 'short' | 'narrow';\n}\nlet RelativeTimeFormat: {\n new (\n locales?: string | string[],\n opts?: RelativeTimeFormatOptions\n ): RelativeTimeFormat;\n (\n locales?: string | string[],\n opts?: RelativeTimeFormatOptions\n ): RelativeTimeFormat;\n supportedLocalesOf(\n locales: string | string[],\n opts?: Pick\n ): string[];\n};\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction getCacheId(inputs: any[]) {\n return JSON.stringify(\n inputs.map(input =>\n input && typeof input === 'object' ? orderedProps(input) : input\n )\n );\n}\n\nfunction orderedProps(obj: Record) {\n return Object.keys(obj)\n .sort()\n .map(k => ({ [k]: obj[k] }));\n}\n\ninterface MemoizeFormatConstructorFn {\n (constructor: typeof Intl.NumberFormat): (\n ...args: ConstructorParameters\n ) => Intl.NumberFormat;\n (constructor: typeof Intl.DateTimeFormat): (\n ...args: ConstructorParameters\n ) => Intl.DateTimeFormat;\n (constructor: typeof RelativeTimeFormat): (\n ...args: ConstructorParameters\n ) => RelativeTimeFormat;\n (constructor: any): (...args: any[]) => any;\n}\n\nconst memoizeFormatConstructor: MemoizeFormatConstructorFn = (\n FormatConstructor: any,\n cache: Record = {}\n) => (...args: any[]) => {\n const cacheId = getCacheId(args);\n let format = cacheId && cache[cacheId];\n if (!format) {\n format = new (FormatConstructor as any)(...args);\n if (cacheId) {\n cache[cacheId] = format;\n }\n }\n\n return format;\n};\n\nexport default memoizeFormatConstructor;\n","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\n\ntype IntlConstructor = {\n supportedLocalesOf(locales: string | string[], options?: any): string[];\n};\n\nexport default function areIntlLocalesSupported(\n locales: string | string[],\n constructorsToCheck?: Array\n): boolean {\n if (typeof Intl === 'undefined') {\n return false;\n }\n\n if (!locales) {\n throw new Error('locales must be supplied.');\n }\n\n if (!Array.isArray(locales)) {\n locales = [locales];\n }\n\n let intlConstructors = constructorsToCheck || [\n Intl.DateTimeFormat,\n Intl.NumberFormat,\n Intl.PluralRules,\n ];\n\n intlConstructors = intlConstructors.filter(Boolean);\n\n if (\n intlConstructors.length === 0 ||\n (constructorsToCheck &&\n intlConstructors.length !== constructorsToCheck.length)\n ) {\n return false;\n }\n\n return intlConstructors.every(\n intlConstructor =>\n intlConstructor.supportedLocalesOf(locales).length === locales.length\n );\n}\n","// 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","'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;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tvar addObserver = function(){\n\t\tvar connect, disconnect, observer, connected;\n\t\tvar lsCfg = lazySizes.cfg;\n\t\tvar attributes = {'data-bgset': 1, 'data-include': 1, 'data-poster': 1, 'data-bg': 1, 'data-script': 1};\n\t\tvar regClassTest = '(\\\\s|^)(' + lsCfg.loadedClass;\n\t\tvar docElem = document.documentElement;\n\n\t\tvar setClass = function(target){\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.rC(target, lsCfg.loadedClass);\n\t\t\t\tif(lsCfg.unloadedClass){\n\t\t\t\t\tlazySizes.rC(target, lsCfg.unloadedClass);\n\t\t\t\t}\n\t\t\t\tlazySizes.aC(target, lsCfg.lazyClass);\n\n\t\t\t\tif(target.style.display == 'none' || (target.parentNode && target.parentNode.style.display == 'none')){\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tlazySizes.loader.unveil(target);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tvar onMutation = function(mutations){\n\t\t\tvar i, len, mutation, target;\n\t\t\tfor(i = 0, len = mutations.length; i < len; i++){\n\t\t\t\tmutation = mutations[i];\n\t\t\t\ttarget = mutation.target;\n\n\t\t\t\tif(!target.getAttribute(mutation.attributeName)){continue;}\n\n\t\t\t\tif(target.localName == 'source' && target.parentNode){\n\t\t\t\t\ttarget = target.parentNode.querySelector('img');\n\t\t\t\t}\n\n\t\t\t\tif(target && regClassTest.test(target.className)){\n\t\t\t\t\tsetClass(target);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(lsCfg.unloadedClass){\n\t\t\tregClassTest += '|' + lsCfg.unloadedClass;\n\t\t}\n\n\t\tregClassTest += '|' + lsCfg.loadingClass + ')(\\\\s|$)';\n\n\t\tregClassTest = new RegExp(regClassTest);\n\n\t\tattributes[lsCfg.srcAttr] = 1;\n\t\tattributes[lsCfg.srcsetAttr] = 1;\n\n\t\tif(window.MutationObserver){\n\t\t\tobserver = new MutationObserver(onMutation);\n\n\t\t\tconnect = function(){\n\t\t\t\tif(!connected){\n\t\t\t\t\tconnected = true;\n\t\t\t\t\tobserver.observe( docElem, { subtree: true, attributes: true, attributeFilter: Object.keys(attributes)} );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tif(connected){\n\t\t\t\t\tconnected = false;\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tdocElem.addEventListener('DOMAttrModified', (function(){\n\t\t\t\tvar runs;\n\t\t\t\tvar modifications = [];\n\t\t\t\tvar callMutations = function(){\n\t\t\t\t\tonMutation(modifications);\n\t\t\t\t\tmodifications = [];\n\t\t\t\t\truns = false;\n\t\t\t\t};\n\t\t\t\treturn function(e){\n\t\t\t\t\tif(connected && attributes[e.attrName] && e.newValue){\n\t\t\t\t\t\tmodifications.push({target: e.target, attributeName: e.attrName});\n\t\t\t\t\t\tif(!runs){\n\t\t\t\t\t\t\tsetTimeout(callMutations);\n\t\t\t\t\t\t\truns = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})(), true);\n\n\t\t\tconnect = function(){\n\t\t\t\tconnected = true;\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tconnected = false;\n\t\t\t};\n\t\t}\n\n\t\taddEventListener('lazybeforeunveil', disconnect, true);\n\t\taddEventListener('lazybeforeunveil', connect);\n\n\t\taddEventListener('lazybeforesizes', disconnect, true);\n\t\taddEventListener('lazybeforesizes', connect);\n\t\tconnect();\n\n\t\tremoveEventListener('lazybeforeunveil', addObserver);\n\t};\n\n\n\taddEventListener('lazybeforeunveil', addObserver);\n}));\n","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar useSrc = regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg;\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: useSrc,\n\t\t\t\tfullSrc: null,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = event.detail.fullSrc || 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));\n"],"names":["exports","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","Object","create","module","ctor","superCtor","super_","prototype","constructor","enumerable","writable","configurable","TempCtor","getCacheId","inputs","JSON","stringify","map","input","obj","keys","sort","k","FormatConstructor","cache","cacheId","args","format","locales","constructorsToCheck","Intl","Error","Array","isArray","intlConstructors","DateTimeFormat","NumberFormat","PluralRules","filter","Boolean","length","every","intlConstructor","supportedLocalesOf","g","IntlPolyfill","__applyLocaleSensitivePrototypes","REACT_ELEMENT_TYPE","_typeof","Symbol","iterator","jsx","for","type","props","key","children","defaultProps","childrenLength","arguments","propName","childArray","$$typeof","undefined","ref","_owner","createClass","defineProperties","target","descriptor","defineProperty","Constructor","protoProps","staticProps","defineProperty$1","_extends","assign","source","hasOwnProperty","call","selfGlobal","self","slicedToArray","arr","_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","getOwnPropertyNames","getOwnPropertyDescriptor","get","object","property","receiver","Function","parent","getPrototypeOf","getter","inherits","subClass","superClass","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","es3","__defineGetter__","hop","arrIndexOf","search","t","max","objCreate","proto","F","arrSlice","slice","arrConcat","concat","arrPush","arrJoin","join","arrShift","shift","fnBind","bind","thisObj","internals","secret","random","Record","List","createRegExpRestore","disableRegExpRestore","regExpCache","lastMatch","RegExp","leftContext","multiline","has","esc","lm","replace","reg","exprStr","match","expr","lastIndex","exec","toObject","toNumber","Number","toLength","len","number","toInteger","min","getInternalProperties","__getInternalProperties","variant","singleton","extension","privateuse","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","_max","expCurrencyCode","expUnicodeExSeq","CanonicalizeLocaleList","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","GetNumberOption","minimum","maximum","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","InitializeNumberFormat","numberFormat","internal","regexpRestore","opt","dataLocale","normalized","cDigits","currency","CurrencyDigits","cd","mnid","mnfd","mxfd","mnsd","minimumSignificantDigits","mxsd","maximumSignificantDigits","stylePatterns","patterns","positivePattern","negativePattern","GetFormatNumber","bf","FormatNumber","FormatNumberToParts","x","PartitionNumberPattern","n","part","nums","data","ild","symbols","latn","pattern","beginIndex","endIndex","nextIndex","literal","p","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","LOG10E","log10Floor","f","exp","LN10","cut","minInteger","minFraction","maxFraction","toFixed","int","b","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","InitializeDateTimeFormat","dateTimeFormat","ToDateTimeOptions","tz","timeZone","dateTimeComponents","bestFormat","dataLocaleData","formats","toString","availableFormats","timeFormats","dateFormats","computed","timeRelatedFormats","dateRelatedFormats","full","medium","createDateTimeFormats","ToDateTimeFormats","removalPenalty","additionPenalty","longLessPenalty","longMorePenalty","shortLessPenalty","shortMorePenalty","bestScore","score","optionsProp","formatProp","optionsPropIndex","formatPropIndex","delta","BasicFormatMatcher","_hr","optionsPropNames","_bestFormat","propValue","_ref2","generateSyntheticFormat","patternPenalty","hour12Penalty","_property","BestFitFormatMatcher","_prop","hr12","hourNo0","GetFormatDateTime","required","opt2","needDefaults","date","Date","now","FormatDateTime","CreateDateTimeParts","nf","useGrouping","nf2","minimumIntegerDigits","tm","index","calendars","fv","v","substr","FormatToPartsDateTime","ls","__localeSensitiveProtos","toLocaleString","toLocaleDateString","toLocaleTimeString","nu","setDefaultLocale","addLocaleData","condition","argIndex","framesToPop","factory","OldCookies","window","Cookies","api","noConflict","extend","attributes","decode","decodeURIComponent","init","converter","document","path","expires","toUTCString","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","json","jar","cookies","parse","getJSON","remove","withConverter","ERROR","WINDOW","root","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","node","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","ArrayBuffer","HEX_CHARS","EXTRA","SHIFT","K","OUTPUT_TYPES","blocks","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","isView","createOutputMethod","outputType","is224","message","Sha256","update","createMethod","method","nodeWrap","crypto","eval","Buffer","algorithm","nodeMethod","createHash","digest","Uint8Array","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","h0","h1","h2","h3","h4","h5","h6","h7","block","bytes","hBytes","finalized","hashed","first","code","charCodeAt","array","oKeyPad","iKeyPad","inner","notString","lastByteIndex","hash","finalize","s0","s1","maj","t1","ab","da","bc","h","hex","arrayBuffer","dataView","DataView","setUint32","innerHash","sha256","sha224","hmac","camel2hyphen","obj2mq","mq","features","forEach","feature","isDimension","query","q","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","ele","cls","addClass","setAttribute","trim","removeClass","addRemoveLoadEvents","dom","add","action","evt","triggerEvent","elem","detail","noBubbles","noCancelable","event","createEvent","initEvent","dispatchEvent","updatePolyfill","el","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","offsetWidth","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","running","waiting","rafBatch","queue","hidden","_lsFlush","rAFIt","simple","that","throttle","lastTime","gDelay","rICTimeout","idleCallback","timeout","isPriority","delay","debounce","func","timestamp","wait","later","last","loader","regImg","regIframe","supportScroll","navigator","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","top","bottom","checkElements","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","getAttribute","contentWindow","location","handleSources","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","uP","aC","rC","hC","fire","gW","addObserver","connect","disconnect","observer","connected","runs","modifications","callMutations","lsCfg","regClassTest","setClass","unloadedClass","display","onMutation","mutations","mutation","localName","querySelector","className","attributeFilter","attrName","newValue","removeEventListener","regWhite","regSplitSet","regSource","regType","regBgUrlEscape","allowedBackgroundSize","contain","cover","setTypeOrMedia","typeMatch","proxyLoad","_lazybgset","image","bg","currentSrc","useSrc","fullSrc","backgroundImage","_lazybgsetLoading","createElement","alt","sets","picture","ratio","optimumx","removeChild","appendChild","removeAttribute","createPicture","bgSize","getPropertyValue","backgroundSize","getBgSize","_lazysizesParentFit"],"sourceRoot":""}