{"version":3,"file":"quiz.77f5585a1ce161fe23de.js","mappings":"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","sources":["webpack://wp/webpack/runtime/load script","webpack://wp/./locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/koa/error/locales/network/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/prism/locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/client/config.js","webpack://wp/./modules/client/delegate.js","webpack://wp/./modules/client/dom/getDocumentHeight.js","webpack://wp/./modules/client/dom/getScrollbarHeight.js","webpack://wp/./modules/client/getCsrfCookie.js","webpack://wp/./modules/client/head/resizeOnload/iframeResize.js","webpack://wp/./modules/client/head/resizeOnload/index.js","webpack://wp/./modules/client/isScrolledIntoView.js","webpack://wp/./modules/client/notification/index.js","webpack://wp/./modules/client/spinner.js","webpack://wp/./modules/client/xhr.js","webpack://wp/./modules/engine/console/consoleFormat.js","webpack://wp/./modules/engine/i18n/t.js","webpack://wp/./modules/engine/prism/codeBox.js","webpack://wp/./modules/engine/prism/codeTabsBox.js","webpack://wp/./modules/engine/prism/core.js","webpack://wp/./modules/engine/prism/index.js","webpack://wp/./modules/engine/prism/makeHighlight.js","webpack://wp/./modules/engine/prism/makeLineNumbers.js","webpack://wp/./modules/engine/prism/proxyConsoleLog.js","webpack://wp/./modules/engine/prism/sql.js","webpack://wp/./modules/lib/throttle.js","webpack://wp/./node_modules/babelfish/index.js","webpack://wp/./node_modules/babelfish/lib/parser.js","webpack://wp/./node_modules/plurals-cldr/index.js","webpack://wp/./node_modules/prismjs/components/prism-bash.js","webpack://wp/./node_modules/prismjs/components/prism-clike.js","webpack://wp/./node_modules/prismjs/components/prism-core.js","webpack://wp/./node_modules/prismjs/components/prism-css-extras.js","webpack://wp/./node_modules/prismjs/components/prism-css.js","webpack://wp/./node_modules/prismjs/components/prism-http.js","webpack://wp/./node_modules/prismjs/components/prism-java.js","webpack://wp/./node_modules/prismjs/components/prism-javascript.js","webpack://wp/./node_modules/prismjs/components/prism-markup.js","webpack://wp/./node_modules/prismjs/components/prism-scss.js","webpack://wp/./node_modules/prismjs/components/prism-sql.js","webpack://wp/./locales/ru.yml","webpack://wp/./modules/engine/koa/error/locales/network/ru.yml","webpack://wp/./modules/engine/prism/locales/ru.yml","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/ensure chunk","webpack://wp/webpack/runtime/get javascript chunk filename","webpack://wp/webpack/runtime/get mini-css chunk filename","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/webpack/runtime/publicPath","webpack://wp/webpack/runtime/jsonp chunk loading","webpack://wp/./modules/quiz/client/index.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"javascript-nodejs:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var map = {\n\t\"./ru.yml\": 9321\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3205;","var map = {\n\t\"./ru.yml\": 5660\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6188;","var map = {\n\t\"./ru.yml\": 5596\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3692;","module.exports = {\n lang: LANG,\n localCurrency: localCurrency,\n shopCurrency: shopCurrency,\n env: NODE_ENV,\n rateShopTo: rateShopTo,\n countryCode: countryCode,\n ordersMail: ordersMail,\n providers: providers,\n stripeKey: stripeKey,\n paypalClientId: paypalClientId,\n telegramBotId: telegramBotId,\n lookatCodeUrlBase: lookatCodeUrlBase,\n isRTL: isRTL\n};\n","\nfunction findDelegateTarget(event, selector) {\n let currentNode = event.target;\n while (currentNode) {\n if (currentNode.matches(selector)) {\n return currentNode;\n }\n\n if (currentNode == event.currentTarget) {\n break;\n }\n currentNode = currentNode.parentElement;\n }\n return null;\n}\n\n// delegate(table, 'th', click, handler)\n// table\n// thead\n// th ^*\n// code <--\nfunction delegate(topElement, selector, eventName, handler, context) {\n /* jshint -W040 */\n topElement.addEventListener(eventName, function(event) {\n let found = findDelegateTarget(event, selector);\n\n // .currentTarget is read only, I can not overwrite it to the \"found\" element\n // Object.create wrapper would break event.preventDefault()\n // so, keep in mind:\n // --> event.currentTarget is always the top-level (delegating) element!\n // use \"this\" to get the found target\n\n event.delegateTarget = found; // use instead of \"this\" in object methods\n\n if (found) {\n // if in context of object, use object as this,\n handler.call(context || this, event);\n }\n });\n}\n\ndelegate.delegateMixin = function(obj) {\n obj.delegate = function(selector, eventName, handler) {\n delegate(this.elem, selector, eventName, handler, this);\n };\n};\n\nmodule.exports = delegate;\n\n","let getScrollbarHeight = require('./getScrollbarHeight');\nlet scrollbarHeight;\n\nfunction getDocumentHeight(doc) {\n doc = doc || document;\n\n let height = Math.max(\n doc.body.scrollHeight, doc.documentElement.scrollHeight,\n doc.body.offsetHeight, doc.documentElement.offsetHeight,\n doc.body.clientHeight, doc.documentElement.clientHeight\n );\n\n if (doc.documentElement.scrollWidth > doc.documentElement.clientWidth) {\n // got a horiz scroll, let's add it\n if (!scrollbarHeight) scrollbarHeight = getScrollbarHeight();\n height += scrollbarHeight;\n }\n\n return height;\n}\n\nmodule.exports = getDocumentHeight;\n\n","function getScrollbarHeight() {\n let outer = document.createElement(\"div\");\n outer.style.cssText = \"visibility:hidden;height:100px\";\n if (!document.body) {\n throw new Error(\"getScrollbarHeight called to early: no document.body\");\n }\n document.body.appendChild(outer);\n\n let widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n let inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n let widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nmodule.exports = getScrollbarHeight;\n","module.exports = function() {\n let csrfCookie = document.cookie.match(/XSRF-TOKEN=([\\w-]+)/);\n return csrfCookie ? csrfCookie[1] : null;\n};\n\n","let getDocumentHeight = require('client/dom/getDocumentHeight');\n\nfunction iframeResize(ifrElem, callback) {\n try {\n // throws if cross-domain\n (ifrElem.contentDocument || ifrElem.contentWindow.document).body;\n } catch (e) {\n return;\n // not implemented crossdomain resize\n // iframeResizeCrossDomain(ifrElem, done);\n }\n\n let timeoutTimer = setTimeout(function() {\n // default height\n callback(new Error(\"timeout\"));\n }, 500);\n\n function done(err, height) {\n clearTimeout(timeoutTimer);\n\n callback(err, height);\n }\n\n // HINT: I shoulnd't move iframe in DOM, because it will reload it's contents when appended/inserted anywhere!\n // so I create a clone and work on it\n if (!ifrElem.offsetWidth) {\n // clone iframe at another place to see the size\n let cloneIframe = ifrElem.cloneNode(true);\n cloneIframe.name = \"\";\n\n cloneIframe.style.height = '50px';\n cloneIframe.style.position = 'absolute';\n cloneIframe.style.display = 'block';\n cloneIframe.style.top = '10000px';\n\n cloneIframe.onload = function() {\n let height = getDocumentHeight(this.contentDocument);\n ifrElem.style.display = 'block';\n cloneIframe.remove();\n done(null, height);\n };\n\n document.body.appendChild(cloneIframe);\n return;\n }\n\n ifrElem.style.display = 'block';\n ifrElem.style.height = '1px';\n\n let height = getDocumentHeight(ifrElem.contentDocument);\n\n ifrElem.style.height = '';\n done(null, height);\n}\n\niframeResize.async = function iframeResizeAsync(iframe, callback) {\n // delay to let the code inside the iframe finish\n setTimeout(function() {\n iframeResize(iframe, callback);\n }, 0);\n};\n\n\nfunction iframeResizeCrossDomain(ifrElem, callback) {\n throw new Error(\"Not implemented yet\");\n}\n\nmodule.exports = iframeResize;\n\n\n/*\n window.onmessage = function(e) {\n if (e.origin != \"http://ru.lookatcode.com\") return;\n let data = JSON.parse(e.data);\n if (!data || data.cmd != \"resize-iframe\") return;\n let elem = document.getElementsByName(data.name)[0];\n\n elem.style.height = +data.height + 10 + \"px\";\n let deferred = iframeResizeCrossDomain.deferreds[data.id];\n deferred.resolve();\n };\n\n function iframeResizeCrossDomain(ifrElem, callback) {\n\n setTimeout(function() {\n callback(new Error(\"timeout\"));\n }, 500);\n\n try {\n // try to see if resizer can work on this iframe\n ifrElem.contentWindow.postMessage(\"test\", \"http://ru.lookatcode.com\");\n } catch(e) {\n // iframe from another domain, sorry\n callback(new Error(\"the resizer must be from ru.lookatcode.com\"));\n return;\n }\n\n if (!ifrElem.offsetWidth) {\n // move iframe to another place to resize there\n let placeholder = document.createElement('span');\n ifrElem.parentNode.insertBefore(placeholder, ifrElem);\n document.body.appendChild(ifrElem);\n }\n\n ifrElem.style.display = 'none';\n\n let id = \"\" + Math.random();\n let message = { cmd: 'resize-iframe', name: ifrElem[0].name, id: id };\n // TODO\n iframeResizeCrossDomain.deferreds[id] = deferred;\n deferred.always(function() {\n delete iframeResizeCrossDomain.deferreds[id];\n });\n\n let frame = iframeResizeCrossDomain.iframe;\n if (frame.loaded) {\n frame.contentWindow.postMessage(JSON.stringify(message), \"http://ru.lookatcode.com\");\n } else {\n frame.on('load', function() {\n frame.contentWindow.postMessage(JSON.stringify(message), \"http://ru.lookatcode.com\");\n });\n }\n\n if (placeholder) {\n setTimeout(function() {\n placeholder.replaceWith(ifrElem);\n }, 20);\n }\n\n return deferred;\n }\n\n iframeResizeCrossDomain.deferreds = {};\n iframeResizeCrossDomain.iframe = $('').prependTo('body');\n iframeResizeCrossDomain.iframe.on('load', function() {\n this.loaded = true;\n });\n */\n","let iframeResize = require('./iframeResize');\nlet throttle = require('lib/throttle');\n// track resized iframes in window.onresize\n\nlet onResizeQueue = [];\n\nexports.iframe = function(iframe) {\n\n function resize() {\n iframeResize.async(iframe, function(err, height) {\n if (err) console.error(err);\n if (height) iframe.style.height = height + 'px';\n });\n }\n\n resize();\n};\n\nexports.codeTabs = function(iframe) {\n function hideShowArrows() {\n\n // add arrows if needed\n let elem = iframe.closest('.code-tabs');\n let contentElem = iframe.closest('[data-code-tabs-content]');\n let switchesElem = elem.querySelector('[data-code-tabs-switches]');\n let switchesElemItems = switchesElem.firstElementChild;\n\n if (switchesElemItems.offsetWidth > switchesElem.offsetWidth) {\n elem.classList.add('code-tabs_scroll');\n } else {\n elem.classList.remove('code-tabs_scroll');\n }\n\n }\n\n hideShowArrows();\n onResizeQueue.push(hideShowArrows);\n};\n\n\n\nwindow.addEventListener('resize', throttle(function() {\n onResizeQueue.forEach(onResize => onResize());\n}, 200));\n","\nfunction isScrolledIntoView(elem) {\n let coords = elem.getBoundingClientRect();\n\n let visibleHeight = 0;\n\n if (coords.top < 0) {\n visibleHeight = coords.bottom;\n } else if (coords.bottom > window.innerHeight) {\n visibleHeight = window.innerHeight - top;\n } else {\n return true;\n }\n\n return visibleHeight > 10;\n}\n\nmodule.exports = isScrolledIntoView;\n","/**\n * For new notification types extend Notification\n */\n\nlet delegate = require('client/delegate');\n\n/**\n * Calculates translateY positions when notifications are added/removed\n */\nclass NotificationManager {\n\n constructor(options = {}) {\n this.notifications = [];\n this.verticalSpace = options.verticalSpace || 8;\n }\n\n register(notification) {\n this.notifications.unshift(notification);\n setTimeout(() => this.recalculate(), 20);\n }\n\n unregister(notification) {\n let idx = this.notifications.indexOf(notification);\n this.notifications.splice(idx, 1);\n this.recalculate();\n }\n\n recalculate() {\n let top = this.verticalSpace;\n this.notifications.forEach(notification => {\n notification.top = top;\n top += notification.height + this.verticalSpace;\n });\n }\n\n}\n\n// if this module is included into different webpack builds,\n// ensure they share the same manager object\nexport function init(options) {\n if (!window.notificationManager) {\n window.notificationManager = new NotificationManager(options);\n }\n}\n\n\nclass Notification {\n\n constructor(html, type, timeout) {\n let elemHtml = `
\n
${html}
\n
`;\n\n document.body.insertAdjacentHTML(\"beforeEnd\", elemHtml);\n\n this.elem = document.body.lastElementChild;\n\n switch(timeout) {\n case undefined:\n this.timeout = this.TIMEOUT_DEFAULT;\n break;\n case 'slow':\n this.timeout = this.TIMEOUT_SLOW;\n break;\n case 'fast':\n this.timeout = this.TIMEOUT_FAST;\n break;\n default:\n this.timeout = timeout;\n }\n\n\n window.notificationManager.register(this);\n this.setupCloseHandler();\n this.setupCloseTimeout();\n }\n\n get TIMEOUT_DEFAULT() {\n return 3000;\n }\n\n get TIMEOUT_SLOW() {\n return 5000;\n }\n\n get TIMEOUT_FAST() {\n return 1500;\n }\n\n\n close() {\n if (!this.elem.parentNode) return; // already closed (by user click?)\n this.elem.remove();\n window.notificationManager.unregister(this);\n }\n\n setupCloseHandler() {\n this.delegate('.notification__close', 'click', () => this.close());\n }\n\n setupCloseTimeout() {\n if (this.timeout) {\n setTimeout(() => this.close(), this.timeout);\n }\n }\n\n get height() {\n return this.elem.offsetHeight;\n }\n\n set top(value) {\n this.elem.style.transform = 'translateY(' + value + 'px)';\n }\n\n}\n\ndelegate.delegateMixin(Notification.prototype);\n\n\nexport class Info extends Notification {\n\n constructor(html, timeout) {\n super(html, 'info', timeout);\n }\n\n}\n\nexport class Warning extends Notification {\n\n constructor(html, timeout) {\n super(html, 'warning', timeout);\n }\n}\n\nexport class Success extends Notification {\n\n constructor(html, timeout) {\n super(html, 'success', timeout);\n }\n\n}\n\nexport class Error extends Notification {\n\n constructor(html, timeout) {\n super(html, 'error', timeout);\n }\n\n\n get TIMEOUT_DEFAULT() {\n return 5000;\n }\n\n\n}\n\n/*\nexport class Test extends Notification {\n\n constructor(html) {\n super(html, 'error');\n }\n\n\n get TIMEOUT_DEFAULT() {\n return null;\n }\n\n\n}\n\nexports.Test = Test;\n*/\n","// Usage:\n// 1) new Spinner({ elem: elem}) -> start/stop()\n// 2) new Spinner() -> somewhere.append(spinner.elem) -> start/stop\nfunction Spinner(options) {\n options = options || {};\n this.elem = options.elem;\n\n this.size = options.size || 'medium';\n // any class to add to spinner (make spinner special here)\n this.class = options.class ? (' ' + options.class) : '';\n\n // any class to add to element (to hide it's content for instance)\n this.elemClass = options.elemClass;\n\n if (this.size != 'medium' && this.size != 'small' && this.size != 'large') {\n throw new Error(\"Unsupported size: \" + this.size);\n }\n\n if (!this.elem) {\n this.elem = document.createElement('div');\n }\n}\n\nSpinner.prototype.start = function() {\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n\n this.elem.insertAdjacentHTML('beforeend', '');\n};\n\nSpinner.prototype.stop = function() {\n let spinnerElem = this.elem.querySelector('.spinner');\n if (!spinnerElem) return; // already stopped or never started\n\n spinnerElem.remove();\n\n if (this.elemClass) {\n this.elem.classList.toggle(this.elemClass);\n }\n};\n\nwindow.Spinner = Spinner;\n\nmodule.exports = Spinner;\n","let notification = require('client/notification');\nlet getCsrfCookie = require('client/getCsrfCookie');\n\nconst LANG = require('config').lang;\nconst t = require('engine/i18n/t');\n\nt.i18n.add('', require('../../locales/' + LANG + '.yml'));\nt.i18n.add('error.network', require('engine/koa/error/locales/network/' + LANG + '.yml'));\n\n// Wrapper about XHR\n// # Global Events\n// triggers document.loadstart/loadend on communication start/end\n// --> unless options.noGlobalEvents is set\n//\n// # Events\n// triggers fail/success on load end:\n// --> by default status=200 is ok, the others are failures\n// --> options.normalStatuses = [201,409] allow given statuses\n// --> fail event has .reason field\n// --> success event has .result field\n//\n// # JSON\n// --> send(object) calls JSON.stringify\n// --> adds Accept: json (we want json) by default, unless options.raw\n// if options.json or server returned json content type\n// --> autoparse json\n// --> fail if error\n//\n// # CSRF\n// --> requests sends header X-XSRF-TOKEN from cookie\n\nfunction xhr(options) {\n\n let request = new XMLHttpRequest();\n let method = options.method || 'GET';\n\n let body = options.body;\n let url = options.url;\n\n request.open(method, url, options.sync ? false : true);\n\n request.method = method;\n\n // token/header names same as angular $http for easier interop\n let csrfCookie = getCsrfCookie();\n if (csrfCookie && !options.skipCsrf) {\n request.setRequestHeader(\"X-XSRF-TOKEN\", csrfCookie);\n }\n\n if (options.responseType) request.responseType = options.responseType;\n\n if ({}.toString.call(body) == '[object Object]') {\n // must be OPENed to setRequestHeader\n request.setRequestHeader(\"Content-Type\", \"application/json;charset=UTF-8\");\n body = JSON.stringify(body);\n }\n\n if (!options.noDocumentEvents) {\n request.addEventListener('loadstart', event => {\n request.timeStart = Date.now();\n let e = wrapEvent('xhrstart', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('loadend', event => {\n let e = wrapEvent('xhrend', event);\n document.dispatchEvent(e);\n });\n request.addEventListener('success', event => {\n let e = wrapEvent('xhrsuccess', event);\n e.result = event.result;\n document.dispatchEvent(e);\n });\n request.addEventListener('fail', event => {\n let e = wrapEvent('xhrfail', event);\n e.reason = event.reason;\n document.dispatchEvent(e);\n });\n }\n\n if (!options.raw) { // means we want json\n request.setRequestHeader(\"Accept\", \"application/json\");\n }\n\n request.setRequestHeader('X-Requested-With', \"XMLHttpRequest\");\n\n let normalStatuses = options.normalStatuses || [200];\n\n function wrapEvent(name, e) {\n let event = new CustomEvent(name);\n event.originalEvent = e;\n return event;\n }\n\n function fail(reason, originalEvent) {\n let e = wrapEvent(\"fail\", originalEvent);\n e.reason = reason;\n request.dispatchEvent(e);\n }\n\n function success(result, originalEvent) {\n let e = wrapEvent(\"success\", originalEvent);\n e.result = result;\n request.dispatchEvent(e);\n }\n\n request.addEventListener(\"error\", e => {\n fail(t('error.network.server_connection_error'), e);\n });\n\n request.addEventListener(\"timeout\", e => {\n fail(t('error.network.server_request_timeout'), e);\n });\n\n request.addEventListener(\"abort\", e => {\n fail(t('error.network.request_aborted'), e);\n });\n\n request.addEventListener(\"load\", e => {\n if (!request.status) { // does that ever happen?\n fail(t('error.network.no_response'), e);\n return;\n }\n\n let result = !options.responseType || options.responseType === 'text' ? request.responseText : request.response;\n let contentType = request.getResponseHeader(\"Content-Type\") || '';\n if (contentType.match(/^application\\/json/) || options.json) { // autoparse json if WANT or RECEIVED json\n try {\n result = JSON.parse(result);\n } catch (e) {\n fail(t('error.network.invalid_format'), e);\n return;\n }\n }\n\n if (!normalStatuses.includes(request.status)) {\n\n // if we have a JSON response with {info:..} field, show info as error details\n let errorMessage = result.info ?\n t('error.network.server_error_info', {status: request.status, info: result.info}) : t('error.network.server_error', {status: request.status});\n\n fail(errorMessage, e);\n return;\n }\n\n success(result, e);\n });\n\n // defer to let other handlers be assigned\n setTimeout(function() {\n request.send(body);\n });\n\n return request;\n\n}\n\n\ndocument.addEventListener('xhrfail', function(event) {\n new notification.Error(event.reason);\n});\n\n\nmodule.exports = xhr;\n","/* can be required directly from other client-side code */\n\nmodule.exports = function(args) {\n return Array.from(args).map(format).join(', ');\n}\n\nfunction format(value, depth = 0) {\n if (value == null) return 'null';\n\n if (typeof value == 'function') {\n return formatFunction(value, depth);\n }\n\n if (Array.isArray(value)) {\n return formatArray(value, depth);\n }\n\n if (typeof window == 'object') {\n if (value instanceof Node) {\n return format(value.outerHTML, depth);\n }\n\n if (value instanceof Event) {\n let copyProps = [Symbol.toStringTag, 'type', 'clientX', 'clientY', 'key', 'code'];\n let obj = {};\n for(let prop of copyProps) {\n if (prop in value) {\n obj[prop] = value[prop];\n }\n }\n return format(obj, depth);\n }\n }\n\n if (typeof value == 'object') {\n return formatObject(value, depth);\n }\n\n if (typeof value == 'string') {\n return formatString(value, depth);\n }\n\n return JSON.stringify(value);\n}\n\nfunction formatFunction(f, depth = 0) {\n if (depth) {\n return 'function ' + f.name;\n }\n\n f = f.toString();\n f = f.split('\\n');\n if (f.length > 10) {\n f = f.slice(0, 10).join('\\n') + '\\n...';\n }\n return f;\n}\n\nfunction formatArray(value, depth = 0) {\n if (depth > 2) return '[...]';\n\n let limit = depth == 1 ? 3 : 10;\n\n if (value.length > limit) {\n value = value.slice(0, limit);\n value.push('...');\n }\n\n return '[' + value.map(v => format(v, depth + 1)).join(', ') + ']';\n}\n\nfunction formatString(value, depth = 0) {\n let limit = depth == 1 ? 20 : 60;\n\n if (value.length > limit) {\n value = value.slice(0, value.limit - 1) + '…';\n }\n\n return JSON.stringify(value);\n // was: `\"${value}\"`;\n // but this doesn't excape special chars, such as \\n\n}\n\nfunction formatObject(value, depth = 0) {\n let name = value.constructor.name;\n\n if (name == 'Object' && value[Symbol.toStringTag]) {\n name = value[Symbol.toStringTag];\n }\n\n if (name != 'Object' && value.toString != Object.prototype.toString) {\n return value.toString();\n }\n\n let result = '';\n\n if (name != 'Object') {\n result += name + ' ';\n }\n\n result += '{';\n\n if (depth > 1) {\n result += '...';\n } else {\n let items = [];\n for(let prop in value) {\n if (!value.hasOwnProperty(prop)) continue;\n items.push(`${prop}: ${format(value[prop], depth + 1)}`);\n }\n result += items.join(', ');\n }\n\n result += '}';\n\n return result;\n}","'use strict';\n\nconst BabelFish = require('babelfish');\n\nconst i18n = new BabelFish('en');\n\nlet err = console.error;\n\n\nif (typeof IS_CLIENT === 'undefined') {\n const log = require('engine/log')();\n err = (...args) => log.error(...args);\n}\n\nfunction t(phrase) {\n\n if (!i18n.hasPhrase(LANG, phrase)) {\n // log only in server environment && development\n // client isn't logging this kind of errors now, comment out to log everywhere\n let shouldLog = typeof IS_CLIENT === 'undefined' && (process.env.I18N_DEBUG || process.env.NODE_ENV === 'development');\n if (shouldLog) {\n err(\"No such phrase\", phrase);\n }\n }\n\n return i18n.t(LANG, ...arguments);\n}\n\nmodule.exports = t;\n\nconst LANG = require('config').lang;\n\nif (LANG !== 'en') {\n i18n.setFallback(LANG, 'en');\n}\n\ni18n.add = (...args) => {\n args = args.map(arg => arg.__esModule ? arg.default : arg);\n return i18n.addPhrase(LANG, ...args);\n};\n\nt.i18n = i18n;\n","let resizeOnload = require('client/head/resizeOnload');\nlet isScrolledIntoView = require('client/isScrolledIntoView');\nlet makeLineNumbers = require('./makeLineNumbers');\nlet makeHighlight = require('./makeHighlight');\nconst config = require('config');\nlet consoleFormat = require('engine/console/consoleFormat');\nconst t = require('engine/i18n/t');\n\nconst LANG = require('config').lang;\nt.i18n.add('prism', require('./locales/' + LANG + '.yml'));\n\n\nfunction CodeBox(elem) {\n\n let preElem = elem.querySelector('pre');\n let codeElem = Array.from(preElem.childNodes).find(n => n.tagName === 'CODE');\n\n let code = codeElem.textContent;\n\n let outputBox;\n\n elem.codeBox = this;\n\n let runCode = code;\n if (elem.hasAttribute('data-async')) {\n runCode = `(async () => {\\n${code}\\n})()`;\n }\n\n Prism.highlightElement(codeElem);\n\n let lineNumbersWrapper = makeLineNumbers(preElem.innerHTML);\n\n /*\n if (preElem.hasAttribute('data-start')) {\n preElem.style.counterReset = 'linenumber ' + Number(preElem.dataset.start) - 1;\n }\n */\n\n preElem.insertAdjacentHTML(\"afterBegin\", lineNumbersWrapper);\n\n let ranges = JSON.parse(elem.getAttribute('data-highlight'));\n if (ranges) {\n emphasize(codeElem, ranges);\n }\n\n // preElem.insertAdjacentHTML(\"afterBegin\", masks);\n\n let isJS = preElem.classList.contains('language-javascript');\n let isHTML = preElem.classList.contains('language-markup');\n let isTrusted = +elem.getAttribute('data-trusted');\n let isNoStrict = +elem.getAttribute('data-no-strict');\n\n let useStrict = (!isNoStrict && isJS) ? `\"use strict\";` : '';\n\n // globalEval evaluates asynchronously, so we must inject codeBox id into the code\n // then in console.log we use it to show the message under the current box\n let codeBoxId = `globalThis.__codeBoxId = \"${elem.id}\";`;\n\n // Sandbox doesn't need codeBoxId\n let sandboxCode = `${useStrict}\\n\\n${runCode}`;\n\n runCode = `${useStrict}${codeBoxId}\\n\\n${runCode}`;\n\n let jsFrame;\n let globalFrame;\n let htmlResult;\n let isFirstRun = true;\n\n if (!isJS && !isHTML) return;\n\n let runElem = elem.querySelector('[data-action=\"run\"]');\n if (runElem) {\n runElem.onclick = function() {\n this.blur();\n run();\n return false;\n };\n }\n\n let editElem = elem.querySelector('[data-action=\"edit\"]');\n if (editElem) {\n editElem.onclick = function() {\n this.blur();\n edit();\n return false;\n };\n }\n\n // some code can't be shown by epub engine\n if (elem.hasAttribute('data-autorun')) {\n if(window.ebookType == 'epub' && elem.getAttribute('data-autorun') == 'no-epub') {\n elem.querySelector('iframe').remove();\n } else {\n // timeout should be small, around 10ms, or remove it to make crawler process the autorun\n setTimeout(run, 100);\n // run();\n }\n }\n\n function postJSFrame() {\n let win = jsFrame.contentWindow;\n if (typeof win.postMessage !== 'function') {\n alert(\"Sorry, your browser is too old\");\n return;\n }\n win.postMessage(runCode, config.lookatCodeUrlBase + '/showjs');\n }\n\n\n function emphasize(codeElem, ranges) {\n let codeHtml = codeElem.innerHTML;\n let split = codeHtml.split(/\\n/);\n\n for(let range of ranges) {\n if (range.end !== undefined) {\n // block emphasize\n split[range.start] = '' + split[range.start];\n split[range.end] += '';\n } else {\n let line = split[range.start];\n let cols = range.cols;\n let inTag = false;\n let charCounter = -1;\n let resultLine = '';\n /*\n if (cols.find(c => c.start == 0)) {\n resultLine += '';\n }\n */\n // line = line.replace(/<.*?>/g, '');\n //line = `alert('Start of try runs'); // (1) <---`;\n\n for(let i = 0; i < line.length ; i++) {\n if (line[i] == '<') inTag = true;\n\n if (inTag) {\n resultLine += line[i];\n } else {\n charCounter++;\n\n if (cols.find(c => c.start == charCounter)) {\n resultLine += '';\n }\n\n resultLine += line[i];\n\n if (line[i] == '&') { // entities, such as < are counted as single char in range.cols\n let entities = ['lt;', 'gt;', 'amp;', 'quot;'];\n for(let entity of entities) {\n if (line.slice(i + 1, i + 1 + entity.length) == entity) {\n i += entity.length;\n resultLine += entity;\n }\n }\n }\n\n if (cols.find(c => c.end == charCounter + 1)) {\n resultLine += '';\n }\n }\n\n if (line[i] == '>') inTag = false;\n }\n /*\n if (cols.find(c => c.end == charCounter + 1)) {\n resultLine += '';\n }*/\n\n split[range.start] = resultLine;\n }\n\n }\n codeElem.innerHTML = split.join('\\n');\n }\n\n\n function runHTML() {\n\n let frame;\n\n if (htmlResult && elem.hasAttribute('data-refresh')) {\n htmlResult.remove();\n htmlResult = null;\n }\n\n if (!htmlResult) {\n // take from HTML if exists there (in markup when autorun is specified)\n htmlResult = elem.querySelector('.code-result');\n }\n\n if (!htmlResult) {\n // otherwise create (or recreate if refresh)\n htmlResult = document.createElement('div');\n htmlResult.className = \"code-result code-example__result\";\n\n frame = document.createElement('iframe');\n frame.name = elem.id; // for console.log\n frame.className = 'code-result__iframe';\n\n if (elem.getAttribute('data-demo-height') === \"0\") {\n // this html has nothing to show\n htmlResult.style.display = 'none';\n } else if (elem.hasAttribute('data-demo-height')) {\n let height = +elem.getAttribute('data-demo-height');\n frame.style.height = height + 'px';\n }\n htmlResult.appendChild(frame);\n\n elem.appendChild(htmlResult);\n\n } else {\n frame = htmlResult.querySelector('iframe');\n }\n\n if (isTrusted && !frame.hasCustomConsoleLog) {\n // iframe may have been generated above OR already put in HTML by autorun\n frame.hasCustomConsoleLog = true;\n let consoleLogNative = frame.contentWindow.console.log.bind(frame.contentWindow.console);\n\n // bind console.log to the current elem.id\n frame.contentWindow.console.log = function(...args) {\n consoleLogNative(...args);\n\n let formattedArgs = consoleFormat(args);\n window.postMessage({type: 'console-log', log: formattedArgs, codeBoxId: elem.id}, '*');\n };\n }\n\n\n if (isTrusted) {\n let doc = frame.contentDocument || frame.contentWindow.document;\n\n doc.open();\n // console.log(code)\n doc.write(normalizeHtml(code));\n doc.close();\n\n if (!elem.hasAttribute('data-demo-height')) {\n resizeOnload.iframe(frame);\n }\n\n if (!(isFirstRun && elem.hasAttribute('data-autorun'))) {\n if (!isScrolledIntoView(htmlResult)) {\n htmlResult.scrollIntoView(false);\n }\n }\n\n } else {\n let form = document.createElement('form');\n form.style.display = 'none';\n form.method = 'POST';\n form.enctype = \"multipart/form-data\";\n form.action = config.lookatCodeUrlBase + \"/showhtml\";\n form.target = frame.name;\n\n let textarea = document.createElement('textarea');\n textarea.name = 'code';\n\n let normalizedCode = normalizeHtml(code);\n if (normalizedCode.includes('console.log')) {\n // insert after or , to ensure that console.log is replaced immediately\n normalizedCode = normalizedCode.replace(/|/im, '$&__LOOKATCODE_SCRIPT__');\n }\n textarea.value = normalizedCode;\n form.appendChild(textarea);\n\n frame.parentNode.insertBefore(form, frame.nextSibling);\n form.submit();\n form.remove();\n\n if (!(isFirstRun && elem.hasAttribute('data-autorun'))) {\n frame.onload = function() {\n\n if (!elem.hasAttribute('data-demo-height')) {\n resizeOnload.iframe(frame);\n }\n\n if (!isScrolledIntoView(htmlResult)) {\n htmlResult.scrollIntoView(false);\n }\n };\n }\n }\n\n }\n\n // Evaluates a script in a global context\n function globalEval(code) {\n let script = document.createElement( \"script\" );\n script.type = 'module';\n script.text = code;\n document.head.append(script);\n script.remove();\n }\n\n this.consoleLog = function(args) {\n // console.info(\"Codebox consoleLog\", args);\n if (!outputBox) {\n outputBox = document.createElement('div');\n outputBox.className = 'codebox__output';\n\n elem.append(outputBox);\n\n let label = document.createElement('div');\n label.className = 'codebox__output-label';\n label.innerHTML = t('prism.output');\n outputBox.append(label);\n }\n\n let logElem = document.createElement('div');\n logElem.className = 'codebox__output-line';\n logElem.innerHTML = args;\n outputBox.append(logElem);\n }\n\n function runJS() {\n\n if (elem.hasAttribute('data-global')) {\n if (!globalFrame) {\n globalFrame = document.createElement('iframe');\n globalFrame.className = 'js-frame';\n globalFrame.style.width = 0;\n globalFrame.style.height = 0;\n globalFrame.style.border = 'none';\n globalFrame.name = 'js-global-frame';\n document.body.appendChild(globalFrame);\n }\n\n let form = document.createElement('form');\n form.style.display = 'none';\n form.method = 'POST';\n form.enctype = \"multipart/form-data\";\n form.action = config.lookatCodeUrlBase + \"/showhtml\";\n form.target = 'js-global-frame';\n\n let scriptAttrs = elem.hasAttribute('data-module') ? ' type=\"module\"' : '';\n\n let textarea = document.createElement('textarea');\n textarea.name = 'code';\n textarea.value = normalizeHtml(`\\n${runCode}\\n`);\n form.appendChild(textarea);\n\n globalFrame.parentNode.insertBefore(form, globalFrame.nextSibling);\n form.submit();\n form.remove();\n } else if (isTrusted) {\n\n if (elem.hasAttribute('data-autorun') || elem.hasAttribute('data-module')) {\n // make sure functions from \"autorun\" go to global scope (eval has its own scope)\n globalEval(runCode);\n return;\n }\n\n try {\n window[\"eval\"].call(window, runCode);\n } catch (e) {\n alert(e.constructor.name + \": \" + e.message);\n }\n\n } else {\n\n if (elem.hasAttribute('data-refresh') && jsFrame) {\n jsFrame.remove();\n jsFrame = null;\n }\n\n if (!jsFrame) {\n // create iframe for js\n jsFrame = document.createElement('iframe');\n jsFrame.className = 'js-frame';\n jsFrame.src = config.lookatCodeUrlBase + '/showjs';\n jsFrame.style.width = 0;\n jsFrame.style.height = 0;\n jsFrame.style.border = 'none';\n jsFrame.onload = function() {\n // error with \"null\" target if fails to load jsFrame\n postJSFrame();\n };\n document.body.appendChild(jsFrame);\n } else {\n postJSFrame();\n }\n }\n\n }\n\n function edit() {\n\n let html;\n if (isHTML) {\n html = normalizeHtml(code);\n } else {\n // let codeIndented = code.replace(/^/gim, ' ');\n html = `\\n`;\n }\n\n let form = document.createElement('form');\n form.action = \"https://plnkr.co/edit/?p=preview\";\n form.method = \"POST\";\n form.target = \"_blank\";\n\n document.body.appendChild(form);\n\n let textarea = document.createElement('textarea');\n textarea.name = \"files[index.html]\";\n textarea.value = html;\n form.appendChild(textarea);\n\n let input = document.createElement('input');\n input.name = \"description\";\n input.value = \"Fork from \" + window.location;\n form.appendChild(input);\n\n form.submit();\n form.remove();\n }\n\n\n function normalizeHtml(code) {\n let hasDocType = code.match(/^\\s*\\n${result}\\n`;\n }\n\n result = '\\n' + result;\n\n return result;\n }\n\n\n function run() {\n\n if (outputBox) {\n outputBox.remove();\n outputBox = null;\n }\n\n if (isJS) {\n runJS();\n } else {\n runHTML();\n }\n isFirstRun = false;\n }\n\n\n}\n\n\n\nmodule.exports = CodeBox;\n","let delegate = require('client/delegate');\nlet makeLineNumbers = require('./makeLineNumbers');\n\nclass CodeTabsBox {\n constructor(elem) {\n if (window.ebookType) {\n return;\n }\n\n this.elem = elem;\n this.translateX = 0;\n\n this.switchesElem = elem.querySelector('[data-code-tabs-switches]');\n this.switchesElemItems = this.switchesElem.firstElementChild;\n this.arrowLeft = elem.querySelector('[data-code-tabs-left]');\n this.arrowRight = elem.querySelector('[data-code-tabs-right]');\n\n\n this.arrowLeft.onclick = (e) => {\n e.preventDefault();\n\n this.translateX = Math.max(0, this.translateX - this.switchesElem.offsetWidth);\n this.renderTranslate();\n };\n\n\n this.arrowRight.onclick = (e) => {\n e.preventDefault();\n\n this.translateX = Math.min(this.translateX + this.switchesElem.offsetWidth, this.switchesElemItems.offsetWidth - this.switchesElem.offsetWidth);\n this.renderTranslate();\n };\n\n let tabCurrent = this.elem.querySelector('.code-tabs__section_current');\n if (tabCurrent !== tabCurrent.parentElement.firstElementChild) { // if not result tab\n this.highlightTab(tabCurrent);\n }\n\n this.delegate('.code-tabs__switch', 'click', this.onSwitchClick);\n }\n\n onSwitchClick(e) {\n e.preventDefault();\n\n let siblings = e.delegateTarget.parentNode.children;\n let tabs = this.elem.querySelector('[data-code-tabs-content]').children;\n\n\n let selectedIndex;\n for (let i = 0; i < siblings.length; i++) {\n let switchElem = siblings[i];\n let tabElem = tabs[i];\n if (switchElem === e.delegateTarget) {\n selectedIndex = i;\n tabElem.classList.add('code-tabs__section_current');\n switchElem.classList.add('code-tabs__switch_current');\n } else {\n tabElem.classList.remove('code-tabs__section_current');\n switchElem.classList.remove('code-tabs__switch_current');\n }\n }\n\n if (selectedIndex === 0) {\n this.elem.classList.add('code-tabs_result_on');\n } else {\n this.elem.classList.remove('code-tabs_result_on');\n\n this.highlightTab(tabs[selectedIndex]);\n }\n\n }\n\n highlightTab(tab) {\n if (tab.highlighted) return;\n let preElem = tab.querySelector('pre');\n let codeElem = preElem.querySelector('code');\n Prism.highlightElement(codeElem);\n\n preElem.insertAdjacentHTML(\"afterBegin\", makeLineNumbers(preElem.innerHTML));\n\n tab.highlighted = true;\n }\n\n renderTranslate() {\n this.switchesElemItems.style.transform = 'translateX(-' + this.translateX + 'px)';\n if (this.translateX === 0) {\n this.arrowLeft.setAttribute('disabled', '');\n } else {\n this.arrowLeft.removeAttribute('disabled');\n }\n\n if (this.translateX === this.switchesElemItems.offsetWidth - this.switchesElem.offsetWidth) {\n this.arrowRight.setAttribute('disabled', '');\n } else {\n this.arrowRight.removeAttribute('disabled');\n }\n\n }\n}\n\n\ndelegate.delegateMixin(CodeTabsBox.prototype);\n\n\nmodule.exports = CodeTabsBox;\n","\n// in node.js:\n// global.Prism = Prism;\nrequire('prismjs/components/prism-core.js');\n\nrequire('prismjs/components/prism-markup.js');\nrequire('prismjs/components/prism-css.js');\nrequire('prismjs/components/prism-css-extras.js');\nrequire('prismjs/components/prism-clike.js');\nrequire('prismjs/components/prism-javascript.js');\nrequire('prismjs/components/prism-http.js');\nrequire('prismjs/components/prism-scss.js');\nrequire('prismjs/components/prism-sql.js');\nrequire('prismjs/components/prism-java.js');\nrequire('prismjs/components/prism-bash.js');\n\n// for iBooks to use monospace font\nPrism.hooks.add('wrap', function(env) {\n if (env.tag === 'span') {\n env.tag = 'code';\n }\n});\n","// prism requires data-manual attribute on the current script NOT to highlightAll automatically\nlet script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\nscript.setAttribute('data-manual', 1);\n\nrequire('./core');\nrequire('./sql')(Prism);\n\nlet CodeBox = require('./codeBox');\nlet CodeTabsBox = require('./codeTabsBox');\nlet proxyConsoleLog = require('./proxyConsoleLog');\n\nfunction initCodeBoxes(container) {\n // highlight inline\n let elems = container.querySelectorAll('.code-example:not([data-prism-highlighted])');\n\n for (let elem of elems) {\n new CodeBox(elem);\n elem.setAttribute('data-prism-highlighted', '1');\n }\n}\n\n\nfunction initCodeTabsBox(container) {\n\n let elems = container.querySelectorAll('div.code-tabs:not([data-prism-highlighted])');\n\n for (let elem of elems) {\n new CodeTabsBox(elem);\n elem.setAttribute('data-prism-highlighted', '1');\n }\n\n}\n\nexports.init = function () {\n document.removeEventListener('DOMContentLoaded', Prism.highlightAll);\n\n document.addEventListener('DOMContentLoaded', function() {\n highlight(document);\n });\n\n proxyConsoleLog();\n};\n\n\nfunction highlight(elem) {\n initCodeBoxes(elem);\n initCodeTabsBox(elem);\n\n if (window.ebookType) {\n // these elements are not needed for ebook and (possibly?) break things\n for(let elem of document.querySelectorAll('.line-numbers-rows')) {\n elem.remove();\n }\n }\n}\n\nexports.highlight = highlight;\n","module.exports = function makeHighlight(ranges) {\n\n if (!ranges || !ranges.length) {\n return '';\n }\n\n let results = [];\n\n for (let range of ranges) {\n\n let mask = ``;\n\n mask += '\\n'.repeat(range.start);\n\n if (range.end) {\n mask += `${'\\n'.repeat(range.end - range.start + 1)}`;\n } else if (range.cols) {\n for (let i = 0; i < range.cols.length; i++) {\n let col = range.cols[i];\n let prevCol = (i === 0) ? null : range.cols[i - 1];\n mask += ' '.repeat((prevCol ? (col.start - prevCol.end) : col.start));\n mask += `${' '.repeat(col.end - col.start)}`;\n }\n }\n\n mask += '';\n\n results.push(mask);\n }\n\n // first bigger (lower) block\n // results.reverse();\n\n return results.join('');\n\n};\n","\n// const escapeHtml = require('escape-html');\n\nmodule.exports = function makeLineNumbers(html) {\n\n let linesNum = (1 + html.split('\\n').length);\n let lineNumbersWrapper;\n\n let lines = new Array(linesNum);\n lines = lines.join('');\n\n lineNumbersWrapper = `${lines}`;\n\n return lineNumbersWrapper;\n};\n","let consoleFormat = require('engine/console/consoleFormat');\n\nmodule.exports = function proxyConsoleLog() {\n // use window.console.log to work around \"drop_console: true\" in webpack uglify settings\n window.consoleLogNative = window.console.log.bind(console);\n\n // console.log for the main window\n // js code always has globalThis.__codeBoxId\n // trusted iframe uses its own console.log (created in codeBox.js)\n // untrusted uses lookatcode/consoleLog module and window.name\n console.log = function(...args) {\n consoleLogNative(...args);\n\n let formattedArgs = consoleFormat(args);\n // in the main window we have: window.__codeBoxId,\n let message = {\n type: 'console-log',\n log: formattedArgs,\n codeBoxId: window.__codeBoxId\n };\n\n // console.info(\"message sent\", message);\n window.postMessage(message, '*');\n };\n\n window.addEventListener('message', ({source, data}) => {\n\n // message from parent frame? never happens for console-log\n if (source != window && source == window.parent) return;\n\n if (data.type != 'console-log') return;\n // console.info(\"message received\", data);\n\n let codeBoxElem = document.getElementById(data.codeBoxId);\n if (!codeBoxElem) {\n console.error(\"No codeBoxElem\", data);\n return;\n }\n\n let codeBox = codeBoxElem.codeBox;\n codeBox.consoleLog(data.log);\n\n });\n\n};","module.exports = (Prism) => {\n Prism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [\n {\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n },\n /@[\\w.$]+/\n ],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'identifier': {\n pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n greedy: true,\n lookbehind: true,\n inside: {\n 'punctuation': /^`|`$/\n }\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n 'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n 'boolean': /\\b(?:FALSE|NULL|TRUE)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/,\n 'error': /^\\s*ERROR/\n };\n};","\nfunction throttle(func, ms) {\n\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n\n func.apply(this, arguments);\n\n isThrottled = true;\n\n setTimeout(() => {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nmodule.exports = throttle;\n","/**\n * class BabelFish\n *\n * Internalization and localization library that makes i18n and l10n fun again.\n *\n * ##### Example\n *\n * ```javascript\n * var BabelFish = require('babelfish'),\n * i18n = new BabelFish();\n * ```\n *\n * or\n *\n * ```javascript\n * var babelfish = require('babelfish'),\n * i18n = babelfish();\n * ```\n **/\n\n\n'use strict';\n\n\nvar parser = require('./lib/parser');\nvar plural = require('plurals-cldr');\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isNumber(obj) { return !isNaN(obj) && isFinite(obj); }\nfunction isBoolean(obj) { return obj === true || obj === false; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\n\n/*istanbul ignore next*/\nvar isArray = Array.isArray || function _isArray(obj) {\n return _class(obj) === '[object Array]';\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// The following two utilities (forEach and extend) are modified from Underscore\n//\n// http://underscorejs.org\n//\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\n//\n// Underscore may be freely distributed under the MIT license\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar nativeForEach = Array.prototype.forEach;\n\n\n// The cornerstone, an `each` implementation, aka `forEach`.\n// Handles objects with the built-in `forEach`, arrays, and raw objects.\n// Delegates to **ECMAScript 5**'s native `forEach` if available.\n/*istanbul ignore next*/\nfunction forEach(obj, iterator, context) {\n if (obj === null) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i += 1) {\n iterator.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n }\n}\n\n\nvar formatRegExp = /%[sdj%]/g;\n\n/*istanbul ignore next*/\nfunction format(f) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') { return '%'; }\n if (i >= len) { return x; }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n return JSON.stringify(args[i++]);\n default:\n return x;\n }\n });\n return str;\n}\n\n\n// helpers\n////////////////////////////////////////////////////////////////////////////////\n\n\n// Last resort locale, that exists for sure\nvar GENERIC_LOCALE = 'en';\n\n\n// flatten(obj) -> Object\n//\n// Flattens object into one-level dictionary.\n//\n// ##### Example\n//\n// var obj = {\n// abc: { def: 'foo' },\n// hij: 'bar'\n// };\n//\n// flatten(obj);\n// // -> { 'abc.def': 'foo', 'hij': 'bar' };\n//\nfunction flatten(obj) {\n var params = {};\n\n forEach(obj || {}, function (val, key) {\n if (val && typeof val === 'object') {\n forEach(flatten(val), function (sub_val, sub_key) {\n params[key + '.' + sub_key] = sub_val;\n });\n return;\n }\n\n params[key] = val;\n });\n\n return params;\n}\n\n\nvar keySeparator = '#@$';\n\nfunction makePhraseKey(locale, phrase) {\n return locale + keySeparator + phrase;\n}\n\n\nfunction searchPhraseKey(self, locale, phrase) {\n var key = makePhraseKey(locale, phrase);\n var storage = self._storage;\n\n // direct search first\n if (storage.hasOwnProperty(key)) { return key; }\n\n // don't try follbacks for default locale\n if (locale === self._defaultLocale) { return null; }\n\n // search via fallback map cache\n var fb_cache = self._fallbacks_cache;\n if (fb_cache.hasOwnProperty(key)) { return fb_cache[key]; }\n\n // scan fallbacks & cache result\n var fb = self._fallbacks[locale] || [ self._defaultLocale ];\n var fb_key;\n\n for (var i = 0, l = fb.length; i < l; i++) {\n fb_key = makePhraseKey(fb[i], phrase);\n if (storage.hasOwnProperty(fb_key)) {\n // found - update cache and return result\n fb_cache[key] = fb_key;\n return fb_cache[key];\n }\n }\n\n // mark fb_cache entry empty for fast lookup on next request\n fb_cache[key] = null;\n return null;\n}\n\n\nfunction pluralizer(lang, val, forms) {\n var idx = plural.indexOf(lang, val);\n\n if (idx === -1) {\n return format('[pluralizer for \"%s\" locale not found]', lang);\n }\n\n if (typeof forms[idx] === 'undefined') {\n return format(\n '[plural form %d (\"%s\") not found in translation]',\n idx, plural.forms(lang)[idx]\n );\n }\n\n return forms[idx];\n}\n\n// public api (module)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * new BabelFish([defaultLocale = 'en'])\n *\n * Initiates new instance of BabelFish.\n *\n * __Note!__ you can omit `new` for convenience, direct call will return\n * new instance too.\n **/\nfunction BabelFish(defaultLocale) {\n if (!(this instanceof BabelFish)) { return new BabelFish(defaultLocale); }\n\n this._defaultLocale = defaultLocale ? String(defaultLocale) : GENERIC_LOCALE;\n\n // hash of locale => [ fallback1, fallback2, ... ] pairs\n this._fallbacks = {};\n\n // fallback cache for each phrase\n //\n // {\n // locale_key: fallback_key\n // }\n //\n // fallback_key can be null if search failed\n //\n this._fallbacks_cache = {};\n\n // storage of compiled translations\n //\n // {\n // locale + @#$ + phrase_key: {\n // locale: locale name - can be different for fallbacks\n // translation: original translation phrase or data variable/object\n // raw: true/false - does translation contain plain data or\n // string to compile\n // compiled: copiled translation fn or plain string\n // }\n // ...\n // }\n //\n this._storage = {};\n\n // cache for complex plural parts (with params)\n //\n // {\n // language: new BabelFish(language)\n // }\n //\n this._plurals_cache = {};\n}\n\n\n// public api (instance)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * BabelFish#addPhrase(locale, phrase, translation [, flattenLevel]) -> BabelFish\n * - locale (String): Locale of translation\n * - phrase (String|Null): Phrase ID, e.g. `apps.forum`\n * - translation (String|Object|Array|Number|Boolean): Translation or an object\n * with nested phrases, or a pure object.\n * - flattenLevel (Number|Boolean): Optional, 0..infinity. `Infinity` by default.\n * Define \"flatten\" deepness for loaded object. You can also use\n * `true` as `0` or `false` as `Infinity`.\n *\n *\n * ##### Flatten & using JS objects\n *\n * By default all nested properties are normalized to strings like \"foo.bar.baz\",\n * and if value is string, it will be compiled with babelfish notation.\n * If deepness is above `flattenLevel` OR value is not object and not string,\n * it will be used \"as is\". Note, only JSON stringifiable data should be used.\n *\n * In short: you can safely pass `Array`, `Number` or `Boolean`. For objects you\n * should define flatten level or disable it compleetely, to work with pure data.\n *\n * Pure objects can be useful to prepare bulk data for external libraries, like\n * calendars, time/date generators and so on.\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} %{ответ|ответа|ответов}:count в теме');\n *\n * // equals to:\n * i18n.addPhrase('ru-RU',\n * 'apps.forums',\n * { replies_count: '#{count} %{ответ|ответа|ответов}:count в теме' });\n * ```\n **/\nBabelFish.prototype.addPhrase = function _addPhrase(locale, phrase, translation, flattenLevel) {\n var self = this, fl;\n\n // Calculate flatten level. Infinity by default\n if (isBoolean(flattenLevel)) {\n fl = flattenLevel ? Infinity : 0;\n } else if (isNumber(flattenLevel)) {\n fl = Math.floor(flattenLevel);\n if (fl < 0) {\n throw new TypeError('Invalid flatten level (should be >= 0).');\n }\n } else {\n fl = Infinity;\n }\n\n if (isObject(translation) && (fl > 0)) {\n // recursive object walk, until flattenLevel allows\n forEach(translation, function (val, key) {\n self.addPhrase(locale, (phrase ? phrase + '.' : '') + key, val, fl - 1);\n });\n return this;\n }\n\n if (isString(translation)) {\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: false\n };\n } else if (isArray(translation) ||\n isNumber(translation) ||\n isBoolean(translation) ||\n (fl === 0 && isObject(translation))) {\n // Pure objects are stored without compilation\n // Limit allowed types.\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: true\n };\n } else {\n // `Regex`, `Date`, `Uint8Array` and others types will\n // fuckup `stringify()`. Don't allow here.\n // `undefined` also means wrong param in real life.\n // `null` can be allowed when examples from real life available.\n throw new TypeError('Invalid translation - [String|Object|Array|Number|Boolean] expected.');\n }\n\n self._fallbacks_cache = {};\n\n return this;\n};\n\n\n/**\n * BabelFish#setFallback(locale, fallbacks) -> BabelFish\n * - locale (String): Target locale\n * - fallbacks (Array): List of fallback locales\n *\n * Set fallbacks for given locale.\n *\n * When `locale` has no translation for the phrase, `fallbacks[0]` will be\n * tried, if translation still not found, then `fallbacks[1]` will be tried\n * and so on. If none of fallbacks have translation,\n * default locale will be tried as last resort.\n *\n * ##### Errors\n *\n * - throws `Error`, when `locale` equals default locale\n *\n * ##### Example\n *\n * ```javascript\n * i18n.setFallback('ua-UK', ['ua', 'ru']);\n * ```\n **/\nBabelFish.prototype.setFallback = function _setFallback(locale, fallbacks) {\n var def = this._defaultLocale;\n\n if (def === locale) {\n throw new Error(\"Default locale can't have fallbacks\");\n }\n\n var fb = isArray(fallbacks) ? fallbacks.slice() : [ fallbacks ];\n if (fb[fb.length - 1] !== def) { fb.push(def); }\n\n this._fallbacks[locale] = fb;\n this._fallbacks_cache = {};\n\n return this;\n};\n\n\nvar CAN_HAVE_DIRECTIVES_RE = /#\\{|\\(\\(|\\\\\\\\/;\n\n// Compiles given string into function. Used to compile phrases,\n// which contains `plurals`, `variables`, etc.\nfunction compile(self, str, locale) {\n var nodes, buf, key, strict_exec, forms_exec, plurals_cache;\n\n // Quick check to avoid parse in most cases :)\n if (!CAN_HAVE_DIRECTIVES_RE.test(str)) { return str; }\n\n nodes = parser.parse(str);\n\n if (nodes.length === 1 && nodes[0].type === 'literal') {\n return nodes[0].text;\n }\n\n // init cache instance for plural parts, if not exists yet.\n if (!self._plurals_cache[locale]) {\n self._plurals_cache[locale] = new BabelFish(locale);\n }\n plurals_cache = self._plurals_cache[locale];\n\n buf = [];\n buf.push([ 'var str = \"\", strict, strict_exec, forms, forms_exec, plrl, cache, loc, loc_plzr, anchor;' ]);\n buf.push('params = flatten(params);');\n\n forEach(nodes, function (node) {\n if (node.type === 'literal') {\n buf.push(format('str += %j;', node.text));\n return;\n }\n\n if (node.type === 'variable') {\n key = node.anchor;\n buf.push(format(\n 'str += (\"undefined\" === typeof (params[%j])) ? \"[missed variable: %s]\" : params[%j];',\n key, key, key\n ));\n return;\n }\n\n // should never happen\n /*istanbul ignore next*/\n if (node.type !== 'plural') { throw new Error('Unknown node type'); }\n\n //\n // Compile plural\n //\n\n key = node.anchor;\n // check if plural parts are plain strings or executable,\n // and add executable to \"cache\" instance of babelfish\n // plural part text will be used as translation key\n strict_exec = {};\n forEach(node.strict, function (text, k) {\n var parsed = parser.parse(text);\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n strict_exec[k] = false;\n // patch with unescaped value for direct extract\n node.strict[k] = parsed[0].text;\n return;\n }\n\n strict_exec[k] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n\n forms_exec = {};\n forEach(node.forms, function (text, idx) {\n var parsed = parser.parse(text), unescaped;\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n // patch with unescaped value for direct extract\n unescaped = parsed[0].text;\n node.forms[idx] = unescaped;\n forms_exec[unescaped] = false;\n return;\n }\n\n forms_exec[text] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n /*eslint-disable space-in-parens*/\n buf.push(format('loc = %j;', locale));\n buf.push(format('loc_plzr = %j;', locale.split(/[-_]/)[0]));\n buf.push(format('anchor = params[%j];', key));\n buf.push(format('cache = this._plurals_cache[loc];'));\n buf.push(format('strict = %j;', node.strict));\n buf.push(format('strict_exec = %j;', strict_exec));\n buf.push(format('forms = %j;', node.forms));\n buf.push(format('forms_exec = %j;', forms_exec));\n buf.push( 'if (+(anchor) != anchor) {');\n buf.push(format(' str += \"[invalid plurals amount: %s(\" + anchor + \")]\";', key));\n buf.push( '} else {');\n buf.push( ' if (strict[anchor] !== undefined) {');\n buf.push( ' plrl = strict[anchor];');\n buf.push( ' str += strict_exec[anchor] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' } else {');\n buf.push( ' plrl = pluralizer(loc_plzr, +anchor, forms);');\n buf.push( ' str += forms_exec[plrl] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' }');\n buf.push( '}');\n return;\n });\n\n buf.push('return str;');\n\n /*eslint-disable no-new-func*/\n return new Function('params', 'flatten', 'pluralizer', buf.join('\\n'));\n}\n\n\n/**\n * BabelFish#translate(locale, phrase[, params]) -> String\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - params (Object|Number|String): Params for translation. `Number` & `String`\n * will be coerced to `{ count: X, value: X }`\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} ((ответ|ответа|ответов)) в теме');\n *\n * // ...\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 1 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 1});\n * // -> '1 ответ'\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 2 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 2);\n * // -> '2 ответa'\n * ```\n **/\nBabelFish.prototype.translate = function _translate(locale, phrase, params) {\n var key = searchPhraseKey(this, locale, phrase);\n var data;\n\n if (!key) {\n return locale + ': No translation for [' + phrase + ']';\n }\n\n data = this._storage[key];\n\n // simple string or other pure object\n if (data.raw) { return data.translation; }\n\n // compile data if not done yet\n if (!data.hasOwnProperty('compiled')) {\n // We should use locale from phrase, because of possible fallback,\n // to keep plural locales in sync.\n data.compiled = compile(this, data.translation, data.locale);\n }\n\n // return simple string immediately\n if (!isFunction(data.compiled)) {\n return data.compiled;\n }\n\n //\n // Generate \"complex\" phrase\n //\n\n // Sugar: coerce numbers & strings to { count: X, value: X }\n if (isNumber(params) || isString(params)) {\n params = { count: params, value: params };\n }\n\n return data.compiled.call(this, params, flatten, pluralizer);\n};\n\n\n/**\n * BabelFish#hasPhrase(locale, phrase) -> Boolean\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Returns whenever or not there's a translation of a `phrase`.\n **/\nBabelFish.prototype.hasPhrase = function _hasPhrase(locale, phrase, noFallback) {\n return noFallback ?\n this._storage.hasOwnProperty(makePhraseKey(locale, phrase))\n :\n searchPhraseKey(this, locale, phrase) ? true : false;\n};\n\n\n/**\n * BabelFish#getLocale(locale, phrase) -> String|null\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Similar to [[BabelFish#hasPhrase]], but returns real locale of requested\n * phrase, or `null` if nothing found. Can be useful for dynamic dependencies\n * init. For example, when you fetch i10n config as single object and create\n * phrases from it's content.\n **/\nBabelFish.prototype.getLocale = function _getLocale(locale, phrase, noFallback) {\n if (noFallback) {\n return this._storage.hasOwnProperty(makePhraseKey(locale, phrase)) ? locale : null;\n }\n\n var key = searchPhraseKey(this, locale, phrase);\n\n return key ? key.split(keySeparator, 2)[0] : null;\n};\n\n\n/** alias of: BabelFish#translate\n * BabelFish#t(locale, phrase[, params]) -> String\n **/\nBabelFish.prototype.t = BabelFish.prototype.translate;\n\n\n/**\n * BabelFish#stringify(locale) -> String\n * - locale (String): Locale of translation\n *\n * Returns serialized locale data, including fallbacks.\n * It can be loaded back via `load()` method.\n **/\nBabelFish.prototype.stringify = function _stringify(locale) {\n var self = this;\n\n // Collect unique keys\n var unique = {};\n\n forEach(this._storage, function (val, key) {\n unique[key.split(keySeparator)[1]] = true;\n });\n\n // Collect phrases (with fallbacks)\n var result = {};\n\n forEach(unique, function (val, key) {\n var k = searchPhraseKey(self, locale, key);\n // if key was just a garbage from another\n // and doesn't fit into fallback chain for current locale - skip it\n if (!k) { return; }\n // create namespace if not exists\n var l = self._storage[k].locale;\n if (!result[l]) { result[l] = {}; }\n result[l][key] = self._storage[k].translation;\n });\n\n var out = {\n fallback: {},\n locales: result\n };\n\n // Get fallback rule. Cut auto-added fallback to default locale\n var fallback = (self._fallbacks[locale] || []).slice(0, -1);\n if (fallback.length) {\n out.fallback[locale] = fallback;\n }\n\n return JSON.stringify(out);\n};\n\n\n/**\n * BabelFish#load(data) -> BabelFish\n * - data (Object|String): data from `stringify()` method, as object or string.\n *\n * Batch load phrases data, prepared with `stringify()` method.\n * Useful at browser side.\n **/\nBabelFish.prototype.load = function _load(data) {\n var self = this;\n\n if (isString(data)) { data = JSON.parse(data); }\n\n forEach(data.locales, function (phrases, locale) {\n forEach(phrases, function (translation, key) {\n self.addPhrase(locale, key, translation, 0);\n });\n });\n\n forEach(data.fallback, function (rule, locale) {\n self.setFallback(locale, rule);\n });\n\n return this;\n};\n\n// export module\nmodule.exports = BabelFish;\n","module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = peg$FAILED,\n peg$c2 = \"((\",\n peg$c3 = { type: \"literal\", value: \"((\", description: \"\\\"((\\\"\" },\n peg$c4 = \"))\",\n peg$c5 = { type: \"literal\", value: \"))\", description: \"\\\"))\\\"\" },\n peg$c6 = null,\n peg$c7 = function(forms, anchor) {\n return {\n type: 'plural',\n forms: regularForms(forms),\n strict: strictForms(forms),\n anchor: anchor || 'count'\n };\n },\n peg$c8 = \"|\",\n peg$c9 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c10 = function(part, more) {\n return [part].concat(more);\n },\n peg$c11 = function(part) {\n return [part];\n },\n peg$c12 = \"=\",\n peg$c13 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c14 = /^[0-9]/,\n peg$c15 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c16 = \" \",\n peg$c17 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c18 = function(strict, form) {\n return {\n strict: strict.join(''),\n text: form.join('')\n }\n },\n peg$c19 = function() {\n return {\n text: text()\n };\n },\n peg$c20 = \"\\\\\",\n peg$c21 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c22 = /^[\\\\|)(]/,\n peg$c23 = { type: \"class\", value: \"[\\\\\\\\|)(]\", description: \"[\\\\\\\\|)(]\" },\n peg$c24 = function(char) {\n return char;\n },\n peg$c25 = void 0,\n peg$c26 = { type: \"any\", description: \"any character\" },\n peg$c27 = function() {\n return text();\n },\n peg$c28 = \":\",\n peg$c29 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c30 = function(name) {\n return name;\n },\n peg$c31 = \"#{\",\n peg$c32 = { type: \"literal\", value: \"#{\", description: \"\\\"#{\\\"\" },\n peg$c33 = \"}\",\n peg$c34 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c35 = function(anchor) {\n return {\n type: 'variable',\n anchor: anchor\n };\n },\n peg$c36 = \".\",\n peg$c37 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c38 = function() {\n return text()\n },\n peg$c39 = /^[a-zA-Z_$]/,\n peg$c40 = { type: \"class\", value: \"[a-zA-Z_$]\", description: \"[a-zA-Z_$]\" },\n peg$c41 = /^[a-zA-Z0-9_$]/,\n peg$c42 = { type: \"class\", value: \"[a-zA-Z0-9_$]\", description: \"[a-zA-Z0-9_$]\" },\n peg$c43 = function(lc) { return lc; },\n peg$c44 = function(literal_chars) {\n return {\n type: 'literal',\n text: literal_chars.join('')\n };\n },\n peg$c45 = /^[\\\\#()|]/,\n peg$c46 = { type: \"class\", value: \"[\\\\\\\\#()|]\", description: \"[\\\\\\\\#()|]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseplural() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseplural_forms();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s3 = peg$c4;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseplural_anchor();\n if (s4 === peg$FAILED) {\n s4 = peg$c6;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c7(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseplural_forms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseplural_forms();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_part() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n } else {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 32) {\n s3 = peg$c16;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c6;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseplural_char();\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseplural_char();\n }\n } else {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseplural_char();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseplural_char();\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c22.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s2 = peg$c4;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c25;\n } else {\n peg$currPos = s1;\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n }\n\n return s0;\n }\n\n function peg$parseplural_anchor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c28;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parsevariable() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c33;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifier_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c36;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseidentifier();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseidentifier();\n }\n } else {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseidentifier_part();\n }\n\n return s0;\n }\n\n function peg$parseidentifier_part() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n if (input.length > peg$currPos) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\n }\n }\n\n return s0;\n }\n\n\n function regularForms(forms) {\n var result = [];\n for (var i=0; i= 0; }\n\n\nadd([ 'af', 'an', 'asa', 'bem', 'bez', 'bg', 'brx', 'ce', 'cgg', 'chr', 'ckb', 'dv', 'ee', 'el', 'eo', 'eu', 'fo', 'fur', 'gsw', 'ha', 'haw', 'jgo', 'jmc', 'kaj', 'kcg', 'kkj', 'kl', 'ks', 'ksb', 'ku', 'ky', 'lb', 'lg', 'mas', 'mgo', 'ml', 'mn', 'nah', 'nb', 'nd', 'nn', 'nnh', 'no', 'nr', 'ny', 'nyn', 'om', 'os', 'pap', 'ps', 'rm', 'rof', 'rwk', 'saq', 'sd', 'sdh', 'seh', 'sn', 'so', 'ss', 'ssy', 'st', 'syr', 'ta', 'te', 'teo', 'tig', 'tn', 'tr', 'ts', 'ug', 'uz', 've', 'vo', 'vun', 'wae', 'xh', 'xog' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ak', 'bho', 'guw', 'ln', 'mg', 'nso', 'pa', 'ti', 'wa' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) ? 0 : 1;\n }\n});\n\nadd([ 'am', 'doi', 'fa', 'kn', 'pcm', 'zu' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ar', 'ars' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : B(3, 10, n100) ? 3 : B(11, 99, n100) ? 4 : 5;\n }\n});\n\nadd([ 'as', 'bn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 1, 5, 7, 8, 9, 10 ], n) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'ast', 'de', 'et', 'fi', 'fy', 'gl', 'ia', 'io', 'nl', 'sw', 'ur', 'yi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n }\n});\n\nadd([ 'az' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 3, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100, i1000 = i % 1000;\n return IN([ 1, 2, 5, 7, 8 ], i10) || IN([ 20, 50, 70, 80 ], i100) ? 0 : IN([ 3, 4 ], i10) || IN([ 100, 200, 300, 400, 500, 600, 700, 800, 900 ], i1000) ? 1 : i === 0 || i10 === 6 || IN([ 40, 60, 90 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'bal' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'be' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : B(2, 4, n10) && !B(12, 14, n100) ? 1 : n10 === 0 || B(5, 9, n10) || B(11, 14, n100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 2, 3 ], n10) && !IN([ 12, 13 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'bm', 'bo', 'dz', 'hnj', 'id', 'ig', 'ii', 'ja', 'jbo', 'jv', 'jw', 'kde', 'kea', 'km', 'ko', 'lkt', 'my', 'nqo', 'osa', 'sah', 'ses', 'sg', 'su', 'th', 'to', 'tpi', 'und', 'wo', 'yo', 'yue', 'zh' ], {\n});\n\nadd([ 'br' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n10 = n % 10, n100 = n % 100, n1000000 = n % 1000000;\n return n10 === 1 && !IN([ 11, 71, 91 ], n100) ? 0 : n10 === 2 && !IN([ 12, 72, 92 ], n100) ? 1 : (B(3, 4, n10) || n10 === 9) && (!B(10, 19, n100) && !B(70, 79, n100) && !B(90, 99, n100)) ? 2 : n !== 0 && n1000000 === 0 ? 3 : 4;\n }\n});\n\nadd([ 'bs', 'hr', 'sh', 'sr' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) || B(2, 4, f10) && !B(12, 14, f100) ? 1 : 2;\n }\n});\n\nadd([ 'ca' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 3 ], n) ? 0 : n === 2 ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'ceb' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n }\n});\n\nadd([ 'cs', 'sk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : B(2, 4, i) && v === 0 ? 1 : v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'cy' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n === 3 ? 3 : n === 6 ? 4 : 5;\n },\n o: [ 0, 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return IN([ 0, 7, 8, 9 ], n) ? 0 : n === 1 ? 1 : n === 2 ? 2 : IN([ 3, 4 ], n) ? 3 : IN([ 5, 6 ], n) ? 4 : 5;\n }\n});\n\nadd([ 'da' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n return n === 1 || t !== 0 && IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'dsb', 'hsb' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v, f) {\n var i100 = i % 100, f100 = f % 100;\n return v === 0 && i100 === 1 || f100 === 1 ? 0 : v === 0 && i100 === 2 || f100 === 2 ? 1 : v === 0 && B(3, 4, i100) || B(3, 4, f100) ? 2 : 3;\n }\n});\n\nadd([ 'en' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && n100 !== 11 ? 0 : n10 === 2 && n100 !== 12 ? 1 : n10 === 3 && n100 !== 13 ? 2 : 3;\n }\n});\n\nadd([ 'es' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return n === 1 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ff', 'kab' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n }\n});\n\nadd([ 'fil', 'tl' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, f10 = f % 10;\n return v === 0 && IN([ 1, 2, 3 ], i) || v === 0 && !IN([ 4, 6, 9 ], i10) || v !== 0 && !IN([ 4, 6, 9 ], f10) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'fr' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return IN([ 0, 1 ], i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'ga' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : B(3, 6, n) ? 2 : B(7, 10, n) ? 3 : 4;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'gd' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : (B(3, 10, n) || B(13, 19, n)) ? 2 : 3;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return IN([ 1, 11 ], n) ? 0 : IN([ 2, 12 ], n) ? 1 : IN([ 3, 13 ], n) ? 2 : 3;\n }\n});\n\nadd([ 'gu', 'hi' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'gv' ], {\n c: [ 1, 2, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 ? 0 : v === 0 && i10 === 2 ? 1 : v === 0 && IN([ 0, 20, 40, 60, 80 ], i100) ? 2 : v !== 0 ? 3 : 4;\n }\n});\n\nadd([ 'he' ], {\n c: [ 1, 2, 4, 5 ],\n cFn: function (n, i, v) {\n var n10 = n % 10;\n return i === 1 && v === 0 ? 0 : i === 2 && v === 0 ? 1 : v === 0 && !B(0, 10, n) && n10 === 0 ? 2 : 3;\n }\n});\n\nadd([ 'hu' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return IN([ 1, 5 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'hy' ], {\n c: [ 1, 5 ],\n cFn: function (n, i) {\n return IN([ 0, 1 ], i) ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'is' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f, t) {\n var i10 = i % 10, i100 = i % 100;\n return t === 0 && i10 === 1 && i100 !== 11 || t !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'it' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'iu', 'naq', 'sat', 'se', 'sma', 'smi', 'smj', 'smn', 'sms' ], {\n c: [ 1, 2, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : n === 2 ? 1 : 2;\n }\n});\n\nadd([ 'ka' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n, i) {\n var i100 = i % 100;\n return i === 1 ? 0 : i === 0 || (B(2, 20, i100) || i100 === 40 || i100 === 60 || i100 === 80) ? 1 : 2;\n }\n});\n\nadd([ 'kk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return n10 === 6 || n10 === 9 || n10 === 0 && n !== 0 ? 0 : 1;\n }\n});\n\nadd([ 'ksh' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : 2;\n }\n});\n\nadd([ 'kw' ], {\n c: [ 0, 1, 2, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100, n1000 = n % 1000, n100000 = n % 100000, n1000000 = n % 1000000;\n return n === 0 ? 0 : n === 1 ? 1 : IN([ 2, 22, 42, 62, 82 ], n100) || n1000 === 0 && (B(1000, 20000, n100000) || n100000 === 40000 || n100000 === 60000 || n100000 === 80000) || n !== 0 && n1000000 === 100000 ? 2 : IN([ 3, 23, 43, 63, 83 ], n100) ? 3 : n !== 1 && IN([ 1, 21, 41, 61, 81 ], n100) ? 4 : 5;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n100 = n % 100;\n return B(1, 4, n) || (B(1, 4, n100) || B(21, 24, n100) || B(41, 44, n100) || B(61, 64, n100) || B(81, 84, n100)) ? 0 : n === 5 || n100 === 5 ? 1 : 2;\n }\n});\n\nadd([ 'lag' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i) {\n return n === 0 ? 0 : IN([ 0, 1 ], i) && n !== 0 ? 1 : 2;\n }\n});\n\nadd([ 'lij' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return (n === 11 || n === 8 || B(80, 89, n) || B(800, 899, n)) ? 0 : 1;\n }\n});\n\nadd([ 'lo', 'ms', 'vi' ], {\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'lt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 1 && !B(11, 19, n100) ? 0 : B(2, 9, n10) && !B(11, 19, n100) ? 1 : f !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'lv', 'prg' ], {\n c: [ 0, 1, 5 ],\n cFn: function (n, i, v, f) {\n var n10 = n % 10, n100 = n % 100, f100 = f % 100, f10 = f % 10;\n return n10 === 0 || B(11, 19, n100) || v === 2 && B(11, 19, f100) ? 0 : n10 === 1 && n100 !== 11 || v === 2 && f10 === 1 && f100 !== 11 || v !== 2 && f10 === 1 ? 1 : 2;\n }\n});\n\nadd([ 'mk' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n var i10 = i % 10, i100 = i % 100, f10 = f % 10, f100 = f % 100;\n return v === 0 && i10 === 1 && i100 !== 11 || f10 === 1 && f100 !== 11 ? 0 : 1;\n },\n o: [ 1, 2, 4, 5 ],\n oFn: function (n, i) {\n var i10 = i % 10, i100 = i % 100;\n return i10 === 1 && i100 !== 11 ? 0 : i10 === 2 && i100 !== 12 ? 1 : IN([ 7, 8 ], i10) && !IN([ 17, 18 ], i100) ? 2 : 3;\n }\n});\n\nadd([ 'mo', 'ro' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i, v) {\n var n100 = n % 100;\n return i === 1 && v === 0 ? 0 : v !== 0 || n === 0 || B(2, 19, n100) ? 1 : 2;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : 1;\n }\n});\n\nadd([ 'mr' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 5 ],\n oFn: function (n) {\n return n === 1 ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : 3;\n }\n});\n\nadd([ 'mt' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n) {\n var n100 = n % 100;\n return n === 1 ? 0 : n === 0 || B(2, 10, n100) ? 1 : B(11, 19, n100) ? 2 : 3;\n }\n});\n\nadd([ 'ne' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n return B(1, 4, n) ? 0 : 1;\n }\n});\n\nadd([ 'or' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 2, 3, 4, 5 ],\n oFn: function (n) {\n return (n === 1 || n === 5 || B(7, 9, n)) ? 0 : IN([ 2, 3 ], n) ? 1 : n === 4 ? 2 : n === 6 ? 3 : 4;\n }\n});\n\nadd([ 'pl' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return i === 1 && v === 0 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i !== 1 && B(0, 1, i10) || v === 0 && B(5, 9, i10) || v === 0 && B(12, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return B(0, 1, i) ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'pt-pt' ], {\n c: [ 1, 4, 5 ],\n cFn: function (n, i, v, f, t, w, e) {\n var i1000000 = i % 1000000;\n return i === 1 && v === 0 ? 0 : e === 0 && i !== 0 && i1000000 === 0 && v === 0 || !B(0, 5, e) ? 1 : 2;\n }\n});\n\nadd([ 'ru' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n }\n});\n\nadd([ 'sc', 'scn' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 4, 5 ],\n oFn: function (n) {\n return IN([ 11, 8, 80, 800 ], n) ? 0 : 1;\n }\n});\n\nadd([ 'shi' ], {\n c: [ 1, 3, 5 ],\n cFn: function (n, i) {\n return i === 0 || n === 1 ? 0 : B(2, 10, n) ? 1 : 2;\n }\n});\n\nadd([ 'si' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v, f) {\n return IN([ 0, 1 ], n) || i === 0 && f === 1 ? 0 : 1;\n }\n});\n\nadd([ 'sl' ], {\n c: [ 1, 2, 3, 5 ],\n cFn: function (n, i, v) {\n var i100 = i % 100;\n return v === 0 && i100 === 1 ? 0 : v === 0 && i100 === 2 ? 1 : v === 0 && B(3, 4, i100) || v !== 0 ? 2 : 3;\n }\n});\n\nadd([ 'sq' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 1, 4, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n === 1 ? 0 : n10 === 4 && n100 !== 14 ? 1 : 2;\n }\n});\n\nadd([ 'sv' ], {\n c: [ 1, 5 ],\n cFn: function (n, i, v) {\n return i === 1 && v === 0 ? 0 : 1;\n },\n o: [ 1, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return IN([ 1, 2 ], n10) && !IN([ 11, 12 ], n100) ? 0 : 1;\n }\n});\n\nadd([ 'tk' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return n === 1 ? 0 : 1;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10;\n return IN([ 6, 9 ], n10) || n === 10 ? 0 : 1;\n }\n});\n\nadd([ 'tzm' ], {\n c: [ 1, 5 ],\n cFn: function (n) {\n return B(0, 1, n) || B(11, 99, n) ? 0 : 1;\n }\n});\n\nadd([ 'uk' ], {\n c: [ 1, 3, 4, 5 ],\n cFn: function (n, i, v) {\n var i10 = i % 10, i100 = i % 100;\n return v === 0 && i10 === 1 && i100 !== 11 ? 0 : v === 0 && B(2, 4, i10) && !B(12, 14, i100) ? 1 : v === 0 && i10 === 0 || v === 0 && B(5, 9, i10) || v === 0 && B(11, 14, i100) ? 2 : 3;\n },\n o: [ 3, 5 ],\n oFn: function (n) {\n var n10 = n % 10, n100 = n % 100;\n return n10 === 3 && n100 !== 13 ? 0 : 1;\n }\n});\n\n////////////////////////////////////////////////////////////////////////////////\n","(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not “foo {”\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (“=” and “+=”).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// → No expansion (so no “inside”).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// “Normal” string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n","Prism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n","/// \n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new