{"version":3,"file":"rehype-citation.mjs","sources":["../../src/regex.js","../../src/parse-citation.js","../../src/utils.js","../../src/html-transform-node.js","../../src/gen-citation.js","../../src/gen-biblio.js","../../src/gen-footnote.js","../../src/generator.js","../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/webidl-conversions/lib/index.js","../../node_modules/whatwg-url/lib/utils.js","../../node_modules/tr46/index.js","../../node_modules/whatwg-url/lib/url-state-machine.js","../../node_modules/whatwg-url/lib/URL-impl.js","../../node_modules/whatwg-url/lib/URL.js","../../node_modules/whatwg-url/lib/public-api.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/sync-fetch/shared.js","../../node_modules/sync-fetch/index.js","../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.mjs","../../node_modules/fetch-ponyfill/fetch-node.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.js","../../src/citation-js/plugin-bibtex/input/required.js","../../src/citation-js/plugin-bibtex/input/fieldTypes.js","../../src/citation-js/plugin-bibtex/input/unicode.js","../../src/citation-js/plugin-bibtex/input/constants.js","../../src/citation-js/plugin-bibtex/config.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.js","../../src/citation-js/plugin-bibtex/mapping/shared.js","../../src/citation-js/plugin-bibtex/mapping/biblatex.js","../../src/citation-js/plugin-bibtex/mapping/bibtex.js","../../src/citation-js/plugin-bibtex/mapping/crossref.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js","../../styles/mla.js","../../styles/chicago.js","../../styles/harvard1.js","../../styles/vancouver.js","../../src/index.js"],"sourcesContent":["// Regex adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n\n/**\n * Citation detection: The first alternative matches \"full\" citations surrounded\n * by square brackets, whereas the second one matches in-text citations,\n * optionally with suffixes.\n *\n * * Group 1 matches regular \"full\" citations\n * * Group 2 matches in-text citations (not surrounded by brackets)\n * * Group 3 matches optional square-brackets suffixes to group 2 matches\n *\n * For more information, see https://pandoc.org/MANUAL.html#extension-citations\n *\n * @var {RegExp}\n */\nexport const citationRE =\n /(?:\\[([^[\\]]*@[^[\\]]+)\\])|(?<=\\s|^|(-))(?:@([\\p{L}\\d_][^\\s]*[\\p{L}\\d_]|\\{.+\\})(?:\\s+\\[(.*?)\\])?)/u\n\n/**\n * I hate everything at this. This can match every single possible variation on\n * whatever the f*** you can possibly do within square brackets according to the\n * documentation. I opted for named groups for these because otherwise I have no\n * idea what I have been doing here.\n *\n * * Group prefix: Contains the prefix, ends with a dash if we should suppress the author\n * * Group citekey: Contains the actual citekey, can be surrounded in curly brackets\n * * Group explicitLocator: Contains an explicit locator statement. If given, we MUST ignore any form of locator in the suffix\n * * Group explicitLocatorInSuffix: Same as above, but not concatenated to the citekey\n * * Group suffix: Contains the suffix, but may start with a locator (if explicitLocator and explicitLocatorInSuffix are not given)\n *\n * @var {RegExp}\n */\nexport const fullCitationRE =\n /(?.+)?(?:@(?[\\p{L}\\d_][^\\s{]*[\\p{L}\\d_]|\\{.+\\}))(?:\\{(?.*)\\})?(?:,\\s+(?:\\{(?.*)\\})?(?.*))?/u\n\n/**\n * This regular expression matches locator ranges, like the following:\n *\n * * 23-45, and further (here it matches up to, not including the comma)\n * * 45\n * * 15423\n * * 14235-12532\n * * 12-34, 23, 56\n * * 12, 23-14, 23\n * * 12, 54, 12-23\n * * 1, 1-4\n * * 3\n * * NEW NEW NEW: Now also matches Roman numerals as sometimes used in forewords!\n *\n * @var {RegExp}\n */\nexport const locatorRE = /^(?:[\\d, -]*\\d|[ivxlcdm, -]*[ivxlcdm])/i\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').CiteItemSuffix} CiteItemSuffix\n */\n\nimport { fullCitationRE, locatorRE } from './regex.js'\n\n/**\n * The locatorLabels have been sourced from the Citr library. Basically it's just\n * a map with valid CSL locator labels and an array of possible natural labels\n * which a user might want to write (instead of the standardized labels).\n *\n * @var {{ [key: string]: string[] }}}\n */\nconst locatorLabels = {\n book: ['Buch', 'Bücher', 'B.', 'book', 'books', 'bk.', 'bks.', 'livre', 'livres', 'liv.'],\n chapter: ['Kapitel', 'Kap.', 'chapter', 'chapters', 'chap.', 'chaps', 'chapitre', 'chapitres'],\n column: ['Spalte', 'Spalten', 'Sp.', 'column', 'columns', 'col.', 'cols', 'colonne', 'colonnes'],\n figure: ['Abbildung', 'Abbildungen', 'Abb.', 'figure', 'figures', 'fig.', 'figs'],\n folio: ['Blatt', 'Blätter', 'Fol.', 'folio', 'folios', 'fol.', 'fols', 'fᵒ', 'fᵒˢ'],\n issue: [\n 'Nummer',\n 'Nummern',\n 'Nr.',\n 'number',\n 'numbers',\n 'no.',\n 'nos.',\n 'numéro',\n 'numéros',\n 'nᵒ',\n 'nᵒˢ',\n ],\n line: ['Zeile', 'Zeilen', 'Z', 'line', 'lines', 'l.', 'll.', 'ligne', 'lignes'],\n note: ['Note', 'Noten', 'N.', 'note', 'notes', 'n.', 'nn.'],\n opus: ['Opus', 'Opera', 'op.', 'opus', 'opera', 'opp.'],\n page: ['Seite', 'Seiten', 'S.', 'page', 'pages', 'p.', 'pp.'],\n paragraph: [\n 'Absatz',\n 'Absätze',\n 'Abs.',\n '¶',\n '¶¶',\n 'paragraph',\n 'paragraphs',\n 'para.',\n 'paras',\n 'paragraphe',\n 'paragraphes',\n 'paragr.',\n ],\n part: ['Teil', 'Teile', 'part', 'parts', 'pt.', 'pts', 'partie', 'parties', 'part.'],\n section: [\n 'Abschnitt',\n 'Abschnitte',\n 'Abschn.',\n '§',\n '§§',\n 'section',\n 'sections',\n 'sec.',\n 'secs',\n 'sect.',\n ],\n 'sub verbo': ['sub verbo', 'sub verbis', 's. v.', 's. vv.', 's.v.', 's.vv.'],\n verse: ['Vers', 'Verse', 'V.', 'verse', 'verses', 'v.', 'vv.', 'verset', 'versets'],\n volume: ['Band', 'Bände', 'Bd.', 'Bde.', 'volume', 'volumes', 'vol.', 'vols.'],\n}\n\n/**\n * Parses a given citation string and return entries and isComposite flag required for cite-proc.\n * Adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n *\n * @param {RegExpMatchArray} regexMatch Cite string in the form of '[@item]' or '@item'\n * @return {[CiteItem[], boolean]} [entries, isComposite]\n */\nexport const parseCitation = (regexMatch) => {\n /** @type {CiteItem[]} */\n let entries = []\n let isComposite = false\n const fullCitation = regexMatch[1]\n const inTextSuppressAuthor = regexMatch[2]\n const inTextCitation = regexMatch[3]\n const optionalSuffix = regexMatch[4]\n\n if (fullCitation !== undefined) {\n // Handle citations in the form of [@item1; @item2]\n for (const citationPart of fullCitation.split(';')) {\n const match = fullCitationRE.exec(citationPart.trim())\n if (match === null) {\n continue // Faulty citation\n }\n // Prefix is the portion before @ e.g. [see @item1] or an empty string\n // We explicitly cast groups since we have groups in our RegExp and as\n // such the groups object will be set.\n /** @type {CiteItem} */\n const thisCitation = {\n id: match.groups.citekey.replace(/{(.+)}/, '$1'),\n prefix: undefined,\n locator: undefined,\n label: 'page',\n 'suppress-author': false,\n suffix: undefined,\n }\n\n // First, deal with the prefix. The speciality here is that it can\n // indicate if we should suppress the author.\n const rawPrefix = match.groups.prefix\n if (rawPrefix !== undefined) {\n thisCitation['suppress-author'] = rawPrefix.trim().endsWith('-')\n if (thisCitation['suppress-author']) {\n thisCitation.prefix = rawPrefix.substring(0, rawPrefix.trim().length - 1).trim()\n } else {\n thisCitation.prefix = rawPrefix.trim()\n }\n }\n\n // Second, deal with the suffix. This one can be much more tricky than\n // the prefix. We have three alternatives where the locator may be\n // present: If we have an explicitLocator or an explicitLocatorInSuffix,\n // we should extract the locator from there and leave the actual suffix\n // untouched. Only if those two alternatives are not present, then we\n // have a look at the rawSuffix and extract a (potential) locator.\n const explicitLocator = match.groups.explicitLocator\n const explicitLocatorInSuffix = match.groups.explicitLocatorInSuffix\n const rawSuffix = match.groups.suffix\n\n let suffixToParse\n let containsLocator = true\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n // Potential locator in rawSuffix. Only in this case should we overwrite\n // the suffix (hence the same if-condition below)\n suffixToParse = rawSuffix\n containsLocator = false\n } else if (explicitLocatorInSuffix !== undefined || explicitLocator !== undefined) {\n suffixToParse = explicitLocator !== undefined ? explicitLocator : explicitLocatorInSuffix\n thisCitation.suffix = rawSuffix?.trim()\n }\n\n const { label, locator, suffix } = parseSuffix(suffixToParse, containsLocator)\n thisCitation.locator = locator\n\n if (label !== undefined) {\n thisCitation.label = label\n }\n\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n thisCitation.suffix = suffix\n } else if (suffix !== undefined && thisCitation.locator !== undefined) {\n // If we're here, we should not change the suffix, but parseSuffix may\n // have put something into the suffix return. If we're here, that will\n // definitely be a part of the locator.\n thisCitation.locator += suffix\n }\n\n entries.push(thisCitation)\n }\n } else {\n // We have an in-text citation, so we can take a shortcut\n isComposite = true\n entries.push({\n prefix: undefined,\n id: inTextCitation.replace(/{(.+)}/, '$1'),\n 'suppress-author': inTextSuppressAuthor !== undefined,\n ...parseSuffix(optionalSuffix, false), // Populate more depending on the suffix\n })\n }\n return [entries, isComposite]\n}\n\n/**\n * This takes a suffix and extracts optional label and locator from this. Pass\n * true for the containsLocator property to indicate to this function that what\n * it got was not a regular suffix with an optional locator, but an explicit\n * locator so it knows it just needs to look for an optional label.\n *\n * @param {string} suffix The suffix to parse\n * @param {boolean} containsLocator If true, forces parseSuffix to return a locator\n *\n * @return {CiteItemSuffix} An object containing three optional properties locator, label, or suffix.\n */\nfunction parseSuffix(suffix, containsLocator) {\n /** @type {CiteItemSuffix} */\n const retValue = {\n locator: undefined,\n label: 'page',\n suffix: undefined,\n }\n\n if (suffix === undefined) {\n return retValue\n }\n\n // Make sure the suffix does not start or end with spaces\n suffix = suffix.trim()\n\n // If there is a label, the suffix must start with it\n for (const label in locatorLabels) {\n for (const natural of locatorLabels[label]) {\n if (suffix.toLowerCase().startsWith(natural.toLowerCase())) {\n retValue.label = label\n if (containsLocator) {\n // The suffix actually is the full locator, we just had to extract\n // the label from it. There is no remaining suffix.\n retValue.locator = suffix.substr(natural.length).trim()\n } else {\n // The caller indicated that this is a regular suffix, so we must also\n // extract the locator from what is left after label extraction.\n retValue.suffix = suffix.substr(natural.length).trim()\n const match = locatorRE.exec(retValue.suffix)\n if (match !== null) {\n retValue.locator = match[0] // Extract the full match\n retValue.suffix = retValue.suffix.substr(match[0].length).trim()\n }\n }\n\n return retValue // Early exit\n }\n }\n }\n\n // If we're here, there was no explicit label given, but the caller has indicated\n // that this suffix MUST contain a locator. This means that the whole suffix is\n // the locator.\n if (containsLocator) {\n retValue.locator = suffix\n } else {\n // The caller has not indicated that the whole suffix is the locator, so it\n // can be at the beginning. We only accept simple page/number ranges here.\n // For everything, the user should please be more specific.\n const match = locatorRE.exec(suffix)\n if (match !== null) {\n retValue.locator = match[0] // Full match is the locator\n retValue.suffix = suffix.substr(match[0].length).trim() // The rest is the suffix.\n }\n }\n\n return retValue\n}\n","import fetch from 'cross-fetch'\n\nexport const isNode = typeof window === 'undefined'\n\nexport const readFile = async (path) => {\n if (isValidHttpUrl(path)) {\n try {\n const response = await fetch(path)\n return await response.text()\n } catch (error) {\n throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n }\n } else {\n if (isNode) {\n try {\n return import('fs').then((fs) => fs.readFileSync(path, 'utf8'))\n } catch (error) {\n throw new Error(`Cannot read non valid URL in node env.`)\n }\n }\n }\n}\n\n/**\n * Check if valid URL\n * https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n *\n * @param {string} str\n * @return {boolean}\n */\nexport const isValidHttpUrl = (str) => {\n let url\n\n try {\n url = new URL(str)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:' || url.protocol === 'blob:'\n}\n\n/**\n * Get bibliography by merging options and vfile data\n *\n * @param {import('./generator.js').Options} options\n * @param {import('vfile').VFile} file\n */\nexport const getBibliography = async (options, file) => {\n /** @type {string[]} */\n let bibliography = []\n const frontmatterBibliography = getFrontmatterField(file, 'bibliography')\n if (options.bibliography) {\n bibliography =\n typeof options.bibliography === 'string' ? [options.bibliography] : options.bibliography\n } else if (frontmatterBibliography) {\n bibliography =\n typeof frontmatterBibliography === 'string'\n ? [frontmatterBibliography]\n : frontmatterBibliography\n }\n // If local path, get absolute path\n for (let i = 0; i < bibliography.length; i++) {\n if (!isValidHttpUrl(bibliography[i])) {\n // Case options.path is provided and non empty\n if (options.path) {\n // if node env we construct the full path using options.path\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(options.path, bibliography[i])\n )\n // else we throw as it's non valid http url\n } else {\n throw new Error(`Cannot read non valid bibliography URL.`)\n }\n // Case options.path is empt\n } else {\n // if node env we construct the full path using default `process.cwd`\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(file.cwd, bibliography[i])\n )\n // else as it's a non valid http url we throw as a base url must be provided using options.path\n } else {\n throw new Error(\n `Non valid bibliography URL: Provide a full valid path for biblio ${bibliography[i]} or set an appropriate \"options.path\"`\n )\n }\n }\n }\n }\n\n return bibliography\n}\n\n/**\n * Load CSL - supports predefined name from config.templates.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format CSL name e.g. apa or file path to CSL file\n * @param {string} root optional root path\n */\nexport const loadCSL = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.templates.data).includes(format)) {\n const cslName = `customCSL-${Math.random().toString(36).slice(2, 7)}`\n let cslPath = ''\n if (isValidHttpUrl(format)) cslPath = format\n else {\n if (isNode) cslPath = await import('path').then((path) => path.join(root, format))\n }\n try {\n config.templates.add(cslName, await readFile(cslPath))\n } catch (err) {\n throw new Error(`Input CSL option, ${format}, is invalid or is an unknown file.`)\n }\n return cslName\n } else {\n return format\n }\n}\n\n/**\n * Load locale - supports predefined name from config.locales.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format locale name\n * @param {string} root optional root path\n */\nexport const loadLocale = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.locales.data).includes(format)) {\n let localePath = ''\n if (isValidHttpUrl(format)) localePath = format\n else {\n if (isNode) localePath = await import('path').then((path) => path.join(root, format))\n }\n try {\n const file = await readFile(localePath)\n const xmlLangRe = /xml:lang=\"(.+)\"/\n const localeName = file.match(xmlLangRe)[1]\n config.locales.add(localeName, file)\n return localeName\n } catch (err) {\n throw new Error(`Input locale option, ${format}, is invalid or is an unknown file.`)\n }\n } else {\n return format\n }\n}\n\n/**\n * Get citation format\n *\n * @param {*} citeproc citeproc\n * @returns string\n */\nexport const getCitationFormat = (citeproc) => {\n const info = citeproc.cslXml.dataObj.children[0]\n const node = info.children.find((x) => x['attrs'] && x['attrs']['citation-format'])\n // citation-format takes 5 possible values\n // https://docs.citationstyles.org/en/stable/specification.html#toc-entry-14\n /** @type {'author-date' | 'author' | 'numeric' | 'note' | 'label'} */\n const citationFormat = node['attrs']['citation-format']\n return citationFormat\n}\n\n/**\n * Get registry objects that matches a list of relevantIds\n * If sorted is false, retrieve registry item in the order of the given relevantIds\n *\n * @param {*} citeproc citeproc\n * @param {string[]} relevantIds\n * @param {boolean} sorted\n * @return {*} registry objects that matches Ids, in the correct order\n */\nexport const getSortedRelevantRegistryItems = (citeproc, relevantIds, sorted) => {\n const res = []\n if (sorted) {\n // If sorted follow registry order\n for (const item of citeproc.registry.reflist) {\n if (relevantIds.includes(item.id)) res.push(item)\n }\n } else {\n // Otherwise follow the relevantIds\n for (const id of relevantIds) {\n res.push(citeproc.registry.reflist.find((x) => x.id === id))\n }\n }\n return res\n}\n\n/**\n * Split a string into two parts based on a given index position\n *\n * @param {string} str\n * @param {number} index\n * @return {string[]}\n */\nexport const split = (str, index) => {\n return [str.slice(0, index), str.slice(index)]\n}\n\n/**\n * Check if two registry objects belong to the same author\n * Currently only checks on family name\n *\n * @param {*} item registry object\n * @param {*} item2 registry object\n * @return {boolean}\n */\nexport const isSameAuthor = (item, item2) => {\n const authorList = item.ref.author\n const authorList2 = item2.ref.author\n if (authorList.length !== authorList2.length) return false\n for (let i = 0; i < authorList.length; i++) {\n if (authorList[i].family !== authorList2[i].family) return false\n }\n return true\n}\n\n/**\n * @typedef {Object} FrontmatterSource\n * @property {Record} [matter]\n * @property {Record} [frontmatter]\n * @property {{ frontmatter?: Record }} [astro]\n */\n\n/**\n * @param {{ data?: FrontmatterSource }} file\n * @param {string} fieldName\n * @returns {any}\n */\nexport const getFrontmatterField = (file, fieldName) => {\n if (!file || !file.data) {\n return undefined\n }\n\n const sources = [file.data.matter, file.data.frontmatter, file.data.astro?.frontmatter]\n\n for (const source of sources) {\n if (source && fieldName in source) {\n return source[fieldName]\n }\n }\n\n return undefined\n}\n\n/**\n * Get bibliography entry text for a citation ID\n *\n * @param {*} citeproc citeproc engine\n * @param {string} id citation ID\n * @return {string} formatted bibliography entry without HTML tags\n */\nexport const getBibliographyEntryText = (citeproc, id) => {\n try {\n // Save the current state\n const originalItemIds = [...citeproc.registry.mylist]\n\n // Since creating bibliography affects the state we need to save the current state and restore it\n citeproc.updateItems([id])\n const bibOutput = citeproc.makeBibliography([id])\n if (!bibOutput || !bibOutput[1] || bibOutput[1].length === 0) {\n citeproc.updateItems(originalItemIds)\n return ''\n }\n\n // Get the text\n let entryText = bibOutput[1][0].replace(/<[^>]*>/g, '')\n entryText = entryText.replace(/\\s+/g, ' ').trim()\n\n // Restore the original state\n citeproc.updateItems(originalItemIds)\n\n return entryText\n } catch (error) {\n console.error('Error getting bibliography entry text:', error)\n return ''\n }\n}\n","import { parseFragment } from 'parse5'\nimport { fromParse5 } from 'hast-util-from-parse5'\n\n/**\n * Convert HTML to HAST node\n *\n * @param {string} html\n */\nexport const htmlToHast = (html) => {\n const p5ast = parseFragment(html)\n // @ts-ignore\n return fromParse5(p5ast).children[0]\n}\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport {\n getSortedRelevantRegistryItems,\n split,\n isSameAuthor,\n getBibliographyEntryText,\n} from './utils.js'\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate citation using citeproc\n * This accounts for prev citations and additional properties\n *\n * @param {*} citeproc\n * @param {Mode} mode\n * @param {CiteItem[]} entries\n * @param {string} citationIdRoot\n * @param {number} citationId\n * @param {any[]} citationPre\n * @param {Options} options\n * @param {boolean} isComposite\n * @param {import('./types').CitationFormat} citationFormat\n * @return {[string, string]}\n */\nexport const genCitation = (\n citeproc,\n mode,\n entries,\n citationIdRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n) => {\n const { inlineClass, linkCitations, showTooltips = false, tooltipAttribute = 'title' } = options\n const key = `${citationIdRoot}-${citationId}`\n const c = citeproc.processCitationCluster(\n {\n citationID: key,\n citationItems: entries,\n properties:\n mode === 'in-text'\n ? { noteIndex: 0, mode: isComposite ? 'composite' : '' }\n : { noteIndex: citationId, mode: isComposite ? 'composite' : '' },\n },\n citationPre.length > 0 ? citationPre : [],\n []\n )\n\n const citationText = c[1].find((x) => x[2] === key)[1]\n const ids = `citation--${entries.map((x) => x.id.toLowerCase()).join('--')}--${citationId}`\n\n // Generate tooltip map for each entry if enabled\n const tooltipMap = {}\n if (showTooltips) {\n entries.forEach((entry) => {\n const entryText = getBibliographyEntryText(citeproc, entry.id)\n // Escape quotes and HTML entities for attribute value\n tooltipMap[entry.id.toLowerCase()] = entryText.replace(/\"/g, '"').replace(/&/g, '&')\n })\n }\n\n // Wrapper tooltip for the span element (combined tooltip for all entries)\n const wrapperTooltipAttr = showTooltips\n ? ` ${tooltipAttribute}=\"${entries.map((e) => tooltipMap[e.id.toLowerCase()]).join('; ')}\"`\n : ''\n\n if (mode === 'note') {\n return [\n citationText,\n htmlToHast(\n `${citationId}`\n ),\n ]\n } else if (linkCitations && citationFormat === 'numeric') {\n // e.g. [1, 2]\n let i = 0\n const refIds = entries.map((e) => e.id)\n const output = citationText.replace(/\\d+/g, function (d) {\n const refId = refIds[i].toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n const url = `${d}`\n i++\n return url\n })\n\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else if (linkCitations && citationFormat === 'author-date') {\n // E.g. (see Nash, 1950, pp. 12–13, 1951); (Nash, 1950; Xie, 2016)\n if (entries.length === 1) {\n // Do not link bracket\n const refId = entries[0].id.toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n\n const output = isComposite\n ? `${citationText}`\n : `${citationText.slice(0, 1)}${citationText.slice(\n 1,\n -1\n )}${citationText.slice(-1)}`\n\n return [\n citationText,\n htmlToHast(`${output}`),\n ]\n } else {\n // Retrieve the items in the correct order and attach link each of them\n const refIds = entries.map((e) => e.id)\n const results = getSortedRelevantRegistryItems(citeproc, refIds, citeproc.opt.sort_citations)\n const output = []\n let str = citationText\n\n for (const [i, item] of results.entries()) {\n // Need to compare author. If same just match on date.\n const id = item.id\n let citeMatch = item.ambig\n // If author is the same as the previous, some styles like apa collapse the author\n if (i > 0 && isSameAuthor(results[i - 1], item) && str.indexOf(citeMatch) === -1) {\n // Just match on year\n citeMatch = item.ref.issued.year.toString()\n }\n const startPos = str.indexOf(citeMatch)\n const [start, rest] = split(str, startPos)\n output.push(start) // Irrelevant parts\n\n const refId = id.toLowerCase()\n const tooltipAttr = showTooltips ? ` ${tooltipAttribute}=\"${tooltipMap[refId]}\"` : ''\n const url = `${rest.substring(\n 0,\n citeMatch.length\n )}`\n\n output.push(url)\n str = rest.substring(citeMatch.length)\n }\n output.push(str)\n return [\n citationText,\n htmlToHast(\n `${output.join('')}`\n ),\n ]\n }\n } else {\n return [\n citationText,\n htmlToHast(\n `${citationText}`\n ),\n ]\n }\n}\n","import { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate bibliography in html and convert it to hast\n *\n * @param {*} citeproc\n */\nexport const genBiblioNode = (citeproc) => {\n const [params, bibBody] = citeproc.makeBibliography()\n const bibliography =\n '
\\n' + bibBody.join('') + '
'\n const biblioNode = htmlToHast(bibliography)\n\n // Add citekey id to each bibliography entry.\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node, i) => {\n const citekey = params.entry_ids[i][0].toLowerCase()\n node.properties = node.properties || {}\n node.properties.id = 'bib-' + citekey\n })\n return biblioNode\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n */\n\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Create new footnote section node based on footnoteArray mappings\n *\n * @param {{int: string}} citationDict\n * @param {{type: 'citation' | 'existing', oldId: string}[]} footnoteArray\n * @param {Element | undefined} footnoteSection\n * @return {Element}\n */\nexport const genFootnoteSection = (citationDict, footnoteArray, footnoteSection) => {\n /** @type {Element} */\n const list = {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: [{ type: 'text', value: '\\n' }],\n }\n let oldFootnoteList\n if (footnoteSection) {\n /** @type {Element} */ // @ts-ignore - for some reason, the type does not narrow even after filtering\n oldFootnoteList = footnoteSection.children.filter(n => (n.type == \"element\")).find((n) => (n.tagName === 'ol'))\n }\n for (const [idx, item] of footnoteArray.entries()) {\n const { type, oldId } = item\n if (type === 'citation') {\n list.children.push({\n type: 'element',\n tagName: 'li',\n properties: { id: `user-content-fn-${idx + 1}` },\n children: [\n {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: [\n htmlToHast(`${citationDict[oldId]}`),\n {\n type: 'element',\n tagName: 'a',\n properties: {\n href: `#user-content-fnref-${idx + 1}`,\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: 'Back to content',\n },\n children: [{ type: 'text', value: '↩' }],\n },\n ],\n },\n { type: 'text', value: '\\n' },\n ],\n })\n } else if (type === 'existing') {\n // @ts-ignore\n const liNode = oldFootnoteList.children.find(\n (n) => n.tagName === 'li' && n.properties.id === `user-content-fn-${oldId}`\n )\n liNode.properties.id = `user-content-fn-${idx + 1}`\n const aNode = liNode.children[1].children.find((n) => n.tagName === 'a')\n aNode.properties.href = `#user-content-fnref-${idx + 1}`\n list.children.push(liNode)\n }\n }\n\n /** @type {Element} */\n const newfootnoteSection = {\n type: 'element',\n tagName: 'section',\n properties: { dataFootnotes: true, className: ['footnotes'] },\n children: [\n {\n type: 'element',\n tagName: 'h2',\n properties: { className: ['sr-only'], id: 'footnote-label' },\n children: [{ type: 'text', value: 'Footnotes' }],\n },\n { type: 'text', value: '\\n' },\n list,\n ],\n }\n return newfootnoteSection\n}\n","/**\n * @typedef {import('hast').Node} Node\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('unist-util-visit').Visitor} Visitor\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { visit } from 'unist-util-visit'\nimport fetch from 'cross-fetch'\nimport { parseCitation } from './parse-citation.js'\nimport { genCitation } from './gen-citation.js'\nimport { genBiblioNode } from './gen-biblio.js'\nimport { genFootnoteSection } from './gen-footnote.js'\nimport { citationRE } from './regex.js'\nimport {\n isNode,\n isValidHttpUrl,\n readFile,\n getBibliography,\n loadCSL,\n loadLocale,\n getCitationFormat,\n getFrontmatterField,\n} from './utils.js'\n\nconst defaultCiteFormat = 'apa'\nconst permittedTags = ['div', 'p', 'span', 'li', 'td', 'th']\nconst idRoot = 'CITATION'\n\n/**\n * Rehype plugin that formats citations in markdown documents and insert bibliography in html format\n *\n * [-@wadler1990] --> (1990)\n * [@hughes1989, sec 3.4] --> (Hughes 1989, sec 3.4)\n * [see @wadler1990; and @hughes1989, pp. 4] --> (see Wadler 1990 and Hughes 1989, pp. 4)\n *\n * @param {*} Cite cite object from citation-js configured with the required CSLs\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypeCitationGenerator = (Cite) => {\n return (options = {}) => {\n return async (tree, file) => {\n /** @type {string[]} */\n let bibtexFile = []\n const inputCiteformat =\n /** @type {string} */\n options.csl || getFrontmatterField(file, 'csl') || defaultCiteFormat\n const noCite =\n /** @type {string[] | false} */\n options.noCite || getFrontmatterField(file, 'noCite') || false\n const inputLang = options.lang || 'en-US'\n const config = Cite.plugins.config.get('@csl')\n const citeFormat = await loadCSL(Cite, inputCiteformat, options.path)\n const lang = await loadLocale(Cite, inputLang, options.path)\n\n let bibliography = await getBibliography(options, file)\n if (bibliography.length === 0) {\n return\n }\n\n for (let i = 0; i < bibliography.length; i++) {\n /**\n * getBibibliography is building full path/url safely in both node and browser\n * If it's a valid http url, we can try to fetch safely \n * else we can try to read from file system safely \n */\n if (isValidHttpUrl(bibliography[i])) {\n try {\n const response = await fetch(bibliography[i])\n bibtexFile.push(await response.text())\n } catch (error) {\n throw new Error(`Cannot fetch bibliography URL: ${error}.`)\n }\n } else {\n try {\n bibtexFile.push(await readFile(bibliography[i]))\n } catch (error) {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n const citations = new Cite(bibtexFile, { generateGraph: false })\n const citationIds = citations.data.map((x) => x.id)\n const citationPre = []\n const citationDict = {}\n let citationId = 1\n const citeproc = config.engine(citations.data, citeFormat, lang, 'html')\n /** @type {Mode} */\n const mode = citeproc.opt.xclass\n const citationFormat = getCitationFormat(citeproc)\n let parsedEntries = []\n visit(tree, 'text', (node, idx, parent) => {\n const match = node.value.match(citationRE)\n if (!match || ('tagName' in parent && !permittedTags.includes(parent.tagName))) return\n let citeStartIdx = match.index\n let citeEndIdx = match.index + match[0].length\n // If we have an in-text citation and we should suppress the author, the\n // match.index does NOT include the positive lookbehind, so we have to manually\n // shift \"from\" to one before.\n if (match[2] !== undefined) {\n citeStartIdx--\n }\n const newChildren = []\n // if preceding string\n if (citeStartIdx !== 0) {\n // create a new child node\n newChildren.push({\n type: 'text',\n value: node.value.slice(0, citeStartIdx),\n })\n }\n\n const [entries, isComposite] = parseCitation(match)\n parsedEntries = entries\n\n // If id is not in citation file (e.g. route alias or js package), abort process\n for (const citeItem of entries) {\n if (!citationIds.includes(citeItem.id)) return\n }\n const [citedText, citedTextNode] = genCitation(\n citeproc,\n mode,\n entries,\n idRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n )\n citationDict[citationId] = citedText\n\n // Prepare citationPre and citationId for the next cite instance\n citationPre.push([`${idRoot}-${citationId}`, 0])\n citationId = citationId + 1\n\n newChildren.push(citedTextNode)\n\n // if trailing string\n if (citeEndIdx < node.value.length) {\n newChildren.push({\n type: 'text',\n value: node.value.slice(citeEndIdx),\n })\n }\n\n // insert into the parent\n // @ts-ignore\n parent.children = [\n ...parent.children.slice(0, idx),\n ...newChildren,\n ...parent.children.slice(idx + 1),\n ]\n })\n\n if (noCite) {\n if (noCite.length === 1 && noCite[0] === '@*') {\n citeproc.updateItems(citationIds)\n } else {\n const mergedIds = citations.data\n .filter((x) => noCite.map((x) => x.replace('@', '')).includes(x['citation-key']))\n .map((x) => x.id)\n .concat(parsedEntries.map((x) => x.id))\n\n citeproc.updateItems(mergedIds)\n }\n }\n\n if (\n citeproc.registry.mylist.length >= 1 &&\n (!options.suppressBibliography || options.inlineBibClass?.length > 0)\n ) {\n const biblioNode = genBiblioNode(citeproc)\n let bilioInserted = false\n\n const biblioMap = {}\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node) => {\n const citekey = node.properties.id.split('-').slice(1).join('-')\n biblioMap[citekey] = { ...node }\n biblioMap[citekey].properties = { id: 'inlinebib-' + citekey }\n })\n\n // Insert it at ^ref, if not found insert it as the last element of the tree\n visit(tree, 'element', (node, idx, parent) => {\n // Add inline bibliography\n if (\n options.inlineBibClass?.length > 0 &&\n node.properties?.id?.toString().startsWith('citation-')\n ) {\n // id is citation--nash1951--nash1950--1\n const [, ...citekeys] = node.properties.id.toString().split('--')\n const citationID = citekeys.pop()\n\n /** @type {Element} */\n const inlineBibNode = {\n type: 'element',\n tagName: 'div',\n properties: {\n className: options.inlineBibClass,\n id: `inlineBib--${citekeys.join('--')}--${citationID}`,\n },\n children: citekeys.map((citekey) => {\n const aBibNode = biblioMap[citekey]\n aBibNode.properties = {\n class: 'inline-entry',\n id: `inline--${citekey}--${citationID}`,\n }\n return aBibNode\n }),\n }\n parent.children.push(inlineBibNode)\n }\n\n // Add bibliography\n if (\n !options.suppressBibliography &&\n (node.tagName === 'p' || node.tagName === 'div') &&\n node.children.length >= 1 &&\n node.children[0].type === 'text' &&\n node.children[0].value === '[^ref]'\n ) {\n parent.children[idx] = biblioNode\n bilioInserted = true\n }\n })\n\n if (!options.suppressBibliography && !bilioInserted) {\n tree.children.push(biblioNode)\n }\n }\n\n let footnoteSection\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'section' && node.properties.dataFootnotes) {\n footnoteSection = node\n parent.children.splice(index, 1)\n }\n })\n\n // Need to adjust footnote numbering based on existing ones already assigned\n // And insert them into the footnote section (if exists)\n // Footnote comes after bibliography\n if (mode === 'note' && Object.keys(citationDict).length > 0) {\n /** @type {{type: 'citation' | 'existing', oldId: string}[]} */\n let fnArray = []\n let index = 1\n visit(tree, 'element', (node) => {\n if (node.tagName === 'sup' && node.children[0].type === 'element') {\n let nextNode = node.children[0]\n if (nextNode.tagName === 'a') {\n /** @type {{href: string, id: string}} */ // @ts-ignore\n const { href, id } = nextNode.properties\n if (href.includes('fn') && id.includes('fnref')) {\n const oldId = href.split('-').pop()\n fnArray.push({\n type: href.includes('cite') ? 'citation' : 'existing',\n oldId,\n })\n // Update ref number\n nextNode.properties.href = `#user-content-fn-${index}`\n nextNode.properties.id = `user-content-fnref-${index}`\n // @ts-ignore\n nextNode.children[0].value = index.toString()\n index += 1\n }\n }\n }\n })\n // @ts-ignore\n const newFootnoteSection = genFootnoteSection(citationDict, fnArray, footnoteSection)\n tree.children.push(newFootnoteSection)\n } else {\n if (footnoteSection) tree.children.push(footnoteSection)\n }\n }\n }\n}\n\nexport default rehypeCitationGenerator\n","function currentVersion() {\n return this.log.length\n}\nfunction retrieveVersion(versnum = 1) {\n if (versnum <= 0 || versnum > this.currentVersion()) {\n return null\n } else {\n const [data, options] = this.log[versnum - 1]\n const image = new this.constructor(JSON.parse(data), JSON.parse(options))\n image.log = this.log.slice(0, versnum)\n return image\n }\n}\nfunction undo(number = 1) {\n return this.retrieveVersion(this.currentVersion() - number)\n}\nfunction retrieveLastVersion() {\n return this.retrieveVersion(this.currentVersion())\n}\nfunction save() {\n this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n return this\n}\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","const formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\nexport function validateOutputOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options not an object!')\n }\n const { format, type, style, lang, append, prepend } = options\n if (format && !formats.includes(format)) {\n throw new TypeError(`Option format (\"${format}\") should be one of: ${formats}`)\n } else if (type && !types.includes(type)) {\n throw new TypeError(`Option type (\"${type}\") should be one of: ${types}`)\n } else if (style && !styles.includes(style) && !/^citation/.test(style)) {\n throw new TypeError(`Option style (\"${style}\") should be one of: ${styles}`)\n } else if (lang && typeof lang !== 'string') {\n throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`)\n } else if (prepend && !wrapperTypes.includes(typeof prepend)) {\n throw new TypeError(\n `Option prepend should be a string or a function, but is a ${typeof prepend}`\n )\n } else if (append && !wrapperTypes.includes(typeof append)) {\n throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`)\n }\n if (/^citation/.test(style) && type === 'json') {\n throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n }\n return true\n}\nexport function validateOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options should be an object')\n }\n if (options.output) {\n validateOutputOptions(options.output)\n } else if (options.maxChainLength && typeof options.maxChainLength !== 'number') {\n throw new TypeError('Option maxChainLength should be a number')\n } else if (options.forceType && typeof options.forceType !== 'string') {\n throw new TypeError('Option forceType should be a string')\n } else if (options.generateGraph != null && typeof options.generateGraph !== 'boolean') {\n throw new TypeError('Option generateGraph should be a boolean')\n } else if (options.strict != null && typeof options.strict !== 'boolean') {\n throw new TypeError('Option strict should be a boolean')\n } else if (options.target != null && typeof options.target !== 'string') {\n throw new TypeError('Option target should be a boolean')\n }\n return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\nconst defaultOptions = {\n format: 'real',\n type: 'json',\n style: 'csl',\n lang: 'en-US',\n}\nfunction options(options, log) {\n validate(options)\n if (log) {\n this.save()\n }\n Object.assign(this._options, options)\n return this\n}\nexport { options, defaultOptions }\n","export function typeOf(thing) {\n switch (thing) {\n case undefined:\n return 'Undefined'\n case null:\n return 'Null'\n default:\n return thing.constructor.name\n }\n}\nexport function dataTypeOf(thing) {\n switch (typeof thing) {\n case 'string':\n return 'String'\n case 'object':\n if (Array.isArray(thing)) {\n return 'Array'\n } else if (typeOf(thing) === 'Object') {\n return 'SimpleObject'\n } else if (typeOf(thing) !== 'Null') {\n return 'ComplexObject'\n }\n default:\n return 'Primitive'\n }\n}\n","export function applyGraph(entry, graph) {\n if (entry._graph) {\n const index = graph.findIndex(({ type }) => type === '@else/list+object')\n if (index !== -1) {\n graph.splice(index + 1, 0, ...entry._graph.slice(0, -1))\n }\n }\n entry._graph = graph\n return entry\n}\nexport function removeGraph(entry) {\n delete entry._graph\n return entry\n}\n","const logger = {\n _output(level, scope, msg) {\n this._log.push(scope, msg)\n if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n return\n }\n this._console.log(scope, ...msg)\n },\n _console: null,\n _log: [],\n _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n level: 'silent',\n}\nfor (const level of logger._levels) {\n logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\nif (typeof console.Console === 'function') {\n logger._console = new console.Console(process.stderr)\n} else {\n logger._console = console\n}\nexport default logger\n","import logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\nconst types = {}\nconst dataTypes = {}\nconst unregExts = {}\nfunction parseNativeTypes(input, dataType) {\n switch (dataType) {\n case 'Array':\n if (input.length === 0 || input.every((entry) => type(entry) === '@csl/object')) {\n return '@csl/list+object'\n } else {\n return '@else/list+object'\n }\n case 'SimpleObject':\n case 'ComplexObject':\n return '@csl/object'\n default:\n return '@invalid'\n }\n}\nfunction matchType(typeList = [], data) {\n for (const type of typeList) {\n if (types[type].predicate(data)) {\n return matchType(types[type].extensions, data) || type\n }\n }\n}\nexport function type(input) {\n const dataType = dataTypeOf(input)\n if (dataType === 'Array' && input.length === 0) {\n return parseNativeTypes(input, dataType)\n }\n const match = matchType(dataTypes[dataType], input)\n return match || parseNativeTypes(input, dataType)\n}\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\n let extensions = []\n if (format in unregExts) {\n extensions = unregExts[format]\n delete unregExts[format]\n logger.debug(\n '[core]',\n `Subclasses \"${extensions}\" finally registered to parent type \"${format}\"`\n )\n }\n const object = {\n predicate,\n extensions,\n }\n types[format] = object\n if (extend) {\n const parentTypeParser = types[extend]\n if (parentTypeParser) {\n parentTypeParser.extensions.push(format)\n } else {\n if (!unregExts[extend]) {\n unregExts[extend] = []\n }\n unregExts[extend].push(format)\n logger.debug('[core]', `Subclass \"${format}\" is waiting on parent type \"${extend}\"`)\n }\n } else {\n const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n typeList.push(format)\n }\n}\nexport function hasTypeParser(type) {\n return Object.prototype.hasOwnProperty.call(types, type)\n}\nexport function removeTypeParser(type) {\n delete types[type]\n const typeLists = [\n ...Object.keys(dataTypes).map((key) => dataTypes[key]),\n ...Object.keys(types)\n .map((type) => types[type].extensions)\n .filter((list) => list.length > 0),\n ]\n typeLists.forEach((typeList) => {\n const index = typeList.indexOf(type)\n if (index > -1) {\n typeList.splice(index, 1)\n }\n })\n}\nexport function listTypeParser() {\n return Object.keys(types)\n}\nexport function treeTypeParser() {\n const attachNode = (name) => ({\n name,\n children: types[name].extensions.map(attachNode),\n })\n return {\n name: 'Type tree',\n children: Object.keys(dataTypes).map((name) => ({\n name,\n children: dataTypes[name].map(attachNode),\n })),\n }\n}\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { type, typeMatcher } from './type.js'\nclass TypeParser {\n constructor(data) {\n _defineProperty(this, 'validDataTypes', [\n 'String',\n 'Array',\n 'SimpleObject',\n 'ComplexObject',\n 'Primitive',\n ])\n this.data = data\n }\n validateDataType() {\n const dataType = this.data.dataType\n if (dataType && !this.validDataTypes.includes(dataType)) {\n throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`)\n }\n }\n validateParseType() {\n const predicate = this.data.predicate\n if (predicate && !(predicate instanceof RegExp || typeof predicate === 'function')) {\n throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`)\n }\n }\n validateTokenList() {\n const tokenList = this.data.tokenList\n if (tokenList && typeof tokenList !== 'object') {\n throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`)\n }\n }\n validatePropertyConstraint() {\n const propertyConstraint = this.data.propertyConstraint\n if (propertyConstraint && typeof propertyConstraint !== 'object') {\n throw new TypeError(\n `propertyConstraint was ${typeof propertyConstraint}; expected array or object`\n )\n }\n }\n validateElementConstraint() {\n const elementConstraint = this.data.elementConstraint\n if (elementConstraint && typeof elementConstraint !== 'string') {\n throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`)\n }\n }\n validateExtends() {\n const extend = this.data.extends\n if (extend && typeof extend !== 'string') {\n throw new TypeError(`extends was ${typeof extend}; expected string`)\n }\n }\n validate() {\n if (this.data === null || typeof this.data !== 'object') {\n throw new TypeError(`typeParser was ${typeof this.data}; expected object`)\n }\n this.validateDataType()\n this.validateParseType()\n this.validateTokenList()\n this.validatePropertyConstraint()\n this.validateElementConstraint()\n this.validateExtends()\n }\n parseTokenList() {\n let tokenList = this.data.tokenList\n if (!tokenList) {\n return []\n } else if (tokenList instanceof RegExp) {\n tokenList = {\n token: tokenList,\n }\n }\n const { token, split = /\\s+/, trim = true, every = true } = tokenList\n const trimInput = (input) => (trim ? input.trim() : input)\n const testTokens = every ? 'every' : 'some'\n const predicate = (input) =>\n trimInput(input)\n .split(split)\n [testTokens]((part) => token.test(part))\n return [predicate]\n }\n parsePropertyConstraint() {\n const constraints = [].concat(this.data.propertyConstraint || [])\n return constraints.map(({ props, match, value }) => {\n props = [].concat(props)\n switch (match) {\n case 'any':\n case 'some':\n return (input) => props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'none':\n return (input) => !props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'every':\n default:\n return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n }\n })\n }\n parseElementConstraint() {\n const constraint = this.data.elementConstraint\n return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\n }\n parsePredicate() {\n if (this.data.predicate instanceof RegExp) {\n return [this.data.predicate.test.bind(this.data.predicate)]\n } else if (this.data.predicate) {\n return [this.data.predicate]\n } else {\n return []\n }\n }\n getCombinedPredicate() {\n const predicates = [\n ...this.parsePredicate(),\n ...this.parseTokenList(),\n ...this.parsePropertyConstraint(),\n ...this.parseElementConstraint(),\n ]\n if (predicates.length === 0) {\n return () => true\n } else if (predicates.length === 1) {\n return predicates[0]\n } else {\n return (input) => predicates.every((predicate) => predicate(input))\n }\n }\n getDataType() {\n if (this.data.dataType) {\n return this.data.dataType\n } else if (this.data.predicate instanceof RegExp) {\n return 'String'\n } else if (this.data.tokenList) {\n return 'String'\n } else if (this.data.elementConstraint) {\n return 'Array'\n } else {\n return 'Primitive'\n }\n }\n get dataType() {\n return this.getDataType()\n }\n get predicate() {\n return this.getCombinedPredicate()\n }\n get extends() {\n return this.data.extends\n }\n}\nclass DataParser {\n constructor(parser, { async } = {}) {\n this.parser = parser\n this.async = async\n }\n validate() {\n const parser = this.parser\n if (typeof parser !== 'function') {\n throw new TypeError(`parser was ${typeof parser}; expected function`)\n }\n }\n}\nclass FormatParser {\n constructor(format, parsers = {}) {\n this.format = format\n if (parsers.parseType) {\n this.typeParser = new TypeParser(parsers.parseType)\n }\n if (parsers.parse) {\n this.dataParser = new DataParser(parsers.parse, {\n async: false,\n })\n }\n if (parsers.parseAsync) {\n this.asyncDataParser = new DataParser(parsers.parseAsync, {\n async: true,\n })\n }\n }\n validateFormat() {\n const format = this.format\n if (!typeMatcher.test(format)) {\n throw new TypeError(`format name was \"${format}\"; didn't match expected pattern`)\n }\n }\n validate() {\n this.validateFormat()\n if (this.typeParser) {\n this.typeParser.validate()\n }\n if (this.dataParser) {\n this.dataParser.validate()\n }\n if (this.asyncDataParser) {\n this.asyncDataParser.validate()\n }\n }\n}\nexport { TypeParser, DataParser, FormatParser }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { parse as parseName } from '@citation-js/name'\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\nconst entryTypes = {\n article: true,\n 'article-journal': true,\n 'article-magazine': true,\n 'article-newspaper': true,\n bill: true,\n book: true,\n broadcast: true,\n chapter: true,\n classic: true,\n collection: true,\n dataset: true,\n document: true,\n entry: true,\n 'entry-dictionary': true,\n 'entry-encyclopedia': true,\n event: true,\n figure: true,\n graphic: true,\n hearing: true,\n interview: true,\n legal_case: true,\n legislation: true,\n manuscript: true,\n map: true,\n motion_picture: true,\n musical_score: true,\n pamphlet: true,\n 'paper-conference': true,\n patent: true,\n performance: true,\n periodical: true,\n personal_communication: true,\n post: true,\n 'post-weblog': true,\n regulation: true,\n report: true,\n review: true,\n 'review-book': true,\n software: true,\n song: true,\n speech: true,\n standard: true,\n thesis: true,\n treaty: true,\n webpage: true,\n 'journal-article': 'article-journal',\n 'book-chapter': 'chapter',\n 'posted-content': 'manuscript',\n 'proceedings-article': 'paper-conference',\n dissertation: 'thesis',\n}\nconst fieldTypes = {\n author: NAME_LIST,\n chair: NAME_LIST,\n 'collection-editor': NAME_LIST,\n compiler: NAME_LIST,\n composer: NAME_LIST,\n 'container-author': NAME_LIST,\n contributor: NAME_LIST,\n curator: NAME_LIST,\n director: NAME_LIST,\n editor: NAME_LIST,\n 'editorial-director': NAME_LIST,\n 'executive-producer': NAME_LIST,\n guest: NAME_LIST,\n host: NAME_LIST,\n interviewer: NAME_LIST,\n illustrator: NAME_LIST,\n narrator: NAME_LIST,\n organizer: NAME_LIST,\n 'original-author': NAME_LIST,\n performer: NAME_LIST,\n producer: NAME_LIST,\n 'reviewed-author': NAME_LIST,\n recipient: NAME_LIST,\n 'script-writer': NAME_LIST,\n 'series-creator': NAME_LIST,\n translator: NAME_LIST,\n accessed: DATE,\n 'available-date': DATE,\n container: DATE,\n 'event-date': DATE,\n issued: DATE,\n 'original-date': DATE,\n submitted: DATE,\n type: TYPE,\n categories: 'object',\n custom: 'object',\n id: ['string', 'number'],\n language: 'string',\n journalAbbreviation: 'string',\n shortTitle: 'string',\n abstract: 'string',\n annote: 'string',\n archive: 'string',\n archive_collection: 'string',\n archive_location: 'string',\n 'archive-place': 'string',\n authority: 'string',\n 'call-number': 'string',\n 'chapter-number': 'string',\n 'citation-number': 'string',\n 'citation-key': 'string',\n 'citation-label': 'string',\n 'collection-number': 'string',\n 'collection-title': 'string',\n 'container-title': 'string',\n 'container-title-short': 'string',\n dimensions: 'string',\n division: 'string',\n DOI: 'string',\n edition: ['string', 'number'],\n event: 'string',\n 'event-title': 'string',\n 'event-place': 'string',\n 'first-reference-note-number': 'string',\n genre: 'string',\n ISBN: 'string',\n ISSN: 'string',\n issue: ['string', 'number'],\n jurisdiction: 'string',\n keyword: 'string',\n locator: 'string',\n medium: 'string',\n note: 'string',\n number: ['string', 'number'],\n 'number-of-pages': 'string',\n 'number-of-volumes': ['string', 'number'],\n 'original-publisher': 'string',\n 'original-publisher-place': 'string',\n 'original-title': 'string',\n page: 'string',\n 'page-first': 'string',\n 'part-number': ['string', 'number'],\n 'part-title': 'string',\n PMCID: 'string',\n PMID: 'string',\n printing: 'string',\n publisher: 'string',\n 'publisher-place': 'string',\n references: 'string',\n 'reviewed-title': 'string',\n 'reviewed-genre': 'string',\n scale: 'string',\n section: 'string',\n source: 'string',\n status: 'string',\n supplement: ['string', 'number'],\n title: 'string',\n 'title-short': 'string',\n URL: 'string',\n version: 'string',\n volume: ['string', 'number'],\n 'volume-title': 'string',\n 'volume-title-short': 'string',\n 'year-suffix': 'string',\n}\nfunction correctName(name, bestGuessConversions) {\n if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n if (name.ORCID || name.orcid || name._ORCID) {\n name = _objectSpread(\n {\n _orcid: name.ORCID || name.orcid || name._ORCID,\n },\n name\n )\n delete name.ORCID\n delete name.orcid\n delete name._ORCID\n }\n return name\n } else if (!bestGuessConversions) {\n return undefined\n } else if (typeof name === 'string') {\n return parseName(name)\n }\n}\nfunction correctNameList(nameList, bestGuessConversions) {\n if (nameList instanceof Array) {\n const names = nameList.map((name) => correctName(name, bestGuessConversions)).filter(Boolean)\n return names.length ? names : undefined\n }\n}\nfunction correctDateParts(dateParts, bestGuessConversions) {\n if (dateParts.every((part) => typeof part === 'number')) {\n return dateParts\n } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {\n return undefined\n } else {\n return dateParts.map((part) => parseInt(part))\n }\n}\nfunction correctDate(date, bestGuessConversions) {\n const dp = 'date-parts'\n if (typeof date !== 'object' || date === null) {\n return undefined\n } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {\n const range = date[dp]\n .map((dateParts) => correctDateParts(dateParts, bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? _objectSpread(\n _objectSpread({}, date),\n {},\n {\n 'date-parts': range,\n }\n )\n : undefined\n } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {\n const range = date\n .map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions))\n .filter(Boolean)\n return range.length\n ? {\n 'date-parts': range,\n }\n : undefined\n } else if (date[dp] instanceof Array) {\n const dateParts = correctDateParts(date[dp], bestGuessConversions)\n return (\n dateParts && {\n 'date-parts': [dateParts],\n }\n )\n } else if ('literal' in date || 'raw' in date) {\n return date\n }\n}\nfunction correctType(type, bestGuessConversions) {\n type = correctField('language', type, bestGuessConversions)\n if (entryTypes[type] === true) {\n return type\n }\n if (bestGuessConversions) {\n if (type in entryTypes) {\n return entryTypes[type]\n } else if (type.toLowerCase() !== type) {\n return correctType(type.toLowerCase(), bestGuessConversions)\n }\n }\n return undefined\n}\nfunction correctField(fieldName, value, bestGuessConversions) {\n const fieldType = [].concat(fieldTypes[fieldName])\n switch (fieldTypes[fieldName]) {\n case NAME:\n return correctName(value, bestGuessConversions)\n case NAME_LIST:\n return correctNameList(value, bestGuessConversions)\n case DATE:\n return correctDate(value, bestGuessConversions)\n case TYPE:\n return correctType(value, bestGuessConversions)\n }\n if (bestGuessConversions) {\n if (\n typeof value === 'string' &&\n fieldType.includes('number') &&\n !fieldType.includes('string') &&\n !isNaN(+value)\n ) {\n return parseFloat(value)\n } else if (\n typeof value === 'number' &&\n fieldType.includes('string') &&\n !fieldType.includes('number')\n ) {\n return value.toString()\n } else if (Array.isArray(value) && value.length) {\n return correctField(fieldName, value[0], bestGuessConversions)\n }\n }\n if (fieldType.includes(typeof value)) {\n return value\n }\n}\nfunction parseCsl(data, bestGuessConversions = true) {\n return data.map(function (entry) {\n const clean = {}\n for (const field in entry) {\n const correction = correctField(field, entry[field], bestGuessConversions)\n if (correction !== undefined) {\n clean[field] = correction\n }\n }\n return clean\n })\n}\nexport { parseCsl as clean }\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nexport function upgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(upgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event' in item) {\n item['event-title'] = item.event\n delete item.event\n }\n if (item.type === 'book' && 'version' in item) {\n item.type = 'software'\n }\n return item\n}\nexport function downgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(downgradeCsl)\n }\n item = _objectSpread({}, item)\n if ('event-title' in item) {\n item.event = item['event-title']\n delete item['event-title']\n }\n if (item.type === 'software') {\n item.type = 'book'\n }\n return item\n}\n","export function deepCopy(value, seen = new Set()) {\n if (\n typeof value !== 'object' ||\n value === null ||\n (value.constructor !== Object && value.constructor !== Array)\n ) {\n return value\n }\n if (seen.has(value)) {\n throw new TypeError('Recursively copying circular structure')\n }\n seen.add(value)\n let copy\n if (value.constructor === Array) {\n copy = value.map((value) => deepCopy(value, seen))\n } else {\n const object = {}\n for (const key in value) {\n object[key] = deepCopy(value[key], seen)\n }\n copy = object\n }\n seen.delete(value)\n return copy\n}\nexport default deepCopy\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const Stream = require('stream')\n\nfunction serializeHeaders (headers) {\n return headers.raw()\n}\n\nfunction deserializeHeaders (fetch, old = {}) {\n const headers = new fetch.Headers()\n for (const name in old) {\n for (const value of old[name]) {\n headers.append(name, value)\n }\n }\n return headers\n}\n\nfunction serializeRequest (request) {\n return [\n request.url,\n {\n method: request.method,\n headers: request.headers,\n body: request.body,\n mode: request.mode,\n credentials: request.credentials,\n cache: request.cache,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n integrity: request.integrity,\n keepalive: request.keepalive,\n // signal: request.signal,\n\n // node-fetch props\n follow: request.follow,\n timeout: request.timeout,\n compress: request.compress,\n size: request.size\n // agent: request.agent\n }\n ]\n}\n\nfunction deserializeRequest (fetch, resource, init) {\n return new fetch.Request(resource, {\n ...init,\n body: init.body ? Buffer.from(init.body, 'base64') : undefined,\n headers: deserializeHeaders(fetch, init.headers)\n })\n}\n\nfunction serializeResponse (response) {\n return {\n url: response.url,\n headers: response.headers.raw(),\n status: response.status,\n statusText: response.statusText,\n counter: response.redirected ? 1 : 0 // could be more than one, but no way of telling\n }\n}\n\nfunction deserializeResponse (fetch, body, init, bodyError) {\n const buffer = Buffer.from(body, 'base64')\n\n return new fetch.Response(\n body ? createStream(buffer) : createStream(null),\n {\n ...init,\n headers: deserializeHeaders(fetch, init.headers)\n },\n {\n buffer,\n bodyError\n }\n )\n}\n\nconst errors = {\n TypeError\n}\n\nfunction serializeError ({ constructor, message, type, code }) {\n return [\n constructor.name,\n [message, type, { code }]\n ]\n}\n\nfunction deserializeError (fetch, name, init) {\n if (name in errors) {\n return new errors[name](...init)\n } else {\n return new fetch.FetchError(...init)\n }\n}\n\nfunction parseBodyType (body) {\n if (body == null) {\n return 'Null'\n } else if (body.constructor.name === 'URLSearchParams') {\n return 'URLSearchParams'\n } else if (Buffer.isBuffer(body)) {\n return 'Buffer'\n } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n return 'ArrayBuffer'\n } else if (ArrayBuffer.isView(body)) {\n return 'ArrayBufferView'\n } else if (body instanceof Stream) {\n return 'Stream'\n } else {\n return 'String'\n }\n}\n\nfunction parseBody (body, type = parseBodyType(body)) {\n switch (type) {\n case 'Null': return null\n case 'URLSearchParams': return Buffer.from(body.toString())\n case 'Buffer': return body\n case 'ArrayBuffer': return Buffer.from(body)\n case 'ArrayBufferView': return Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n case 'String': return Buffer.from(String(body))\n default: throw new TypeError(`sync-fetch does not support bodies of type: ${type}`)\n }\n}\n\nfunction createStream (buffer) {\n return new Stream.Transform({\n read () {\n this.push(buffer)\n this.push(null)\n }\n })\n}\n\nmodule.exports = {\n serializeHeaders,\n deserializeHeaders,\n serializeRequest,\n deserializeRequest,\n serializeResponse,\n deserializeResponse,\n serializeError,\n deserializeError,\n\n parseBodyType,\n parseBody,\n createStream\n}\n","const exec = require('child_process').execFileSync\nconst path = require('path')\nconst { URL } = require('url')\nconst _fetch = require('node-fetch')\nconst shared = require('./shared')\n\nfunction fetch (resource, init) {\n const request = []\n\n if (resource instanceof fetch.Request) {\n request.push(...shared.serializeRequest(resource))\n } else if (resource instanceof URL) {\n request.push(resource.href, {})\n } else {\n request.push(resource, {})\n }\n\n Object.assign(request[1], init)\n\n request[1].headers = new _fetch.Headers(request[1].headers)\n\n if (request[1].body) {\n const contentType = extractContentType(request)\n if (contentType && !request[1].headers.get('content-type')) { request[1].headers.append('content-type', contentType) }\n request[1].body = shared.parseBody(init.body).toString('base64')\n }\n\n request[1].headers = shared.serializeHeaders(request[1].headers)\n\n // TODO credentials\n\n const response = JSON.parse(sendMessage(request))\n if ('headers' in response[1]) {\n return shared.deserializeResponse(fetch, ...response)\n } else {\n throw shared.deserializeError(fetch, ...response)\n }\n}\n\nfunction sendMessage (message) {\n return exec(process.execPath, [path.join(__dirname, 'worker.js')], {\n windowsHide: true,\n maxBuffer: Infinity,\n input: JSON.stringify(message),\n shell: false\n }).toString()\n}\n\nfunction extractContentType (input) {\n const request = new _fetch.Request(...input)\n return request.headers.get('content-type') || undefined\n}\n\nconst _body = Symbol('bodyBuffer')\nconst _bodyError = Symbol('bodyError')\n\nclass SyncRequest extends _fetch.Request {\n constructor (resource, init = {}) {\n const buffer = shared.parseBody(init.body)\n\n super(resource, init)\n defineBuffer(this, buffer)\n }\n\n clone () {\n checkBody(this)\n return new SyncRequest(...shared.serializeRequest(this))\n }\n}\n\nclass SyncResponse extends _fetch.Response {\n constructor (body, init, options = {}) {\n const {\n buffer = shared.parseBody(body),\n bodyError\n } = options\n\n super(body, init)\n defineBuffer(this, buffer)\n if (bodyError) defineBodyError(this, bodyError)\n }\n\n clone () {\n checkBody(this)\n const buffer = Buffer.from(this[_body])\n return new SyncResponse(\n shared.createStream(buffer),\n shared.serializeResponse(this),\n {\n buffer,\n bodyError: this[_bodyError]\n }\n )\n }\n}\n\nclass Body {\n static mixin (proto) {\n for (const name of Object.getOwnPropertyNames(Body.prototype)) {\n if (name === 'constructor') { continue }\n const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)\n Object.defineProperty(proto, name, {\n ...desc,\n enumerable: true\n })\n }\n }\n\n arrayBuffer () {\n checkBody(this)\n const buf = consumeBody(this)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n }\n\n text () {\n checkBody(this)\n return consumeBody(this).toString()\n }\n\n json () {\n checkBody(this)\n try {\n return JSON.parse(consumeBody(this).toString())\n } catch (err) {\n throw new fetch.FetchError(`invalid json response body at ${this.url} reason: ${err.message}`, 'invalid-json')\n }\n }\n\n buffer () {\n checkBody(this)\n return Buffer.from(consumeBody(this))\n }\n\n textConverted () {\n throw new fetch.FetchError('textConverted not implemented')\n }\n}\n\nfunction _super (self, method) {\n return Object.getPrototypeOf(Object.getPrototypeOf(self))[method].bind(self)\n}\n\nfunction checkBody (body) {\n if (body[_bodyError]) {\n throw body[_bodyError]\n }\n if (body.bodyUsed) {\n throw new TypeError(`body used already for: ${body.url}`)\n }\n}\n\nfunction consumeBody (body) {\n _super(body, 'buffer')().catch(error => console.error(error))\n return body[_body] || Buffer.alloc(0)\n}\n\nfunction defineBuffer (body, buffer) {\n Object.defineProperty(body, _body, {\n value: buffer,\n enumerable: false\n })\n}\n\nfunction defineBodyError (body, error) {\n Object.defineProperty(body, _bodyError, {\n value: shared.deserializeError(fetch, ...error),\n enumerable: false\n })\n}\n\nBody.mixin(SyncRequest.prototype)\nBody.mixin(SyncResponse.prototype)\nObject.defineProperties(SyncRequest.prototype, { clone: { enumerable: true } })\nObject.defineProperties(SyncResponse.prototype, { clone: { enumerable: true } })\n\nfetch.Headers = _fetch.Headers\nfetch.FetchError = _fetch.FetchError\nfetch.Request = SyncRequest\nfetch.Response = SyncResponse\nmodule.exports = fetch\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","'use strict';\n\nvar fetch = require('node-fetch');\n\nfunction wrapFetchForNode(fetch) {\n // Support schemaless URIs on the server for parity with the browser.\n // https://github.com/matthew-andrews/isomorphic-fetch/pull/10\n return function (u, options) {\n if (typeof u === 'string' && u.slice(0, 2) === '//') {\n return fetch('https:' + u, options);\n }\n\n return fetch(u, options);\n };\n}\n\nmodule.exports = function (context) {\n // Support webpack module import weirdness.\n var fetchFn = fetch.default ? fetch.default : fetch;\n\n // This modifies the global `node-fetch` object, which isn't great, since\n // different callers to `fetch-ponyfill` which pass a different Promise\n // implementation would each expect to have their implementation used. But,\n // given the way `node-fetch` is implemented, this is the only way to make\n // it work at all.\n if (context && context.Promise) {\n fetchFn.Promise = context.Promise;\n }\n\n return {\n fetch: wrapFetchForNode(fetchFn),\n Headers: fetch.Headers,\n Request: fetch.Request,\n Response: fetch.Response\n };\n};\n","// @ts-nocheck\nimport syncFetch from 'sync-fetch'\nimport fetchPolyfill from 'fetch-ponyfill'\nimport logger from '../logger.js'\nconst isBrowser = typeof location !== 'undefined' && typeof navigator !== 'undefined'\nconst { fetch: asyncFetch, Headers: asyncHeaders } =\n typeof fetch === 'function' && isBrowser\n ? {\n fetch,\n Headers,\n }\n : fetchPolyfill()\n\nlet userAgent = `Citation.js/0.7`\nif (\n typeof process !== 'undefined' &&\n process &&\n process.release &&\n process.release.name === 'node' &&\n process.version\n) {\n userAgent += ` Node.js/${process.version}`\n}\n\nfunction normaliseHeaders(headers) {\n const result = {}\n const entries =\n headers instanceof asyncHeaders || headers instanceof syncFetch.Headers\n ? Array.from(headers)\n : Object.entries(headers)\n for (const [name, header] of entries) {\n result[name.toLowerCase()] = header.toString()\n }\n return result\n}\nfunction parseOpts(opts = {}) {\n const reqOpts = {\n headers: {\n accept: '*/*',\n },\n method: 'GET',\n checkContentType: opts.checkContentType,\n }\n if (userAgent && !isBrowser) {\n reqOpts.headers['user-agent'] = userAgent\n }\n if (opts.body) {\n reqOpts.method = 'POST'\n const isJson = typeof opts.body !== 'string'\n reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body\n reqOpts.headers['content-type'] = isJson ? 'application/json' : 'text/plain'\n }\n if (opts.headers) {\n Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n }\n return reqOpts\n}\nfunction sameType(request, response) {\n if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n return true\n }\n const [a, b] = response['content-type'].split(';')[0].trim().split('/')\n return request.accept\n .split(',')\n .map((type) => type.split(';')[0].trim().split('/'))\n .some(([c, d]) => (c === a || c === '*') && (d === b || d === '*'))\n}\nfunction checkResponse(response, opts) {\n const { status, headers } = response\n let error\n if (status >= 400) {\n error = new Error(`Server responded with status code ${status}`)\n } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {\n error = new Error(`Server responded with content-type ${headers.get('content-type')}`)\n }\n if (error) {\n error.status = status\n error.headers = headers\n error.body = response.body\n throw error\n }\n return response\n}\nexport function fetchFile(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n const response = checkResponse(syncFetch(url, reqOpts), reqOpts)\n return response.text()\n}\nexport async function fetchFileAsync(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n return asyncFetch(url, reqOpts)\n .then((response) => checkResponse(response, reqOpts))\n .then((response) => response.text())\n}\nexport function setUserAgent(newUserAgent) {\n userAgent = newUserAgent\n}\nexport default fetchFile\n","function fetchId(list, prefix) {\n let id\n while (id === undefined || list.includes(id)) {\n id = `${prefix}${Math.random().toString().slice(2)}`\n }\n return id\n}\nexport default fetchId\n","class Register {\n constructor(data = {}) {\n this.data = data\n }\n set(key, value) {\n this.data[key] = value\n return this\n }\n add(...args) {\n return this.set(...args)\n }\n delete(key) {\n delete this.data[key]\n return this\n }\n remove(...args) {\n return this.delete(...args)\n }\n get(key) {\n return this.data[key]\n }\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.data, key)\n }\n list() {\n return Object.keys(this.data)\n }\n}\nexport default Register\n","import { deepCopy } from './deepCopy.js'\nclass Grammar {\n constructor(rules, state) {\n this.rules = rules\n this.defaultState = state\n this.mainRule = Object.keys(rules)[0]\n this.log = []\n }\n parse(iterator, mainRule) {\n this.lexer = iterator\n this.token = this.lexer.next()\n this.state = deepCopy(this.defaultState)\n this.log = []\n return this.consumeRule(mainRule || this.mainRule)\n }\n matchEndOfFile() {\n return !this.token\n }\n matchToken(type) {\n return this.token && type === this.token.type\n }\n consumeToken(type, optional) {\n const token = this.token\n if (!type || (token && token.type === type)) {\n this.token = this.lexer.next()\n return token\n } else if (optional) {\n return undefined\n } else {\n const got = token ? `\"${token.type}\"` : 'EOF'\n const error = new SyntaxError(this.lexer.formatError(token, `expected \"${type}\", got ${got}`))\n error.message += ` (${this.log.join('->')})`\n throw error\n }\n }\n consumeRule(rule) {\n this.log.push(rule)\n const result = this.rules[rule].call(this)\n this.log.pop()\n return result\n }\n}\nexport { Grammar }\n","// @ts-nocheck\nfunction createConditionEval(condition) {\n return function conditionEval(input) {\n if (typeof condition === 'boolean') {\n return condition\n }\n return Object.keys(condition).every((prop) => {\n const value = condition[prop]\n if (value === true) {\n return prop in input\n } else if (value === false) {\n return !(prop in input)\n } else if (typeof value === 'function') {\n return value(input[prop])\n } else if (Array.isArray(value)) {\n return value.includes(input[prop])\n } else {\n return input[prop] === value\n }\n })\n }\n}\nfunction parsePropStatement(prop, toSource) {\n let inputProp\n let outputProp\n let convert\n let condition\n if (typeof prop === 'string') {\n inputProp = outputProp = prop\n } else if (prop) {\n inputProp = toSource ? prop.target : prop.source\n outputProp = toSource ? prop.source : prop.target\n if (prop.convert) {\n convert = toSource ? prop.convert.toSource : prop.convert.toTarget\n }\n if (prop.when) {\n condition = toSource ? prop.when.target : prop.when.source\n if (condition != null) {\n condition = createConditionEval(condition)\n }\n }\n } else {\n return null\n }\n inputProp = [].concat(inputProp).filter(Boolean)\n outputProp = [].concat(outputProp).filter(Boolean)\n return {\n inputProp,\n outputProp,\n convert,\n condition,\n }\n}\nfunction createConverter(props, toSource) {\n toSource = toSource === Translator.CONVERT_TO_SOURCE\n props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n return function converter(input) {\n const output = {}\n for (const { inputProp, outputProp, convert, condition } of props) {\n if (outputProp.length === 0) {\n continue\n } else if (condition && !condition(input)) {\n continue\n } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n continue\n }\n let outputData = inputProp.map((prop) => input[prop])\n if (convert) {\n try {\n const converted = convert.apply(input, outputData)\n outputData = outputProp.length === 1 ? [converted] : converted\n } catch (cause) {\n throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, {\n cause,\n })\n }\n }\n outputProp.forEach((prop, index) => {\n const value = outputData[index]\n if (value !== undefined) {\n output[prop] = value\n }\n })\n }\n return output\n }\n}\nclass Translator {\n constructor(props) {\n this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n }\n}\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\nimport { get as getTypeInfo } from './register.js'\nimport { type as parseType } from './type.js'\nimport { data as parseData, dataAsync as parseDataAsync } from './data.js'\nimport { applyGraph, removeGraph } from './graph.js'\nfunction prepareParseGraph(graph) {\n return graph\n .reduce((array, next) => {\n const last = array[array.length - 1]\n if (last && last.type === next.type) {\n last.count = last.count + 1 || 2\n } else {\n array.push(next)\n }\n return array\n }, [])\n .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n .join(' -> ')\n}\nclass ChainParser {\n constructor(input, options = {}) {\n this.options = Object.assign(\n {\n generateGraph: true,\n forceType: parseType(input),\n maxChainLength: 10,\n strict: true,\n target: '@csl/list+object',\n },\n options\n )\n this.type = this.options.forceType\n this.data = typeof input === 'object' ? deepCopy(input) : input\n this.graph = [\n {\n type: this.type,\n data: input,\n },\n ]\n this.iteration = 0\n }\n iterate() {\n if (this.iteration !== 0) {\n const typeInfo = getTypeInfo(this.type)\n if (typeInfo && typeInfo.outputs) {\n this.type = typeInfo.outputs\n } else {\n this.type = parseType(this.data)\n }\n this.graph.push({\n type: this.type,\n })\n }\n if (this.error || this.type === this.options.target) {\n return false\n } else if (this.iteration >= this.options.maxChainLength) {\n this.error = new RangeError(\n `Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`\n )\n return false\n } else {\n this.iteration++\n return true\n }\n }\n end() {\n if (this.error) {\n logger.error('[core]', this.error.message)\n if (this.options.strict !== false) {\n throw this.error\n } else {\n return []\n }\n } else if (this.options.target === '@csl/list+object') {\n return upgradeCsl(this.data).map(\n this.options.generateGraph ? (entry) => applyGraph(entry, this.graph) : removeGraph\n )\n } else {\n return this.data\n }\n }\n}\nexport const chain = (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n try {\n chain.data = parseData(chain.data, chain.type)\n } catch (e) {\n chain.error = e\n }\n }\n return chain.end()\n}\nexport const chainLink = (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseData(output, type)\n}\nexport const chainAsync = async (...args) => {\n const chain = new ChainParser(...args)\n while (chain.iterate()) {\n chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n chain.error = e\n })\n }\n return chain.end()\n}\nexport const chainLinkAsync = async (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n return parseDataAsync(output, type)\n}\n","import { chain, chainAsync } from './chain.js'\nconst parsers = {}\nconst asyncParsers = {}\nconst nativeParsers = {\n '@csl/object': (input) => [input],\n '@csl/list+object': (input) => input,\n '@else/list+object': (input) => input.map(chain).flat(),\n '@invalid': () => {\n throw new Error('This format is not supported or recognized')\n },\n}\nconst nativeAsyncParsers = {\n '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\nexport function data(input, type) {\n if (typeof parsers[type] === 'function') {\n return parsers[type](input)\n } else if (typeof nativeParsers[type] === 'function') {\n return nativeParsers[type](input)\n } else {\n throw new TypeError(`No synchronous parser found for ${type}`)\n }\n}\nexport async function dataAsync(input, type) {\n if (typeof asyncParsers[type] === 'function') {\n return asyncParsers[type](input)\n } else if (typeof nativeAsyncParsers[type] === 'function') {\n return nativeAsyncParsers[type](input)\n } else if (hasDataParser(type, false)) {\n return data(input, type)\n } else {\n throw new TypeError(`No parser found for ${type}`)\n }\n}\nexport function addDataParser(format, { parser, async }) {\n if (async) {\n asyncParsers[format] = parser\n } else {\n parsers[format] = parser\n }\n}\nexport function hasDataParser(type, async) {\n return async\n ? asyncParsers[type] || nativeAsyncParsers[type]\n : parsers[type] || nativeParsers[type]\n}\nexport function removeDataParser(type, async) {\n delete (async ? asyncParsers : parsers)[type]\n}\nexport function listDataParser(async) {\n return Object.keys(async ? asyncParsers : parsers)\n}\n","import { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\nconst formats = {}\nexport function add(format, parsers) {\n const formatParser = new FormatParser(format, parsers)\n formatParser.validate()\n const index = formats[format] || (formats[format] = {})\n if (formatParser.typeParser) {\n addTypeParser(format, formatParser.typeParser)\n index.type = true\n }\n if (formatParser.dataParser) {\n addDataParser(format, formatParser.dataParser)\n index.data = true\n }\n if (formatParser.asyncDataParser) {\n addDataParser(format, formatParser.asyncDataParser)\n index.asyncData = true\n }\n if (parsers.outputs) {\n index.outputs = parsers.outputs\n }\n}\nexport function get(format) {\n return formats[format]\n}\nexport function remove(format) {\n const index = formats[format]\n if (!index) {\n return\n }\n if (index.type) {\n removeTypeParser(format)\n }\n if (index.data) {\n removeDataParser(format)\n }\n if (index.asyncData) {\n removeDataParser(format, true)\n }\n delete formats[format]\n}\nexport function has(format) {\n return format in formats\n}\nexport function list() {\n return Object.keys(formats)\n}\n","import * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\nexport const util = Object.assign({}, dataType, graph, parser, csl)\nexport * from './register'\nexport * from './chain'\nexport * from './type'\nexport * from './data'\n","// @ts-nocheck\nimport { chain as parseInput, chainAsync as parseInputAsync } from '../plugins/input/index.js'\nimport fetchId from '../util/fetchId.js'\nfunction add(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...parseInput(data, options))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nasync function addAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data.push(...(await parseInputAsync(data, options)))\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n return this\n}\nfunction set(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\nasync function setAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n this.data = []\n return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\nfunction reset(log) {\n if (log) {\n this.save()\n }\n this.data = []\n this._options = {}\n return this\n}\nexport { add, addAsync, set, setAsync, reset }\n","function getLabel(entry) {\n if ('citation-label' in entry) {\n return entry['citation-label']\n }\n let res = ''\n if (entry.author) {\n res += entry.author[0].family || entry.author[0].literal\n }\n if (entry.issued && entry.issued['date-parts'] && entry.issued['date-parts'][0]) {\n res += entry.issued['date-parts'][0][0]\n }\n if (entry['year-suffix']) {\n res += entry['year-suffix']\n } else if (entry.title) {\n res += entry.title.replace(/<\\/?.*?>/g, '').match(/^(?:(?:the|a|an)\\s+)?(\\S+)/i)[1]\n }\n return res\n}\nexport { getLabel }\nexport default {\n label(data) {\n return data.reduce((object, entry) => {\n object[entry.id] = getLabel(entry)\n return object\n }, {})\n },\n}\n","import { getLabel } from '../plugin-common/output/label.js'\nimport { format as getName } from '@citation-js/name'\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n let value = label ? getLabel(obj) : obj[prop]\n switch (prop) {\n case 'author':\n case 'editor':\n return value.map((name) => name.literal || name.family || getName(name))\n case 'accessed':\n case 'issued':\n return value['date-parts'][0]\n case 'page':\n return value.split('-').map((num) => parseInt(num))\n case 'edition':\n case 'issue':\n case 'volume':\n value = parseInt(value)\n return !isNaN(value) ? value : -Infinity\n default:\n return value || -Infinity\n }\n}\nfunction compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {\n prop = prop.replace(/^!/, '')\n const a = getComparisonValue(entryA, prop)\n const b = getComparisonValue(entryB, prop)\n return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\nfunction getSortCallback(...props) {\n return (a, b) => {\n const keys = props.slice()\n let output = 0\n while (!output && keys.length) {\n output = compareProp(a, b, keys.shift())\n }\n return output\n }\n}\nfunction sort(method = [], log) {\n if (log) {\n this.save()\n }\n this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n return this\n}\nexport { sort }\n","import Register from '../util/register.js'\nfunction validate(name, formatter) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`)\n } else if (typeof formatter !== 'function') {\n throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`)\n }\n}\nexport const register = new Register()\nexport function add(name, formatter) {\n validate(name, formatter)\n register.set(name, formatter)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function format(name, data, ...options) {\n if (!register.has(name)) {\n throw new Error(`Output format \"${name}\" unavailable`)\n }\n return register.get(name)(data, ...options)\n}\n","import { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\nexport function getIds() {\n return this.data.map((entry) => entry.id)\n}\nexport function format(format, ...options) {\n return formatData(format, parseCsl(this.data), ...options)\n}\nexport function get(options = {}) {\n validate(options)\n const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\n const { type, style } = parsedOptions\n const [styleType, styleFormat] = style.split('-')\n const newStyle =\n styleType === 'citation' ? 'bibliography' : styleType === 'csl' ? 'data' : styleType\n const newType = type === 'string' ? 'text' : type === 'json' ? 'object' : type\n let formatOptions\n switch (newStyle) {\n case 'bibliography': {\n const { lang, append, prepend } = parsedOptions\n formatOptions = {\n template: styleFormat,\n lang,\n format: newType,\n append,\n prepend,\n }\n break\n }\n case 'data':\n case 'bibtex':\n case 'bibtxt':\n case 'ndjson':\n case 'ris':\n formatOptions = {\n type: newType,\n }\n break\n default:\n throw new Error(`Invalid style \"${newStyle}\"`)\n }\n const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\n const { format } = parsedOptions\n if (\n format === 'real' &&\n newType === 'html' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n ) {\n const tmp = document.createElement('div')\n tmp.innerHTML = result\n return tmp.firstChild\n } else if (format === 'string' && typeof result === 'object') {\n return JSON.stringify(result)\n } else {\n return result\n }\n}\n","function async(data, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options\n options = undefined\n }\n const promise = new this().setAsync(data, options)\n if (typeof callback === 'function') {\n promise.then(callback)\n return undefined\n } else {\n return promise\n }\n}\nexport default async\n","// @ts-nocheck\nimport * as log from './log.js'\nimport * as options from './options.js'\nimport * as set from './set.js'\nimport * as sort from './sort.js'\nimport * as get from './get.js'\nimport * as staticMethods from './static.js'\nfunction Cite(data, options = {}) {\n if (!(this instanceof Cite)) {\n return new Cite(data, options)\n }\n this._options = options\n this.log = []\n this.data = []\n this.set(data, options)\n this.options(options)\n return this\n}\nObject.assign(Cite.prototype, log, options, set, sort, get)\nCite.prototype[Symbol.iterator] = function* () {\n yield* this.data\n}\nObject.assign(Cite, staticMethods)\nexport default Cite\n","import Register from '../util/register.js'\nfunction validate(name, dict) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid dict name, expected string, got ${typeof name}`)\n } else if (typeof dict !== 'object') {\n throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`)\n }\n for (const entryName in dict) {\n const entry = dict[entryName]\n if (!Array.isArray(entry) || entry.some((part) => typeof part !== 'string')) {\n throw new TypeError(`Invalid dict entry \"${entryName}\", expected array of strings`)\n }\n }\n}\nexport const register = new Register({\n html: {\n bibliographyContainer: ['
', '
'],\n entry: ['
', '
'],\n list: ['
    ', '
'],\n listItem: ['
  • ', '
  • '],\n },\n text: {\n bibliographyContainer: ['', '\\n'],\n entry: ['', '\\n'],\n list: ['\\n', ''],\n listItem: ['\\t', '\\n'],\n },\n})\nexport function add(name, dict) {\n validate(name, dict)\n register.set(name, dict)\n}\nexport function remove(name) {\n register.remove(name)\n}\nexport function has(name) {\n return register.has(name)\n}\nexport function list() {\n return register.list()\n}\nexport function get(name) {\n if (!register.has(name)) {\n throw new Error(`Dict \"${name}\" unavailable`)\n }\n return register.get(name)\n}\nexport const htmlDict = {\n wr_start: '
    ',\n wr_end: '
    ',\n en_start: '
    ',\n en_end: '
    ',\n ul_start: '
      ',\n ul_end: '
    ',\n li_start: '
  • ',\n li_end: '
  • ',\n}\nexport const textDict = {\n wr_start: '',\n wr_end: '\\n',\n en_start: '',\n en_end: '\\n',\n ul_start: '\\n',\n ul_end: '',\n li_start: '\\t',\n li_end: '\\n',\n}\n","const configs = {}\nexport function add(ref, config) {\n configs[ref] = config\n}\nexport function get(ref) {\n return configs[ref]\n}\nexport function has(ref) {\n return Object.prototype.hasOwnProperty.call(configs, ref)\n}\nexport function remove(ref) {\n delete configs[ref]\n}\nexport function list() {\n return Object.keys(configs)\n}\n","// @ts-nocheck\nimport * as input from './input/index.js'\nimport * as output from './output.js'\nimport * as dict from './dict.js'\nimport * as config from './config.js'\nconst registers = {\n input,\n output,\n dict,\n config,\n}\nconst indices = {}\nexport function add(ref, plugins = {}) {\n const mainIndex = (indices[ref] = {})\n for (const type in plugins) {\n if (type === 'config') {\n mainIndex.config = {\n [ref]: plugins.config,\n }\n registers.config.add(ref, plugins.config)\n continue\n }\n const typeIndex = (mainIndex[type] = {})\n const typePlugins = plugins[type]\n for (const name in typePlugins) {\n const typePlugin = typePlugins[name]\n typeIndex[name] = true\n registers[type].add(name, typePlugin)\n }\n }\n}\nexport function remove(ref) {\n const mainIndex = indices[ref]\n for (const type in mainIndex) {\n const typeIndex = mainIndex[type]\n for (const name in typeIndex) {\n registers[type].remove(name)\n }\n }\n delete indices[ref]\n}\nexport function has(ref) {\n return ref in indices\n}\nexport function list() {\n return Object.keys(indices)\n}\nexport { input, output, dict, config }\n","export function parse() {\n return []\n}\n","import logger from '../../logger.js'\nconst substituters = [\n [/((?:\\[|:|,)\\s*)'((?:\\\\'|[^'])*?[^\\\\])?'(?=\\s*(?:\\]|}|,))/g, '$1\"$2\"'],\n [\n /((?:(?:\"|]|}|\\/[gmiuys]|\\.|(?:\\d|\\.|-)*\\d)\\s*,|{)\\s*)(?:\"([^\":\\n]+?)\"|'([^\":\\n]+?)'|([^\":\\n]+?))(\\s*):/g,\n '$1\"$2$3$4\"$5:',\n ],\n]\nfunction parseJSON(str) {\n if (typeof str !== 'string') {\n return JSON.parse(str)\n }\n try {\n return JSON.parse(str)\n } catch (e) {\n logger.debug('[plugin-common]', 'Invalid JSON, switching to experimental parser')\n substituters.forEach(([regex, subst]) => {\n str = str.replace(regex, subst)\n })\n return JSON.parse(str)\n }\n}\nexport { parseJSON as parse, parseJSON as default }\n","export function parse(input) {\n return input.val() || input.text() || input.html()\n}\n","export function parse(input) {\n return input.value || input.textContent\n}\n","// @ts-nocheck\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\nexport const ref = '@else'\nexport const parsers = {\n empty,\n json,\n jquery,\n html,\n}\nexport const formats = {\n '@empty/text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: (input) => input === '',\n },\n },\n '@empty/whitespace+text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s+$/,\n },\n },\n '@empty': {\n parse: empty.parse,\n parseType: {\n dataType: 'Primitive',\n predicate: (input) => input == null,\n },\n },\n '@else/json': {\n parse: json.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\{[\\S\\s]*\\}|\\[[\\S\\s]*\\])\\s*$/,\n },\n },\n '@else/url': {\n parseType: {\n dataType: 'String',\n predicate: /^https?:\\/\\/(([\\w-]+\\.)*[\\w-]+)(:\\d+)?(\\/[^?/]*)*(\\?[^#]*)?(#.*)?$/i,\n },\n },\n '@else/jquery': {\n parse: jquery.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof jQuery !== 'undefined' && input instanceof jQuery\n },\n },\n },\n '@else/html': {\n parse: html.parse,\n parseType: {\n dataType: 'ComplexObject',\n predicate(input) {\n return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n },\n },\n },\n}\n","// @ts-nocheck\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\nfunction appendCommas(string, index, array) {\n return string + (index < array.length - 1 ? ',' : '')\n}\nfunction getJsonObject(src, dict) {\n const isArray = Array.isArray(src)\n let entries\n if (isArray) {\n entries = src.map((entry) => getJsonValue(entry, dict))\n } else {\n entries = Object.keys(src)\n .filter((prop) => JSON.stringify(src[prop]))\n .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n }\n entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n entries = dict.list.join(entries.join(''))\n return isArray ? `[${entries}]` : `{${entries}}`\n}\nfunction getJsonValue(src, dict) {\n if (typeof src === 'object' && src !== null) {\n if (src.length === 0) {\n return '[]'\n } else if (Object.keys(src).length === 0) {\n return '{}'\n } else {\n return getJsonObject(src, dict)\n }\n } else {\n return JSON.stringify(src)\n }\n}\nfunction getJson(src, dict) {\n let entries = src.map((entry) => getJsonObject(entry, dict))\n entries = entries.map(appendCommas).map((entry) => dict.entry.join(entry))\n entries = entries.join('')\n return dict.bibliographyContainer.join(`[${entries}]`)\n}\nexport function getJsonWrapper(src) {\n return getJson(src, plugins.dict.get('html'))\n}\nexport default {\n data(data, { type, format = type || 'text', version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n if (format === 'object') {\n return util.deepCopy(data)\n } else if (format === 'text') {\n return JSON.stringify(data, null, 2)\n } else {\n logger.warn(\n '[core]',\n 'This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144'\n )\n return getJson(data, plugins.dict.get(format))\n }\n },\n ndjson(data, { version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n return data.map((entry) => JSON.stringify(entry)).join('\\n')\n },\n}\n","import json from './json.js'\nimport label from './label.js'\nexport default Object.assign({}, json, label)\n","import * as plugins from '../plugins'\nimport { ref, formats as input } from './input/'\nimport output from './output/'\nplugins.add(ref, {\n input,\n output,\n})\n","// @ts-nocheck\nimport { parse as parseDate } from '@citation-js/date'\nimport { parse as parseName } from '@citation-js/name'\nfunction nameProps(person) {\n const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n if (given && family) {\n return {\n given,\n family,\n }\n } else if (person.name) {\n return parseName(person.name)\n }\n}\nconst identifiers = ['PMID', 'PMCID', 'DOI', 'ISBN']\nconst journalIdentifiers = ['ISSN']\nfunction idProps(input, identifiers) {\n const output = {}\n for (const prop in input) {\n const upperCaseProp = prop.toUpperCase()\n if (identifiers.includes(upperCaseProp)) {\n output[upperCaseProp] = input[prop]\n }\n }\n if (input.identifier) {\n for (let { id, type = '' } of input.identifier) {\n type = type.toUpperCase()\n if (identifiers.includes(type)) {\n output[type] = id\n }\n }\n }\n return output\n}\nconst typeMap = {\n article: 'article',\n book: 'book',\n booklet: 'book',\n proceedings: 'book',\n mastersthesis: 'thesis',\n inbook: 'chapter',\n incollection: 'chapter',\n conference: 'paper-conference',\n inproceedings: 'paper-conference',\n manual: 'report',\n misc: 'document',\n online: 'website',\n patent: 'patent',\n phdthesis: 'thesis',\n techreport: 'report',\n unpublished: 'manuscript',\n}\nfunction quickscrapeSpecificProps() {\n return {\n type: 'article-journal',\n }\n}\nfunction generalProps(input) {\n const output = {\n type: typeMap[input.type] || 'document',\n title: input.title,\n }\n if (input.author) {\n output.author = input.author.map(nameProps).filter(Boolean)\n }\n if (input.editor) {\n output.editor = input.editor.map(nameProps).filter(Boolean)\n }\n if (input.reviewer) {\n if (input.author) {\n output['reviewed-author'] = output.author\n }\n output.author = input.reviewer.map(nameProps).filter(Boolean)\n }\n if (Array.isArray(input.keywords)) {\n output.keyword = input.keywords.join()\n } else if (input.keywords) {\n output.keyword = input.keywords\n }\n if (input.publisher) {\n output.publisher = input.publisher.name || input.publisher\n }\n if (input.date && input.date.published) {\n output.issued = parseDate(input.date.published)\n } else if (input.year) {\n output.issued = {\n 'date-parts': [[+input.year]],\n }\n }\n if (input.date && input.date.submitted) {\n output.submitted = parseDate(input.date.submitted)\n }\n if (input.journal) {\n const journal = input.journal\n if (journal.name) {\n output['container-title'] = journal.name\n }\n if (journal.volume) {\n output.volume = journal.volume\n }\n if (journal.issue) {\n output.issue = journal.issue\n }\n Object.assign(output, idProps(journal, journalIdentifiers))\n if (journal.firstpage) {\n output['page-first'] = journal.firstpage\n }\n if (journal.pages) {\n output.page = journal.pages.replace('--', '-')\n } else if (journal.firstpage && journal.lastpage) {\n output.page = journal.firstpage + '-' + journal.lastpage\n }\n }\n if (input.link && typeof input.link[0] === 'object') {\n output.URL = input.link[0].url\n }\n Object.assign(output, idProps(input, identifiers))\n if (input.cid) {\n output.id = input.cid\n } else if (output.DOI) {\n output.id = output.DOI\n }\n return output\n}\nconst parseContentMine = function (data) {\n return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\nconst parseBibJson = function (data) {\n return generalProps(data)\n}\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","import * as json from './json.js'\nimport { plugins } from '../core/index.js'\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\nconst ref = '@bibjson'\nconst parsers = {\n json,\n}\nconst formats = {\n '@bibjson/quickscrape+record+object': {\n parse: json.quickscrapeRecord,\n parseType: {\n propertyConstraint: {\n props: 'link',\n value(links) {\n return scraperLinks.some((link) => links.find(({ type }) => type === link))\n },\n },\n extends: '@bibjson/record+object',\n },\n },\n '@bibjson/record+object': {\n parse: json.record,\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'title',\n },\n {\n props: ['author', 'editor'],\n match: 'some',\n value(authors) {\n return (\n Array.isArray(authors) &&\n authors[0] &&\n authorNameFields.some((field) => field in authors[0])\n )\n },\n },\n ],\n },\n },\n '@bibjson/collection+object': {\n parse(collection) {\n return collection.records\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'metadata',\n value(metadata) {\n return 'collection' in metadata\n },\n },\n {\n props: 'records',\n value(records) {\n return Array.isArray(records)\n },\n },\n ],\n },\n },\n}\nplugins.add(ref, {\n input: formats,\n})\nexport { ref, parsers, formats }\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function pad(s, length) {\n if (s.length > length) {\n return s\n }\n return Array(length - s.length + 1).join(\" \") + s\n }\n\n function lastNLines(string, numLines) {\n var position = string.length\n var lineBreaks = 0;\n while (true) {\n var idx = string.lastIndexOf(\"\\n\", position - 1)\n if (idx === -1) {\n break;\n } else {\n lineBreaks++\n }\n position = idx\n if (lineBreaks === numLines) {\n break;\n }\n if (position === 0) {\n break;\n }\n }\n var startPosition = \n lineBreaks < numLines ?\n 0 : \n position + 1\n return string.substring(startPosition).split(\"\\n\")\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n\n // Use a JavaScript Map to map keywords to their corresponding token type\n // unless Map is unsupported, then fall back to using an Object:\n var isMap = typeof Map !== 'undefined'\n var reverseMap = isMap ? new Map : Object.create(null)\n\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n if (isMap) {\n reverseMap.set(keyword, tokenType)\n } else {\n reverseMap[keyword] = tokenType\n }\n })\n }\n return function(k) {\n return isMap ? reverseMap.get(k) : reverseMap[k]\n }\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedText = info ? info.queuedText: \"\";\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedText: this.queuedText,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n var err = new Error(this.formatError(token, \"invalid syntax\"))\n throw err;\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n \n var numLinesAround = 2\n var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)\n var lastDisplayedLine = token.line + numLinesAround\n var lastLineDigits = String(lastDisplayedLine).length\n var displayedLines = lastNLines(\n this.buffer, \n (this.line - token.line) + numLinesAround + 1\n )\n .slice(0, 5)\n var errorLines = []\n errorLines.push(message + \" at line \" + token.line + \" col \" + token.col + \":\")\n errorLines.push(\"\")\n for (var i = 0; i < displayedLines.length; i++) {\n var line = displayedLines[i]\n var lineNo = firstDisplayedLine + i\n errorLines.push(pad(String(lineNo), lastLineDigits) + \" \" + line);\n if (lineNo === token.line) {\n errorLines.push(pad(\"\", lastLineDigits + token.col + 1) + \"^\")\n }\n }\n return errorLines.join(\"\\n\")\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","const biblatexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n mvbook: 'book',\n inbook: 'chapter',\n bookinbook: 'book',\n booklet: 'book',\n collection: 'book',\n mvcollection: 'book',\n incollection: 'chapter',\n dataset: 'dataset',\n manual: 'report',\n misc: 'document',\n online: 'webpage',\n patent: 'patent',\n periodical: 'periodical',\n proceedings: 'book',\n mvproceedings: 'book',\n inproceedings: 'paper-conference',\n reference: 'book',\n mvreference: 'book',\n inreference: 'entry',\n report: 'report',\n software: 'software',\n thesis: 'thesis',\n unpublished: 'manuscript',\n artwork: 'graphic',\n audio: 'song',\n image: 'figure',\n jurisdiction: 'legal_case',\n legislation: 'legislation',\n legal: 'treaty',\n letter: 'personal_communication',\n movie: 'motion_picture',\n music: 'musical_score',\n performance: 'performance',\n review: 'review',\n standard: 'standard',\n video: 'motion_picture',\n conference: 'paper-conference',\n electronic: 'webpage',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n techreport: 'report',\n www: 'webpage',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n bill: 'legislation',\n book: 'book',\n broadcast: 'audio',\n chapter: 'inbook',\n classic: 'unpublished',\n collection: 'misc',\n dataset: 'dataset',\n document: 'misc',\n entry: 'inreference',\n 'entry-dictionary': 'inreference',\n 'entry-encyclopedia': 'inreference',\n event: 'misc',\n figure: 'artwork',\n graphic: 'artwork',\n hearing: 'legal',\n interview: 'audio',\n legal_case: 'jurisdiction',\n legislation: 'legislation',\n manuscript: 'unpublished',\n motion_picture: 'movie',\n musical_score: 'music',\n 'paper-conference': 'inproceedings',\n patent: 'patent',\n performance: 'performance',\n periodical: 'periodical',\n personal_communication: 'letter',\n post: 'online',\n 'post-weblog': 'online',\n regulation: 'legal',\n report: 'report',\n review: 'review',\n 'review-book': 'review',\n software: 'software',\n song: 'music',\n speech: 'audio',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'legal',\n webpage: 'online',\n },\n}\n\nexport default biblatexTypes\n","const bibtexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n booklet: 'book',\n conference: 'paper-conference',\n inbook: 'chapter',\n incollection: 'chapter',\n inproceedings: 'paper-conference',\n manual: 'report',\n mastersthesis: 'thesis',\n misc: 'document',\n phdthesis: 'thesis',\n proceedings: 'book',\n techreport: 'report',\n unpublished: 'manuscript',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n book: 'book',\n chapter: 'inbook',\n manuscript: 'unpublished',\n 'paper-conference': 'inproceedings',\n report: 'techreport',\n review: 'article',\n 'review-book': 'article',\n },\n}\n\nexport default bibtexTypes\n","const required = {\n biblatex: {\n article: ['author', 'title', 'journaltitle', ['year', 'date']],\n book: ['author', 'title', ['year', 'date']],\n mvbook: ['author', 'title', ['year', 'date']],\n inbook: ['author', 'title', 'booktitle', ['year', 'date']],\n booklet: [['author', 'editor'], 'title', ['year', 'date']],\n collection: ['editor', 'title', ['year', 'date']],\n mvcollection: ['editor', 'title', ['year', 'date']],\n incollection: ['author', 'title', 'booktitle', ['year', 'date']],\n dataset: [['author', 'editor'], 'title', ['year', 'date']],\n online: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n patent: ['author', 'title', 'number', ['year', 'date']],\n periodical: ['editor', 'title', ['year', 'date']],\n proceedings: ['title', ['year', 'date']],\n mvproceedings: ['title', ['year', 'date']],\n inproceedings: ['author', 'title', 'booktitle', ['year', 'date']],\n report: ['author', 'title', 'type', 'institution', ['year', 'date']],\n thesis: ['author', 'title', 'type', 'institution', ['year', 'date']],\n unpublished: ['author', 'title', ['year', 'date']],\n conference: ['author', 'title', 'booktitle', ['year', 'date']],\n electronic: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n mastersthesis: ['author', 'title', 'institution', ['year', 'date']],\n phdthesis: ['author', 'title', 'institution', ['year', 'date']],\n techreport: ['author', 'title', 'institution', ['year', 'date']],\n www: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n },\n bibtex: {\n article: ['author', 'title', 'journal', 'year'],\n book: [['author', 'editor'], 'title', 'publisher', 'year'],\n booklet: ['title'],\n inbook: [['author', 'editor'], 'title', ['chapter', 'pages'], 'publisher', 'year'],\n incollection: ['author', 'title', 'booktitle', 'publisher', 'year'],\n inproceedings: ['author', 'title', 'booktitle', 'year'],\n mastersthesis: ['author', 'title', 'school', 'year'],\n phdthesis: ['author', 'title', 'school', 'year'],\n proceedings: ['title', 'year'],\n techreport: ['author', 'title', 'institution', 'year'],\n unpublished: ['author', 'title', 'note'],\n },\n}\n\nexport default required\n","const fieldTypes = {\n abstract: ['field', 'literal'],\n addendum: ['field', 'literal'],\n afterword: ['list', 'name'],\n annotation: ['field', 'literal'],\n annotator: ['list', 'name'],\n author: ['list', 'name'],\n authortype: ['field', 'key'],\n bookauthor: ['list', 'name'],\n bookpagination: ['field', 'key'],\n booksubtitle: ['field', 'literal'],\n booktitle: ['field', 'title'],\n booktitleaddon: ['field', 'literal'],\n chapter: ['field', 'literal'],\n commentator: ['list', 'name'],\n date: ['field', 'date'],\n doi: ['field', 'verbatim'],\n edition: ['field', 'literal'],\n editor: ['list', 'name'],\n editora: ['list', 'name'],\n editorb: ['list', 'name'],\n editorc: ['list', 'name'],\n editortype: ['field', 'key'],\n editoratype: ['field', 'key'],\n editorbtype: ['field', 'key'],\n editorctype: ['field', 'key'],\n eid: ['field', 'literal'],\n entrysubtype: ['field', 'literal'],\n eprint: ['field', 'verbatim'],\n eprintclass: ['field', 'literal'],\n eprinttype: ['field', 'literal'],\n eventdate: ['field', 'date'],\n eventtitle: ['field', 'title'],\n eventtitleaddon: ['field', 'literal'],\n file: ['field', 'verbatim'],\n foreword: ['list', 'name'],\n holder: ['list', 'name'],\n howpublished: ['field', 'literal'],\n indextitle: ['field', 'literal'],\n institution: ['list', 'literal'],\n introduction: ['list', 'name'],\n isan: ['field', 'literal'],\n isbn: ['field', 'literal'],\n ismn: ['field', 'literal'],\n isrn: ['field', 'literal'],\n issn: ['field', 'literal'],\n issue: ['field', 'literal'],\n issuesubtitle: ['field', 'literal'],\n issuetitle: ['field', 'literal'],\n iswc: ['field', 'literal'],\n journalsubtitle: ['field', 'literal'],\n journaltitle: ['field', 'literal'],\n label: ['field', 'literal'],\n language: ['list', 'key'],\n library: ['field', 'literal'],\n location: ['list', 'literal'],\n mainsubtitle: ['field', 'literal'],\n maintitle: ['field', 'title'],\n maintitleaddon: ['field', 'literal'],\n month: ['field', 'literal'],\n nameaddon: ['field', 'literal'],\n note: ['field', 'literal'],\n number: ['field', 'literal'],\n organization: ['list', 'literal'],\n origdate: ['field', 'date'],\n origlanguage: ['list', 'key'],\n origlocation: ['list', 'literal'],\n origpublisher: ['list', 'literal'],\n origtitle: ['field', 'title'],\n pages: ['field', 'range'],\n pagetotal: ['field', 'literal'],\n pagination: ['field', 'key'],\n part: ['field', 'literal'],\n publisher: ['list', 'literal'],\n pubstate: ['field', 'key'],\n reprinttitle: ['field', 'literal'],\n series: ['field', 'title'],\n shortauthor: ['list', 'name'],\n shorteditor: ['list', 'name'],\n shorthand: ['field', 'literal'],\n shorthandintro: ['field', 'literal'],\n shortjournal: ['field', 'literal'],\n shortseries: ['field', 'literal'],\n shorttitle: ['field', 'title'],\n subtitle: ['field', 'literal'],\n title: ['field', 'title'],\n titleaddon: ['field', 'literal'],\n translator: ['list', 'name'],\n type: ['field', 'title'],\n url: ['field', 'uri'],\n urldate: ['field', 'date'],\n venue: ['field', 'literal'],\n version: ['field', 'literal'],\n volume: ['field', 'integer'],\n volumes: ['field', 'integer'],\n year: ['field', 'literal'],\n crossref: ['field', 'entry key'],\n entryset: ['separated', 'literal'],\n execute: ['field', 'code'],\n gender: ['field', 'gender'],\n langid: ['field', 'identifier'],\n langidopts: ['field', 'literal'],\n ids: ['separated', 'entry key'],\n indexsorttitle: ['field', 'literal'],\n keywords: ['separated', 'literal'],\n options: ['separated', 'options'],\n presort: ['field', 'string'],\n related: ['separated', 'literal'],\n relatedoptions: ['separated', 'literal'],\n relatedtype: ['field', 'identifier'],\n relatedstring: ['field', 'literal'],\n sortkey: ['field', 'literal'],\n sortname: ['list', 'name'],\n sortshorthand: ['field', 'literal'],\n sorttitle: ['field', 'literal'],\n sortyear: ['field', 'integer'],\n xdata: ['separated', 'entry key'],\n xref: ['field', 'entry key'],\n namea: ['list', 'name'],\n nameb: ['list', 'name'],\n namec: ['list', 'name'],\n nameatype: ['field', 'key'],\n namebtype: ['field', 'key'],\n namectype: ['field', 'key'],\n lista: ['list', 'literal'],\n listb: ['list', 'literal'],\n listc: ['list', 'literal'],\n listd: ['list', 'literal'],\n liste: ['list', 'literal'],\n listf: ['list', 'literal'],\n usera: ['field', 'literal'],\n userb: ['field', 'literal'],\n userc: ['field', 'literal'],\n userd: ['field', 'literal'],\n usere: ['field', 'literal'],\n userf: ['field', 'literal'],\n verba: ['field', 'literal'],\n verbb: ['field', 'literal'],\n verbc: ['field', 'literal'],\n address: ['list', 'literal'],\n annote: ['field', 'literal'],\n archiveprefix: ['field', 'literal'],\n journal: ['field', 'literal'],\n key: ['field', 'literal'],\n pdf: ['field', 'verbatim'],\n primaryclass: ['field', 'literal'],\n school: ['list', 'literal'],\n numpages: ['field', 'integer'],\n pmid: ['field', 'literal'],\n pmcid: ['field', 'literal'],\n}\n\nexport default fieldTypes\n","const unicode = {\n diacritics: {\n '`': '̀',\n \"'\": '́',\n '^': '̂',\n '~': '̃',\n '=': '̄',\n u: '̆',\n '.': '̇',\n '\"': '̈',\n r: '̊',\n H: '̋',\n v: '̌',\n b: '̲',\n d: '̣',\n c: '̧',\n k: '̨',\n t: '͡',\n textcommabelow: '̦',\n },\n commands: {\n textquotesingle: \"'\",\n textasciigrave: '`',\n textquotedbl: '\"',\n textdollar: '$',\n textless: '<',\n textgreater: '>',\n textbackslash: '\\\\',\n textasciicircum: '^',\n textunderscore: '_',\n textbraceleft: '{',\n textbar: '|',\n textbraceright: '}',\n textasciitilde: '~',\n textexclamdown: '¡',\n textcent: '¢',\n textsterling: '£',\n textcurrency: '¤',\n textyen: '¥',\n textbrokenbar: '¦',\n textsection: '§',\n textasciidieresis: '¨',\n textcopyright: '©',\n textordfeminine: 'ª',\n guillemetleft: '«',\n guillemotleft: '«',\n textlnot: '¬',\n textregistered: '®',\n textasciimacron: '¯',\n textdegree: '°',\n textpm: '±',\n texttwosuperior: '²',\n textthreesuperior: '³',\n textasciiacute: '´',\n textmu: 'µ',\n textparagraph: '¶',\n textperiodcentered: '·',\n textonesuperior: '¹',\n textordmasculine: 'º',\n guillemetright: '»',\n guillemotright: '»',\n textonequarter: '¼',\n textonehalf: '½',\n textthreequarters: '¾',\n textquestiondown: '¿',\n AE: 'Æ',\n DH: 'Ð',\n texttimes: '×',\n O: 'Ø',\n TH: 'Þ',\n ss: 'ß',\n ae: 'æ',\n dh: 'ð',\n textdiv: '÷',\n o: 'ø',\n th: 'þ',\n DJ: 'Đ',\n dj: 'đ',\n i: 'ı',\n IJ: 'IJ',\n ij: 'ij',\n L: 'Ł',\n l: 'ł',\n NG: 'Ŋ',\n ng: 'ŋ',\n OE: 'Œ',\n oe: 'œ',\n textflorin: 'ƒ',\n j: 'ȷ',\n textasciicaron: 'ˇ',\n textasciibreve: '˘',\n textacutedbl: '˝',\n textgravedbl: '˵',\n texttildelow: '˷',\n textbaht: '฿',\n SS: 'ẞ',\n textcompwordmark: '‌',\n textendash: '–',\n textemdash: '—',\n textbardbl: '‖',\n textquoteleft: '‘',\n textquoteright: '’',\n quotesinglbase: '‚',\n textquotedblleft: '“',\n textquotedblright: '”',\n quotedblbase: '„',\n textdagger: '†',\n textdaggerdbl: '‡',\n textbullet: '•',\n textellipsis: '…',\n textperthousand: '‰',\n textpertenthousand: '‱',\n guilsinglleft: '‹',\n guilsinglright: '›',\n textreferencemark: '※',\n textinterrobang: '‽',\n textfractionsolidus: '⁄',\n textlquill: '⁅',\n textrquill: '⁆',\n textdiscount: '⁒',\n textcolonmonetary: '₡',\n textlira: '₤',\n textnaira: '₦',\n textwon: '₩',\n textdong: '₫',\n texteuro: '€',\n textpeso: '₱',\n textcelsius: '℃',\n textnumero: '№',\n textcircledP: '℗',\n textrecipe: '℞',\n textservicemark: '℠',\n texttrademark: '™',\n textohm: 'Ω',\n textmho: '℧',\n textestimated: '℮',\n textleftarrow: '←',\n textuparrow: '↑',\n textrightarrow: '→',\n textdownarrow: '↓',\n textminus: '−',\n Hwithstroke: 'Ħ',\n hwithstroke: 'ħ',\n textasteriskcentered: '∗',\n textsurd: '√',\n textlangle: '〈',\n textrangle: '〉',\n textblank: '␢',\n textvisiblespace: '␣',\n textopenbullet: '◦',\n textbigcircle: '◯',\n textmusicalnote: '♪',\n textmarried: '⚭',\n textdivorced: '⚮',\n textinterrobangdown: '⸘',\n textcommabelow: null,\n copyright: '©',\n },\n mathCommands: {\n Gamma: 'Γ',\n Delta: 'Δ',\n Theta: 'Θ',\n Lambda: 'Λ',\n Xi: 'Ξ',\n Pi: 'Π',\n Sigma: 'Σ',\n Phi: 'Φ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n varepsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n pi: 'π',\n rho: 'ρ',\n varsigma: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n varphi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n vartheta: 'ϑ',\n Upsilon: 'ϒ',\n phi: 'ϕ',\n varpi: 'ϖ',\n varrho: 'ϱ',\n epsilon: 'ϵ',\n },\n}\n\nexport default unicode\n","// import _required from './required.json' assert { type: \"json\" };\n// import _fieldTypes from './fieldTypes.json' assert { type: \"json\" };\n// import unicode from './unicode.json' assert { type: \"json\" };\nimport _required from './required.js'\nimport _fieldTypes from './fieldTypes.js'\nimport unicode from './unicode.js'\nexport const required = _required\nexport const fieldTypes = _fieldTypes\nexport const diacritics = unicode.diacritics\nexport const commands = unicode.commands\nexport const mathCommands = unicode.mathCommands\nexport const defaultStrings = {\n jan: '01',\n feb: '02',\n mar: '03',\n apr: '04',\n may: '05',\n jun: '06',\n jul: '07',\n aug: '08',\n sep: '09',\n oct: '10',\n nov: '11',\n dec: '12',\n acmcs: 'ACM Computing Surveys',\n acta: 'Acta Informatica',\n cacm: 'Communications of the ACM',\n ibmjrd: 'IBM Journal of Research and Development',\n ibmsj: 'IBM Systems Journal',\n ieeese: 'IEEE Transactions on Software Engineering',\n ieeetc: 'IEEE Transactions on Computers',\n ieeetcad: 'IEEE Transactions on Computer-Aided Design of Integrated Circuits',\n ipl: 'Information Processing Letters',\n jacm: 'Journal of the ACM',\n jcss: 'Journal of Computer and System Sciences',\n scp: 'Science of Computer Programming',\n sicomp: 'SIAM Journal on Computing',\n tocs: 'ACM Transactions on Computer Systems',\n tods: 'ACM Transactions on Database Systems',\n tog: 'ACM Transactions on Graphics',\n toms: 'ACM Transactions on Mathematical Software',\n toois: 'ACM Transactions on Office Information Systems',\n toplas: 'ACM Transactions on Programming Languages and Systems',\n tcs: 'Theoretical Computer Science',\n}\nexport const formattingEnvs = {\n it: 'italics',\n itshape: 'italics',\n sl: 'italics',\n slshape: 'italics',\n em: 'italics',\n bf: 'bold',\n bfseries: 'bold',\n sc: 'smallcaps',\n scshape: 'smallcaps',\n rm: undefined,\n sf: undefined,\n tt: undefined,\n}\nexport const formattingCommands = {\n textit: 'italics',\n textsl: 'italics',\n emph: 'italics',\n mkbibitalic: 'italics',\n mkbibemph: 'italics',\n textbf: 'bold',\n strong: 'bold',\n mkbibbold: 'bold',\n textsc: 'smallcaps',\n textsuperscript: 'superscript',\n textsubscript: 'subscript',\n enquote: 'quotes',\n mkbibquote: 'quotes',\n textmd: undefined,\n textrm: undefined,\n textsf: undefined,\n texttt: undefined,\n textup: undefined,\n}\nexport const formatting = {\n italics: ['', ''],\n bold: ['', ''],\n superscript: ['', ''],\n subscript: ['', ''],\n smallcaps: ['', ''],\n nocase: ['', ''],\n quotes: ['\\u201C', '\\u201D'],\n}\nexport const argumentCommands = {\n ElsevierGlyph(glyph) {\n return String.fromCharCode(parseInt(glyph, 16))\n },\n href(url, text) {\n return url\n },\n url(url) {\n return url\n },\n}\nexport const ligaturePattern = /---?|''|``|~/g\nexport const ligatures = {\n '--': '\\u2013',\n '---': '\\u2014',\n '``': '\\u201C',\n \"''\": '\\u201D',\n '~': '\\u00A0',\n}\nexport const mathScriptFormatting = {\n '^': 'superscript',\n sp: 'superscript',\n _: 'subscript',\n sb: 'subscript',\n mathrm: undefined,\n}\nexport const mathScripts = {\n '^': {\n 0: '\\u2070',\n 1: '\\u00B9',\n 2: '\\u00B2',\n 3: '\\u00B3',\n 4: '\\u2074',\n 5: '\\u2075',\n 6: '\\u2076',\n 7: '\\u2077',\n 8: '\\u2078',\n 9: '\\u2079',\n '+': '\\u207A',\n '-': '\\u207B',\n '=': '\\u207C',\n '(': '\\u207D',\n ')': '\\u207E',\n i: '\\u2071',\n n: '\\u207F',\n },\n _: {\n 0: '\\u2080',\n 1: '\\u2081',\n 2: '\\u2082',\n 3: '\\u2083',\n 4: '\\u2084',\n 5: '\\u2085',\n 6: '\\u2086',\n 7: '\\u2087',\n 8: '\\u2088',\n 9: '\\u2089',\n '+': '\\u208A',\n '-': '\\u208B',\n '=': '\\u208C',\n '(': '\\u208D',\n ')': '\\u208E',\n a: '\\u2090',\n e: '\\u2091',\n o: '\\u2092',\n x: '\\u2093',\n '\\u0259': '\\u2094',\n h: '\\u2095',\n k: '\\u2096',\n l: '\\u2097',\n m: '\\u2098',\n n: '\\u2099',\n s: '\\u209A',\n p: '\\u209B',\n t: '\\u209C',\n },\n}\nexport const sentenceCaseLanguages = [\n 'american',\n 'british',\n 'canadian',\n 'english',\n 'australian',\n 'newzealand',\n 'usenglish',\n 'ukenglish',\n 'en',\n 'eng',\n 'en-au',\n 'en-bz',\n 'en-ca',\n 'en-cb',\n 'en-gb',\n 'en-ie',\n 'en-jm',\n 'en-nz',\n 'en-ph',\n 'en-tt',\n 'en-us',\n 'en-za',\n 'en-zw',\n 'anglais',\n]\n","import biblatex from './mapping/biblatexTypes.js'\nimport bibtex from './mapping/bibtexTypes.js'\nimport * as constants from './input/constants.js'\nexport default {\n constants,\n types: {\n biblatex,\n bibtex,\n },\n parse: {\n biblatex: true,\n strict: false,\n sentenceCase: 'never',\n },\n format: {\n useIdAsLabel: false,\n checkLabel: true,\n asciiOnly: true,\n },\n biber: {\n annotationMarker: '+an',\n namedAnnotationMarker: ':',\n },\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util, logger } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport { defaultStrings } from './constants.js'\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:+-]*/\nconst whitespace = {\n comment: /%.*/,\n whitespace: {\n match: /\\s+/,\n lineBreaks: true,\n },\n}\nconst lexer = moo.states({\n main: {\n junk: {\n match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/,\n lineBreaks: true,\n },\n at: {\n match: '@',\n push: 'entry',\n },\n },\n entry: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n otherEntryType: {\n match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,\n next: 'otherEntryContents',\n },\n dataEntryType: {\n match: identifier,\n next: 'dataEntryContents',\n },\n }\n ),\n otherEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'fields',\n },\n }\n ),\n dataEntryContents: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n lbrace: {\n match: /[{(]/,\n next: 'dataEntryContents',\n },\n label: /[^,\\s]+/,\n comma: {\n match: ',',\n next: 'fields',\n },\n }\n ),\n fields: _objectSpread(\n _objectSpread({}, whitespace),\n {},\n {\n identifier,\n number: /-?\\d+/,\n hash: '#',\n equals: '=',\n comma: ',',\n quote: {\n match: '\"',\n push: 'quotedLiteral',\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: /[})]/,\n pop: true,\n },\n }\n ),\n quotedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n quote: {\n match: '\"',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{]|[^{\"])+/,\n lineBreaks: true,\n },\n },\n bracedLiteral: {\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n rbrace: {\n match: '}',\n pop: true,\n },\n text: {\n match: /(?:\\\\[\\\\{}]|[^{}])+/,\n lineBreaks: true,\n },\n },\n})\nconst delimiters = {\n '(': ')',\n '{': '}',\n}\nexport const bibtexGrammar = new util.Grammar(\n {\n Main() {\n const entries = []\n while (true) {\n while (this.matchToken('junk')) {\n this.consumeToken('junk')\n }\n if (this.matchEndOfFile()) {\n break\n }\n entries.push(this.consumeRule('Entry'))\n }\n return entries.filter(Boolean)\n },\n _() {\n let oldToken\n while (oldToken !== this.token) {\n oldToken = this.token\n this.consumeToken('whitespace', true)\n this.consumeToken('comment', true)\n }\n },\n Entry() {\n this.consumeToken('at')\n this.consumeRule('_')\n const type = (\n this.matchToken('otherEntryType')\n ? this.consumeToken('otherEntryType')\n : this.consumeToken('dataEntryType')\n ).value.toLowerCase()\n this.consumeRule('_')\n const openBrace = this.consumeToken('lbrace').value\n this.consumeRule('_')\n let result\n if (type === 'string') {\n const [key, value] = this.consumeRule('Field')\n this.state.strings[key] = value\n } else if (type === 'preamble') {\n this.consumeRule('Expression')\n } else {\n const label = this.consumeToken('label').value\n this.consumeRule('_')\n this.consumeToken('comma')\n this.consumeRule('_')\n const entryBody = this.consumeRule('EntryBody')\n result = _objectSpread(\n {\n type,\n label,\n },\n entryBody\n )\n }\n this.consumeRule('_')\n const closeBrace = this.consumeToken('rbrace').value\n if (closeBrace !== delimiters[openBrace]) {\n logger.warn(\n '[plugin-bibtex]',\n `entry started with \"${openBrace}\", but ends with \"${closeBrace}\"`\n )\n }\n return result\n },\n EntryBody() {\n const output = {\n properties: {},\n }\n while (this.matchToken('identifier')) {\n const [field, value] = this.consumeRule('Field')\n let annotationField\n let annotationName = 'default'\n if (field.endsWith(config.biber.annotationMarker)) {\n annotationField = field.slice(0, -config.biber.annotationMarker.length)\n } else if (\n field.includes(config.biber.annotationMarker + config.biber.namedAnnotationMarker)\n ) {\n ;[annotationField, annotationName] = field.split(\n config.biber.annotationMarker + config.biber.namedAnnotationMarker\n )\n }\n if (annotationField) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[annotationField]) {\n output.annotations[annotationField] = {}\n }\n output.annotations[annotationField][annotationName] = value\n } else {\n output.properties[field] = value\n }\n this.consumeRule('_')\n if (this.consumeToken('comma', true)) {\n this.consumeRule('_')\n } else {\n break\n }\n }\n return output\n },\n Field() {\n const field = this.consumeToken('identifier').value.toLowerCase()\n this.consumeRule('_')\n this.consumeToken('equals')\n this.consumeRule('_')\n const value = this.consumeRule('Expression')\n return [field, value]\n },\n Expression() {\n let output = this.consumeRule('ExpressionPart')\n this.consumeRule('_')\n while (this.matchToken('hash')) {\n this.consumeToken('hash')\n this.consumeRule('_')\n output += this.consumeRule('ExpressionPart').toString()\n this.consumeRule('_')\n }\n return output\n },\n ExpressionPart() {\n if (this.matchToken('identifier')) {\n return this.state.strings[this.consumeToken('identifier').value.toLowerCase()] || ''\n } else if (this.matchToken('number')) {\n return parseInt(this.consumeToken('number'))\n } else if (this.matchToken('quote')) {\n return this.consumeRule('QuoteString')\n } else {\n return this.consumeRule('BracketString')\n }\n },\n QuoteString() {\n let output = ''\n this.consumeToken('quote')\n while (!this.matchToken('quote')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('quote')\n return output\n },\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('rbrace')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return `{${this.consumeRule('BracketString')}}`\n } else {\n return this.consumeToken('text').value\n }\n },\n },\n {\n strings: defaultStrings,\n }\n)\nexport function parse(text) {\n return bibtexGrammar.parse(lexer.reset(text))\n}\n","const bibTxtRegex = {\n splitEntries: /\\n\\s*(?=\\[)/g,\n parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n splitPairs: /((?=.)\\s)*\\n\\s*/g,\n splitPair: /:(.*)/,\n}\nconst parseBibTxtEntry = (entry) => {\n const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n if (!label || !pairs) {\n return {}\n } else {\n const out = {\n type: 'book',\n label,\n properties: {},\n }\n pairs\n .trim()\n .split(bibTxtRegex.splitPairs)\n .filter((v) => v)\n .forEach((pair) => {\n let [key, value] = pair.split(bibTxtRegex.splitPair)\n if (value) {\n key = key.trim()\n value = value.trim()\n if (key === 'type') {\n out.type = value\n } else {\n out.properties[key] = value\n }\n }\n })\n return out\n }\n}\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\n","// @ts-nocheck\nimport { util } from '../../core/index.js'\nimport config from '../config.js'\nconst stopWords = new Set(['the', 'a', 'an'])\nconst unsafeChars = /(?:<\\/?.*?>|[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F])+/g\nconst unicode = /[^\\u0020-\\u007F]+/g\nfunction isLabelSafe(text) {\n return !config.format.checkLabel || !text.match(unsafeChars)\n}\nfunction formatLabelFromId(id) {\n if (id === null) {\n return 'null'\n } else if (id === undefined) {\n return 'undefined'\n } else if (config.format.checkLabel) {\n return id.toString().replace(unsafeChars, '')\n } else {\n return id.toString()\n }\n}\nfunction firstWord(text) {\n if (!text) {\n return ''\n } else {\n return text\n .normalize('NFKD')\n .replace(unicode, '')\n .split(unsafeChars)\n .find((word) => word.length && !stopWords.has(word.toLowerCase()))\n }\n}\nconst name = new util.Translator([\n {\n source: 'given',\n target: 'given',\n },\n {\n source: 'family',\n target: 'family',\n },\n {\n source: 'suffix',\n target: 'suffix',\n },\n {\n source: 'prefix',\n target: 'non-dropping-particle',\n },\n {\n source: 'family',\n target: 'literal',\n when: {\n source: false,\n target: {\n family: false,\n given: false,\n },\n },\n },\n])\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\nexport const TYPE = 'BibTeX type'\nexport const LABEL = 'BibTeX label'\nexport const MONTHS = {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12,\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12,\n}\nexport const TYPE_KEYS = {\n bathesis: \"Bachelor's thesis\",\n mathesis: \"Master's thesis\",\n phdthesis: 'PhD thesis',\n candthesis: 'Candidate thesis',\n techreport: 'technical report',\n resreport: 'research report',\n software: 'computer software',\n datacd: 'data cd',\n audiocd: 'audio cd',\n patent: 'patent',\n patentde: 'German patent',\n patenteu: 'European patent',\n patentfr: 'French patent',\n patentuk: 'British patent',\n patentus: 'U.S. patent',\n patreq: 'patent request',\n patreqde: 'German patent request',\n patreqeu: 'European patent request',\n patreqfr: 'French patent request',\n patrequk: 'British patent request',\n patrequs: 'U.S. patent request',\n}\nexport const STANDARD_NUMBERS_PATTERN =\n /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\\d{9}|(?=[\\d-]{11}$)\\d+-\\d+-\\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\\d{9}-?\\d$)/i\nexport function parseDate(date) {\n const parts = date\n .split('T')[0]\n .replace(/[?~%]$/, '')\n .split('-')\n const year = +parts[0].replace(/^Y(?=-?\\d{4}\\d+)/, '').replace(/X/g, '0')\n const month = +parts[1]\n const day = +parts[2]\n if (!month || month > 20) {\n return [year]\n } else if (!day) {\n return [year, month]\n } else {\n return [year, month, day]\n }\n}\nexport function parseMonth(value) {\n if (value == null) {\n return []\n }\n if (+value) {\n return [parseInt(value, 10)]\n }\n value = value.trim().toLowerCase()\n if (value in MONTHS) {\n return [MONTHS[value]]\n }\n const parts = value.split(/\\s+/)\n let month\n let day\n if (parts[0] in MONTHS) {\n month = MONTHS[parts[0]]\n day = parseInt(parts[1])\n } else if (parts[1] in MONTHS) {\n month = MONTHS[parts[1]]\n day = parseInt(parts[0])\n }\n return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n let label = ''\n if (author && author[0]) {\n label += firstWord(author[0].family || author[0].literal)\n }\n if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n label += issued['date-parts'][0][0]\n }\n if (suffix) {\n label += suffix\n } else if (title) {\n label += firstWord(title)\n }\n return label\n}\nexport const Converters = {\n PICK: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(value) {\n return [value]\n },\n },\n DATE: {\n toTarget(date) {\n const parts = date\n .split('/')\n .map((part) => (part && part !== '..' ? parseDate(part) : undefined))\n return isNaN(parts[0][0])\n ? {\n literal: date,\n }\n : {\n 'date-parts': parts,\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n return date['date-parts']\n .map((datePart) =>\n datePart.map((datePart) => datePart.toString().padStart(2, '0')).join('-')\n )\n .join('/')\n }\n },\n },\n YEAR_MONTH: {\n toTarget(year, month, day) {\n if (isNaN(+year)) {\n return {\n literal: year,\n }\n } else if (!isNaN(+day) && !isNaN(+month)) {\n return {\n 'date-parts': [[+year, +month, +day]],\n }\n } else {\n return {\n 'date-parts': [[+year, ...parseMonth(month)]],\n }\n }\n },\n toSource(date) {\n if ('date-parts' in date) {\n const [year, month, day] = date['date-parts'][0]\n return [year.toString(), month ? (day ? `${months[month - 1]} ${day}` : month) : undefined]\n } else {\n return []\n }\n },\n },\n EPRINT: {\n toTarget(id, type) {\n if (type === 'pubmed') {\n return id\n }\n },\n toSource(id) {\n return [id, 'pubmed']\n },\n },\n EVENT_TITLE: {\n toTarget(title, addon) {\n if (addon) {\n title += ' (' + addon + ')'\n }\n return title\n },\n toSource(title) {\n return title.match(/^(.+)(?: \\((.+)\\))?$/).slice(1, 3)\n },\n },\n HOW_PUBLISHED: {\n toTarget(howPublished) {\n if (howPublished.startsWith('http')) {\n return howPublished\n }\n },\n },\n KEYWORDS: {\n toTarget(list) {\n return list.join(',')\n },\n toSource(list) {\n return list.split(',')\n },\n },\n LABEL: {\n toTarget(label) {\n return [label, label]\n },\n toSource(id, label, author, issued, suffix, title) {\n if (label && isLabelSafe(label)) {\n return label\n } else if (config.format.useIdAsLabel) {\n return formatLabelFromId(id)\n } else {\n return formatLabel(author, issued, suffix, title) || formatLabelFromId(id)\n }\n },\n },\n NAMES: {\n toTarget(list) {\n return list.map(name.convertToTarget)\n },\n toSource(list) {\n return list.map(name.convertToSource)\n },\n },\n NAMES_ORCID: {\n toTarget(list, orcid) {\n return list.map((inputName, i) => {\n var _orcid$item\n const outputName = name.convertToTarget(inputName)\n if (\n typeof (orcid === null ||\n orcid === void 0 ||\n (_orcid$item = orcid.item) === null ||\n _orcid$item === void 0\n ? void 0\n : _orcid$item[i]) === 'string'\n ) {\n outputName._orcid = orcid.item[i]\n }\n return outputName\n })\n },\n toSource(list) {\n const names = []\n const orcid = []\n for (let i = 0; i < list.length; i++) {\n names.push(name.convertToSource(list[i]))\n if (list[i]._orcid) {\n orcid[i] = list[i]._orcid\n }\n }\n return [\n names,\n orcid.length\n ? {\n item: orcid,\n }\n : undefined,\n ]\n },\n },\n PAGES: {\n toTarget(pages) {\n return pages.replace(/[–—]/, '-')\n },\n toSource(pages) {\n return pages.replace('-', '--')\n },\n },\n STANDARD_NUMBERS: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n toSource(number) {\n const match = number.toString().match(STANDARD_NUMBERS_PATTERN)\n return match ? match.slice(1, 5) : []\n },\n },\n STATUS: {\n toSource(state) {\n if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {\n return state\n }\n },\n },\n TITLE: {\n toTarget(title, subtitle, addon) {\n if (subtitle) {\n title += ': ' + subtitle\n }\n return title\n },\n toSource(title) {\n return [title]\n },\n },\n}\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './biblatexTypes.js'\nimport { TYPE, LABEL, TYPE_KEYS, Converters } from './shared.js'\nconst nonSpec = [\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n addendum: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'numpages',\n target: 'number-of-pages',\n when: {\n source: {\n pagetotal: false,\n },\n target: false,\n },\n },\n {\n source: 'pmid',\n target: 'PMID',\n when: {\n source: {\n eprinttype(type) {\n return type !== 'pmid'\n },\n archiveprefix(type) {\n return type !== 'pmid'\n },\n },\n target: false,\n },\n },\n {\n source: 'pmcid',\n target: 'PMCID',\n when: {\n target: false,\n },\n },\n {\n source: 's2id',\n target: 'custom',\n convert: {\n toTarget(S2ID) {\n return {\n S2ID,\n }\n },\n toSource({ S2ID }) {\n return S2ID\n },\n },\n },\n]\nconst aliases = [\n {\n source: 'annote',\n target: 'annote',\n when: {\n source: {\n annotation: false,\n },\n target: false,\n },\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n when: {\n source: {\n location: false,\n },\n target: false,\n },\n },\n {\n source: ['eprint', 'archiveprefix'],\n target: 'PMID',\n convert: Converters.EPRINT,\n when: {\n source: {\n eprinttype: false,\n },\n target: false,\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n booktitle: false,\n journaltitle: false,\n },\n target: false,\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: false,\n },\n },\n]\nexport default new util.Translator([\n ...aliases,\n ...nonSpec,\n {\n source: 'abstract',\n target: 'abstract',\n },\n {\n source: 'urldate',\n target: 'accessed',\n convert: Converters.DATE,\n },\n {\n source: 'annotation',\n target: 'annote',\n },\n {\n source: ['author', 'author+an:orcid'],\n target: 'author',\n convert: Converters.NAMES_ORCID,\n },\n {\n source: 'library',\n target: 'call-number',\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'bookauthor',\n target: 'container-author',\n convert: Converters.NAMES,\n },\n {\n source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n target: 'container-title',\n when: {\n source: true,\n target: {\n 'number-of-volumes': true,\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n },\n target: {\n 'number-of-volumes': false,\n type(type) {\n return !type || !type.startsWith('article')\n },\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['journaltitle', 'journalsubtitle', 'journaltitleaddon'],\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: 'shortjournal',\n target: 'container-title-short',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'shortjournal',\n target: 'journalAbbreviation',\n when: {\n source: false,\n target: {\n 'container-title-short': false,\n },\n },\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'bookinbook',\n 'suppbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'shortseries',\n target: 'collection-title-short',\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: [TYPE, 'entrysubtype', 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(type, subtype, typeKey) {\n if (!typeKey) {\n if (type === 'mastersthesis') {\n typeKey = 'mathesis'\n }\n if (type === 'phdthesis') {\n typeKey = 'phdthesis'\n }\n if (type === 'techreport') {\n typeKey = 'techreport'\n }\n }\n return [types.source[type] || 'document', typeKey || subtype]\n },\n toSource(type, genre) {\n const sourceType = types.target[type] || 'misc'\n return genre in TYPE_KEYS ? [sourceType, undefined, genre] : [sourceType, genre]\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'eventdate',\n target: 'event-date',\n convert: Converters.DATE,\n },\n {\n source: 'venue',\n target: 'event-place',\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event-title',\n convert: Converters.EVENT_TITLE,\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event',\n convert: Converters.EVENT_TITLE,\n when: {\n source: false,\n target: {\n 'event-title': false,\n },\n },\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'issue',\n target: 'issue',\n when: {\n source: {\n number: false,\n [TYPE]: ['article', 'periodical'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'string' && !issue.match(/\\d+/)\n },\n type: ['article', 'article-journal', 'article-newspaper', 'article-magazine', 'periodical'],\n },\n },\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return issue && (typeof issue === 'number' || issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: 'date',\n target: 'issued',\n convert: Converters.DATE,\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n when: {\n source: {\n date: false,\n },\n target: false,\n },\n },\n {\n source: 'location',\n target: 'jurisdiction',\n when: {\n source: {\n type: 'patent',\n },\n target: {\n type: 'patent',\n },\n },\n },\n {\n source: 'keywords',\n target: 'keyword',\n convert: Converters.KEYWORDS,\n },\n {\n source: 'language',\n target: 'language',\n convert: Converters.PICK,\n },\n {\n source: 'langid',\n target: 'language',\n when: {\n source: {\n language: false,\n },\n target: false,\n },\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'addendum',\n target: 'note',\n when: {\n source: {\n note: false,\n },\n target: false,\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: ['isan', 'ismn', 'isrn', 'iswc'],\n target: 'number',\n convert: Converters.STANDARD_NUMBERS,\n when: {\n source: {\n [TYPE](type) {\n return type !== 'patent'\n },\n },\n target: {\n type(type) {\n return type !== 'patent'\n },\n },\n },\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport', 'legislation'],\n },\n target: {\n type: ['patent', 'report', 'legislation'],\n },\n },\n },\n {\n source: 'origdate',\n target: 'original-date',\n convert: Converters.DATE,\n },\n {\n source: 'origlocation',\n target: 'original-publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'origpublisher',\n target: 'original-publisher',\n convert: Converters.PICK,\n },\n {\n source: 'origtitle',\n target: 'original-title',\n },\n {\n source: 'pages',\n target: 'page',\n when: {\n source: {\n bookpagination: [undefined, 'page'],\n },\n },\n convert: Converters.PAGES,\n },\n {\n source: 'pagetotal',\n target: 'number-of-pages',\n },\n {\n source: 'part',\n target: 'part-number',\n },\n {\n source: ['eprint', 'eprinttype'],\n target: 'PMID',\n convert: Converters.EPRINT,\n },\n {\n source: 'location',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: true,\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'paper-conference',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'webpage',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: ['report', 'thesis'],\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: ['pages', 'bookpagination'],\n target: 'section',\n when: {\n source: {\n bookpagination: 'section',\n },\n target: {\n page: false,\n },\n },\n convert: {\n toTarget(section) {\n return section\n },\n toSource(section) {\n return [section, 'section']\n },\n },\n },\n {\n source: 'pubstate',\n target: 'status',\n convert: Converters.STATUS,\n },\n {\n source: 'shorttitle',\n target: 'title-short',\n },\n {\n source: 'shorttitle',\n target: 'shortTitle',\n when: {\n source: false,\n target: {\n 'title-short': false,\n },\n },\n },\n {\n source: ['title', 'subtitle', 'titleaddon'],\n target: 'title',\n convert: Converters.TITLE,\n },\n {\n source: 'translator',\n target: 'translator',\n convert: Converters.NAMES,\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n source: {\n url: false,\n },\n target: false,\n },\n },\n {\n source: 'version',\n target: 'version',\n },\n {\n source: 'volume',\n target: 'volume',\n },\n {\n source: 'volumes',\n target: 'number-of-volumes',\n },\n {\n source: ['issuetitle', 'issuesubtitle', 'issuetitleaddon'],\n target: 'volume-title',\n convert: Converters.TITLE,\n },\n])\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './bibtexTypes.js'\nimport { TYPE, LABEL, Converters } from './shared.js'\nexport default new util.Translator([\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: {\n note: false,\n },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'annote',\n target: 'annote',\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'booktitle',\n target: 'container-title',\n when: {\n target: {\n type: ['chapter', 'paper-conference'],\n },\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'number' || (typeof issue === 'string' && issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: {\n [TYPE]: ['patent', 'report', 'techreport'],\n },\n target: {\n type: ['patent', 'report'],\n },\n },\n },\n {\n source: 'eid',\n target: 'number',\n when: {\n source: {\n number: false,\n },\n target: {\n type: ['article-journal'],\n },\n },\n },\n {\n source: 'pages',\n target: 'page',\n convert: Converters.PAGES,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n target: {\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'paper-conference',\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: 'report',\n },\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: {\n type: 'thesis',\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n school: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: 'title',\n target: 'title',\n },\n {\n source: [TYPE, 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(sourceType, subType) {\n const type = types.source[sourceType] || 'document'\n if (subType) {\n return [type, subType]\n } else if (sourceType === 'mastersthesis') {\n return [type, \"Master's thesis\"]\n } else if (sourceType === 'phdthesis') {\n return [type, 'PhD thesis']\n } else {\n return [type]\n }\n },\n toSource(targetType, genre) {\n const type = types.target[targetType] || 'misc'\n if (/^(master'?s|diploma) thesis$/i.test(genre)) {\n return ['mastersthesis']\n } else if (/^(phd|doctoral) thesis$/i.test(genre)) {\n return ['phdthesis']\n } else {\n return [type, genre]\n }\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: {\n type: false,\n },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n target: {\n publisher: false,\n },\n },\n },\n {\n source: 'volume',\n target: 'volume',\n },\n])\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nconst BOOK = new Set(['book', 'inbook', 'bookinbook', 'suppbook'])\nconst BOOK_PART = new Set(['inbook', 'bookinbook', 'suppbook'])\nconst COLLECTION = new Set([\n 'collection',\n 'reference',\n 'incollection',\n 'inreference',\n 'suppcollection',\n])\nconst COLLECTION_PART = new Set(['incollection', 'inreference', 'suppcollection'])\nconst PROCEEDINGS = new Set(['proceedings', 'inproceedings'])\nconst PROCEEDINGS_PART = new Set(['inproceedings'])\nconst PERIODICAL_PART = new Set(['article', 'suppperiodical'])\nconst TITLE_MAP = {\n mvbook: ['main', BOOK],\n mvcollection: ['main', COLLECTION],\n mvreference: ['main', COLLECTION],\n mvproceedings: ['main', PROCEEDINGS],\n book: ['book', BOOK_PART],\n collection: ['book', COLLECTION_PART],\n reference: ['book', COLLECTION_PART],\n proceedings: ['book', PROCEEDINGS_PART],\n periodical: ['journal', PERIODICAL_PART],\n}\nexport function crossref(target, entry, registry) {\n if (entry.crossref in registry) {\n const parent = registry[entry.crossref]\n if (parent.properties === entry) {\n return entry\n }\n const data = _objectSpread({}, crossref(parent.type, parent.properties, registry))\n delete data.ids\n delete data.crossref\n delete data.xref\n delete data.entryset\n delete data.entrysubtype\n delete data.execute\n delete data.label\n delete data.options\n delete data.presort\n delete data.related\n delete data.relatedoptions\n delete data.relatedstring\n delete data.relatedtype\n delete data.shortand\n delete data.shortandintro\n delete data.sortkey\n if ((parent.type === 'mvbook' || parent.type === 'book') && BOOK_PART.has(target)) {\n data.bookauthor = data.author\n }\n if (parent.type in TITLE_MAP) {\n const [prefix, targets] = TITLE_MAP[parent.type]\n if (targets.has(target)) {\n data[prefix + 'title'] = data.title\n data[prefix + 'subtitle'] = data.subtitle\n if (prefix !== 'journal') {\n data[prefix + 'titleaddon'] = data.titleaddon\n }\n delete data.title\n delete data.subtitle\n delete data.titleaddon\n delete data.shorttitle\n delete data.sorttitle\n delete data.indextitle\n delete data.indexsorttitle\n }\n }\n return Object.assign(data, entry)\n }\n return entry\n}\n","function _objectWithoutProperties(source, excluded) {\n if (source == null) return {}\n var target = _objectWithoutPropertiesLoose(source, excluded)\n var key, i\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source)\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue\n target[key] = source[key]\n }\n }\n return target\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {}\n var target = {}\n var sourceKeys = Object.keys(source)\n var key, i\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n target[key] = source[key]\n }\n return target\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\nimport { crossref } from './crossref.js'\nfunction _parse(input, spec) {\n const registry = {}\n for (const entry of input) {\n registry[entry.label] = entry\n }\n return input.map(({ type, label, properties }) =>\n spec.convertToTarget(\n _objectSpread(\n {\n [TYPE]: type,\n [LABEL]: label,\n },\n crossref(type, properties, registry)\n )\n )\n )\n}\nfunction _format(input, spec) {\n return input.map((entry) => {\n const _spec$convertToSource = spec.convertToSource(entry),\n { [TYPE]: type, [LABEL]: label } = _spec$convertToSource,\n properties = _objectWithoutProperties(\n _spec$convertToSource,\n [TYPE, LABEL].map(_toPropertyKey)\n )\n return {\n type,\n label,\n properties,\n }\n })\n}\nexport function parseBibtex(input) {\n return _parse(input, bibtex)\n}\nexport function formatBibtex(input) {\n return _format(input, bibtex)\n}\nexport function parse(input) {\n return _parse(input, biblatex)\n}\nexport function format(input) {\n return _format(input, biblatex)\n}\n","export function getStringCase(string) {\n const a = string.toUpperCase()\n const b = string.toLowerCase()\n for (let i = 0; i < string.length; i++) {\n if (a[i] !== b[i]) {\n return a[i] === string[i]\n }\n }\n return null\n}\nexport function formatNameParts(parts) {\n if (parts.length === 0) {\n return undefined\n }\n let piece = ''\n while (parts.length > 1) {\n const { value, hyphenated } = parts.shift()\n piece += value + (hyphenated ? '-' : ' ')\n }\n const output = piece + parts[0].value\n return output[0] && output\n}\nexport function orderNameParts(parts, orderGiven = true) {\n const given = []\n const undecided = []\n if (orderGiven) {\n while (parts.length > 1 && parts[0].upperCase !== false) {\n given.push(...undecided)\n undecided.length = 0\n while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n given.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n undecided.push(parts.shift())\n }\n }\n }\n const prefix = []\n const family = []\n while (parts.length > 1) {\n prefix.push(...family)\n family.length = 0\n while (parts.length > 1 && parts[0].upperCase === false) {\n prefix.push(parts.shift())\n }\n while (parts.length > 0 && parts[0].upperCase !== false) {\n family.push(parts.shift())\n }\n }\n if (undecided.length) {\n family.unshift(...undecided)\n }\n if (parts.length) {\n family.push(parts[0])\n }\n return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\n}\nexport function orderNamePieces(pieces) {\n if (pieces[0][0].label) {\n const name = {}\n for (const [{ value, label }] of pieces) {\n name[label] = value\n }\n return name\n }\n const name = {}\n const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n if (family) {\n name.family = family\n }\n if (prefix) {\n name.prefix = prefix\n }\n if (pieces.length === 3) {\n name.given = formatNameParts(pieces[2])\n name.suffix = formatNameParts(pieces[1])\n } else if (pieces.length === 2) {\n name.given = formatNameParts(pieces[1])\n } else if (given) {\n name.given = given\n }\n return name\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport { util } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport * as constants from './constants.js'\nimport { orderNamePieces, formatNameParts, getStringCase } from './name.js'\nconst text = {\n commandBegin: {\n match: '\\\\begin',\n push: 'environment',\n },\n command: {\n match: /\\\\(?:[a-zA-Z]+|.) */,\n value: (s) => s.slice(1).trim(),\n },\n lbrace: {\n match: '{',\n push: 'bracedLiteral',\n },\n mathShift: {\n match: '$',\n push: 'mathLiteral',\n },\n whitespace: {\n match: /[\\s]+|~/,\n lineBreaks: true,\n value(token) {\n return token === '~' ? '\\xa0' : ' '\n },\n },\n}\nconst lexer = moo.states({\n stringLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n namesLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+[aA][nN][dD]\\s+/,\n comma: ',',\n hyphen: '-',\n equals: '=',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,=-]+/,\n }\n ),\n listLiteral: _objectSpread(\n _objectSpread(\n {\n and: /\\s+and\\s+/,\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n separatedLiteral: _objectSpread(\n _objectSpread(\n {\n comma: ',',\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\,]+/,\n }\n ),\n annotation: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n colon: ':',\n equals: '=',\n comma: ',',\n semicolon: ';',\n quote: '\"',\n itemCount: /\\d+/,\n text: /[^{$}\\s~\\\\\":;,=]+/,\n }\n ),\n bracedLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n rbrace: {\n match: '}',\n pop: true,\n },\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n mathLiteral: _objectSpread(\n _objectSpread({}, text),\n {},\n {\n mathShift: {\n match: '$',\n pop: true,\n },\n script: /[\\^_]/,\n text: /[^{$}\\s~\\\\^_]+/,\n }\n ),\n environment: _objectSpread(\n _objectSpread(\n {\n commandEnd: {\n match: '\\\\end',\n pop: true,\n },\n },\n text\n ),\n {},\n {\n text: /[^{$}\\s~\\\\]+/,\n }\n ),\n})\nfunction flattenConsString(string) {\n string[0]\n return string\n}\nfunction applyFormatting(text, format) {\n if (format in constants.formatting) {\n return text && constants.formatting[format].join(text)\n } else {\n return text\n }\n}\nexport const valueGrammar = new util.Grammar(\n {\n String() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n StringNames() {\n const list = []\n while (true) {\n this.consumeToken('whitespace', true)\n list.push(this.consumeRule('Name'))\n this.consumeToken('whitespace', true)\n if (this.matchEndOfFile()) {\n return list\n } else {\n this.consumeToken('and')\n }\n }\n },\n Name() {\n const pieces = []\n while (true) {\n pieces.push(this.consumeRule('NamePiece'))\n if (this.matchEndOfFile() || this.matchToken('and')) {\n return orderNamePieces(pieces)\n } else {\n this.consumeToken('comma')\n this.consumeToken('whitespace', true)\n }\n }\n },\n NamePiece() {\n const parts = []\n while (true) {\n const part = this.consumeRule('NameToken')\n if (part.label) {\n part.label = formatNameParts([\n ...parts,\n {\n value: part.label,\n },\n ])\n return [part]\n }\n parts.push(part)\n if (this.matchEndOfFile() || this.matchToken('and') || this.matchToken('comma')) {\n return parts\n } else {\n while (this.matchToken('hyphen') || this.matchToken('whitespace')) {\n this.consumeToken()\n }\n }\n }\n },\n NameToken() {\n let upperCase = null\n let value = ''\n while (true) {\n if (upperCase === null && this.matchToken('text')) {\n const text = this.consumeToken().value\n value += text\n upperCase = getStringCase(text)\n } else if (\n this.matchEndOfFile() ||\n this.matchToken('and') ||\n this.matchToken('comma') ||\n this.matchToken('whitespace')\n ) {\n return {\n value,\n upperCase,\n }\n } else if (this.matchToken('hyphen')) {\n return {\n value,\n upperCase,\n hyphenated: true,\n }\n } else if (this.matchToken('equals')) {\n this.consumeToken('equals')\n const text = this.consumeRule('NamePiece')\n if (text[0].label) {\n value += '=' + text[0].label\n }\n return {\n value: formatNameParts(text),\n label: value,\n }\n } else {\n value += this.consumeRule('Text')\n }\n }\n },\n StringList() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('and')) {\n output += this.consumeRule('Text')\n }\n list.push(flattenConsString(output))\n this.consumeToken('and', true)\n }\n return list.length === 1 ? list[0] : list\n },\n StringSeparated() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('comma')) {\n output += this.consumeRule('Text')\n }\n list.push(output.trim())\n this.consumeToken('comma', true)\n this.consumeToken('whitespace', true)\n }\n return list\n },\n StringVerbatim() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeToken().text\n }\n return flattenConsString(output)\n },\n StringUri() {\n const uri = this.consumeRule('StringVerbatim')\n try {\n if (decodeURI(uri) === uri) {\n return encodeURI(uri)\n } else {\n return uri\n }\n } catch (e) {\n return encodeURI(uri)\n }\n },\n StringTitleCase() {\n this.state.sentenceCase = true\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n Annotations() {\n const annotations = {}\n while (true) {\n const { scope, item, part, value } = this.consumeRule('Annotation')\n if (scope === 'part') {\n if (!annotations.part) {\n annotations.part = []\n }\n if (!annotations.part[item]) {\n annotations.part[item] = {}\n }\n annotations.part[item][part] = value\n } else if (scope === 'item') {\n if (!annotations.item) {\n annotations.item = []\n }\n annotations.item[item] = value\n } else {\n annotations.field = value\n }\n if (this.matchEndOfFile()) {\n break\n } else {\n this.consumeToken('semicolon')\n this.consumeRule('_')\n }\n }\n return annotations\n },\n Annotation() {\n const annotation = {}\n if (this.matchToken('itemCount')) {\n annotation.item = parseInt(this.consumeToken('itemCount')) - 1\n if (this.matchToken('colon')) {\n this.consumeToken('colon')\n annotation.part = this.consumeToken('text')\n annotation.scope = 'part'\n } else {\n annotation.scope = 'item'\n }\n } else {\n annotation.scope = 'field'\n }\n this.consumeToken('equals')\n this.consumeRule('_')\n if (this.matchToken('quote')) {\n this.consumeToken('quote')\n let literal = ''\n while (!this.matchToken('quote')) {\n if (\n this.matchToken('itemCount') ||\n this.matchToken('colon') ||\n this.matchToken('comma') ||\n this.matchToken('semicolon') ||\n this.matchToken('equals')\n ) {\n literal += this.token.value\n this.token = this.lexer.next()\n } else {\n literal += this.consumeRule('Text')\n }\n }\n this.consumeToken('quote')\n annotation.value = flattenConsString(literal)\n this.consumeRule('_')\n } else {\n annotation.value = []\n let output = ''\n while (true) {\n output += this.consumeRule('Text')\n if (this.matchToken('comma')) {\n this.consumeToken('comma')\n this.consumeRule('_')\n annotation.value.push(flattenConsString(output))\n output = ''\n } else if (this.matchEndOfFile() || this.matchToken('semicolon')) {\n annotation.value.push(flattenConsString(output))\n break\n }\n }\n }\n return annotation\n },\n BracketString() {\n var _this$state\n let output = ''\n this.consumeToken('lbrace')\n const sentenceCase = this.state.sentenceCase\n this.state.sentenceCase = sentenceCase && this.matchToken('command')\n ;(_this$state = this.state).partlyLowercase &&\n (_this$state.partlyLowercase = this.state.sentenceCase)\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n const topLevel = sentenceCase && !this.state.sentenceCase\n const protectCase = topLevel && this.state.partlyLowercase\n this.state.sentenceCase = sentenceCase\n this.consumeToken('rbrace')\n return protectCase ? applyFormatting(output, 'nocase') : output\n },\n MathString() {\n let output = ''\n this.consumeToken('mathShift')\n while (!this.matchToken('mathShift')) {\n if (this.matchToken('script')) {\n const script = this.consumeToken('script').value\n const text = this.consumeRule('Text').split('')\n if (text.every((char) => char in constants.mathScripts[script])) {\n output += text.map((char) => constants.mathScripts[script][char]).join('')\n } else {\n const formatName = constants.mathScriptFormatting[script]\n output += constants.formatting[formatName].join(text.join(''))\n }\n continue\n }\n if (this.matchToken('command')) {\n const command = this.token.value\n if (command in constants.mathScriptFormatting) {\n this.consumeToken('command')\n const text = this.consumeRule('BracketString')\n output += applyFormatting(text, constants.mathScriptFormatting[command])\n continue\n }\n }\n output += this.consumeRule('Text')\n }\n this.consumeToken('mathShift')\n return output\n },\n Text() {\n if (this.matchToken('lbrace')) {\n return this.consumeRule('BracketString')\n } else if (this.matchToken('mathShift')) {\n return this.consumeRule('MathString')\n } else if (this.matchToken('whitespace')) {\n return this.consumeToken('whitespace').value\n } else if (this.matchToken('commandBegin')) {\n return this.consumeRule('EnclosedEnv')\n } else if (this.matchToken('command')) {\n return this.consumeRule('Command')\n }\n const text = this.consumeToken('text').value.replace(\n constants.ligaturePattern,\n (ligature) => constants.ligatures[ligature]\n )\n const afterPunctuation = this.state.afterPunctuation\n this.state.afterPunctuation = /[?!.:]$/.test(text)\n if (!this.state.sentenceCase) {\n var _this$state2\n ;(_this$state2 = this.state).partlyLowercase ||\n (_this$state2.partlyLowercase =\n text === text.toLowerCase() && text !== text.toUpperCase())\n return text\n }\n const [first, ...otherCharacters] = text\n const rest = otherCharacters.join('')\n const restLowerCase = rest.toLowerCase()\n if (rest !== restLowerCase) {\n return text\n }\n if (!afterPunctuation) {\n return text.toLowerCase()\n }\n return first + restLowerCase\n },\n Command() {\n const commandToken = this.consumeToken('command')\n const command = commandToken.value\n if (command in constants.formattingEnvs) {\n const text = this.consumeRule('Env')\n const format = constants.formattingEnvs[command]\n return applyFormatting(text, format)\n } else if (command in constants.formattingCommands) {\n const text = this.consumeRule('BracketString')\n const format = constants.formattingCommands[command]\n return applyFormatting(text, format)\n } else if (command in constants.commands) {\n return constants.commands[command]\n } else if (command in constants.mathCommands) {\n return constants.mathCommands[command]\n } else if (command in constants.diacritics && !this.matchEndOfFile()) {\n const text = this.consumeRule('Text')\n const diacritic = text[0] + constants.diacritics[command]\n return diacritic.normalize('NFC') + text.slice(1)\n } else if (command in constants.argumentCommands) {\n const func = constants.argumentCommands[command]\n const args = []\n let arity = func.length\n while (arity-- > 0) {\n this.consumeToken('whitespace', true)\n args.push(this.consumeRule('BracketString'))\n }\n return func(...args)\n } else if (/^[&%$#_{}]$/.test(command)) {\n return commandToken.text.slice(1)\n } else {\n return commandToken.text\n }\n },\n Env() {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n return output\n },\n EnclosedEnv() {\n this.consumeToken('commandBegin')\n const beginEnv = this.consumeRule('BracketString')\n let output = ''\n while (!this.matchToken('commandEnd')) {\n output += this.consumeRule('Text')\n }\n const end = this.consumeToken('commandEnd')\n const endEnv = this.consumeRule('BracketString')\n if (beginEnv !== endEnv) {\n throw new SyntaxError(\n this.lexer.formatError(\n end,\n `environment started with \"${beginEnv}\", ended with \"${endEnv}\"`\n )\n )\n }\n return applyFormatting(output, constants.formattingEnvs[beginEnv])\n },\n _() {\n while (this.matchToken('whitespace')) {\n this.consumeToken('whitespace')\n }\n },\n },\n {\n sentenceCase: false,\n partlyLowercase: false,\n afterPunctuation: true,\n }\n)\nfunction singleLanguageIsEnglish(language) {\n return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\nfunction isEnglish(languages) {\n if (Array.isArray(languages)) {\n return languages.every(singleLanguageIsEnglish)\n }\n return singleLanguageIsEnglish(languages)\n}\nfunction getMainRule(fieldType, languages) {\n if (fieldType[1] === 'name') {\n return fieldType[0] === 'list' ? 'StringNames' : 'Name'\n }\n if (fieldType[1] === 'title') {\n const option = config.parse.sentenceCase\n if (option === 'always' || (option === 'english' && isEnglish(languages))) {\n return 'StringTitleCase'\n } else {\n return 'String'\n }\n }\n switch (fieldType[0] === 'field' ? fieldType[1] : fieldType[0]) {\n case 'list':\n return 'StringList'\n case 'separated':\n return 'StringSeparated'\n case 'verbatim':\n return 'StringVerbatim'\n case 'uri':\n return 'StringUri'\n case 'title':\n case 'literal':\n default:\n return 'String'\n }\n}\nfunction getLexerState(fieldType) {\n if (fieldType[1] === 'name') {\n return 'namesLiteral'\n }\n switch (fieldType[0]) {\n case 'list':\n return 'listLiteral'\n case 'separated':\n return 'separatedLiteral'\n case 'field':\n default:\n return 'stringLiteral'\n }\n}\nexport function parse(text, field, languages = []) {\n const fieldType = constants.fieldTypes[field] || []\n return valueGrammar.parse(\n lexer.reset(text, {\n state: getLexerState(fieldType),\n line: 0,\n col: 0,\n }),\n getMainRule(fieldType, languages)\n )\n}\nexport function parseAnnotation(text) {\n return valueGrammar.parse(\n lexer.reset(text, {\n state: 'annotation',\n line: 0,\n col: 0,\n }),\n 'Annotations'\n )\n}\n","function ownKeys(e, r) {\n var t = Object.keys(e)\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e)\n r &&\n (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable\n })),\n t.push.apply(t, o)\n }\n return t\n}\nfunction _objectSpread(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {}\n r % 2\n ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r])\n })\n : Object.getOwnPropertyDescriptors\n ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))\n : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r))\n })\n }\n return e\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key)\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, 'string')\n return 'symbol' == typeof i ? i : i + ''\n}\nfunction _toPrimitive(t, r) {\n if ('object' != typeof t || !t) return t\n var e = t[Symbol.toPrimitive]\n if (void 0 !== e) {\n var i = e.call(t, r || 'default')\n if ('object' != typeof i) return i\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return ('string' === r ? String : Number)(t)\n}\nimport config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue, parseAnnotation } from './value.js'\nimport { required } from './constants.js'\nfunction validate(entries, requirements) {\n const problems = []\n for (const { type, label, properties } of entries) {\n if (type in requirements) {\n const missing = []\n for (const field of requirements[type]) {\n if (Array.isArray(field) && !field.some((field) => field in properties)) {\n missing.push(field.join('/'))\n } else if (typeof field === 'string' && !(field in properties)) {\n missing.push(field)\n }\n }\n if (missing.length) {\n problems.push([label, `missing fields: ${missing.join(', ')}`])\n }\n } else {\n problems.push([label, `invalid type: \"${type}\"`])\n }\n }\n if (problems.length) {\n throw new RangeError(\n ['Invalid entries:']\n .concat(problems.map(([label, problem]) => ` - ${label} has ${problem}`))\n .join('\\n')\n )\n }\n}\nfunction parseEntryValues(entry) {\n const output = {}\n if ('language' in entry.properties) {\n output.language = parseValue(entry.properties.language, 'language')\n }\n for (const property in entry.properties) {\n const value = entry.properties[property]\n if (value === '') {\n continue\n }\n output[property] = parseValue(value + '', property, output.language)\n }\n for (const property in entry.annotations) {\n for (const annotation in entry.annotations[property]) {\n output[property + '+an:' + annotation] = parseAnnotation(\n entry.annotations[property][annotation]\n )\n }\n }\n return _objectSpread(\n _objectSpread({}, entry),\n {},\n {\n properties: output,\n }\n )\n}\nexport function parse(entries) {\n if (config.parse.strict) {\n validate(entries, required.biblatex)\n }\n return mapBiblatex(entries.map(parseEntryValues))\n}\nexport function parseBibtex(entries) {\n if (config.parse.strict) {\n validate(entries, required.bibtex)\n }\n return mapBibtex(entries.map(parseEntryValues))\n}\n","import { parse as parseFile } from './file.js'\nimport { parse as parseBibtxt } from './bibtxt.js'\nimport { parse as parseEntries, parseBibtex } from './entries.js'\nexport const ref = '@bibtex'\nexport const formats = {\n '@biblatex/text': {\n parse: parseFile,\n parseType: {\n dataType: 'String',\n predicate: /@\\s{0,5}[A-Za-z]{1,13}\\s{0,5}\\{\\s{0,5}[^@{}\"=,\\\\\\s]{0,100}\\s{0,5},[\\s\\S]*\\}/,\n },\n },\n '@biblatex/entry+object': {\n parse(input) {\n return parseEntries([input])\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: ['type', 'label', 'properties'],\n },\n },\n },\n '@biblatex/entries+list': {\n parse: parseEntries,\n parseType: {\n elementConstraint: '@biblatex/entry+object',\n },\n },\n '@bibtex/text': {\n parse: parseFile,\n outputs: '@bibtex/entries+list',\n },\n '@bibtex/entry+object': {\n parse(input) {\n return parseBibtex([input])\n },\n },\n '@bibtex/entries+list': {\n parse: parseBibtex,\n },\n '@bibtxt/text': {\n parse: parseBibtxt,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\[(?!\\s*[{[]).*?\\]\\s*(\\n\\s*[^[]((?!:)\\S)+\\s*:\\s*.+?\\s*)*\\s*)+$/,\n },\n },\n}\n","// @ts-nocheck\nimport config from '../config.js'\nimport { diacritics, commands, mathCommands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\nfor (const command in commands) {\n unicode[commands[command]] = command\n}\nfor (const diacritic in diacritics) {\n unicode[diacritics[diacritic]] = diacritic\n}\nfor (const ligature in ligatures) {\n unicode[ligatures[ligature]] = ligature\n}\nconst mathUnicode = {}\nfor (const command in mathCommands) {\n mathUnicode[mathCommands[command]] = command\n}\nconst UNSAFE_UNICODE =\n /[^a-zA-Z0-9\\s!\"#%&'()*+,\\-./:;=?@[\\]{}\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst DIACRITIC_PATTERN = /.[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]+/g\nconst LONE_DIACRITIC_PATTERN = /[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst listDelimiters = {\n separated: ',',\n list: ' and ',\n}\nconst richTextMappings = {\n i: '\\\\textit{',\n b: '\\\\textbf{',\n sc: '\\\\textsc{',\n sup: '\\\\textsuperscript{',\n sub: '\\\\textsubscript{',\n 'span style=\"font-variant:small-caps;\"': '\\\\textsc{',\n 'span class=\"nocase\"': '{',\n}\nfunction escapeCharacter(char) {\n if (char in unicode) {\n return unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`\n } else if (char in mathUnicode) {\n return `$\\\\${mathUnicode[char]}$`\n } else {\n return ''\n }\n}\nfunction escapeValue(value) {\n if (!config.format.asciiOnly) {\n return value\n }\n return value\n .normalize('NFKD')\n .replace(UNSAFE_UNICODE, (char) => escapeCharacter(char))\n .replace(DIACRITIC_PATTERN, (match) =>\n Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n )\n .replace(LONE_DIACRITIC_PATTERN, '')\n}\nfunction formatRichText(value) {\n const closingTags = []\n let tokens = value.split(/<(\\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g)\n tokens = tokens.map((token, index) => {\n if (index % 2 === 0) {\n return escapeValue(token)\n } else if (token in richTextMappings) {\n closingTags.push('/' + token.split(' ')[0])\n return richTextMappings[token]\n } else if (token === closingTags[closingTags.length - 1]) {\n closingTags.pop()\n return '}'\n } else {\n return ''\n }\n })\n return tokens.join('')\n}\nfunction formatName(name) {\n if (name.family && !name.prefix && !name.given & !name.suffix) {\n return name.family.includes(listDelimiters.list) ? name.family : `{${name.family}}`\n }\n const parts = ['']\n if (name.prefix && name.family) {\n parts[0] += name.prefix + ' '\n }\n if (name.family) {\n parts[0] += name.family\n }\n if (name.suffix) {\n parts.push(name.suffix)\n parts.push(name.given || '')\n } else {\n parts.push(name.given)\n }\n return escapeValue(parts.join(', ').trim())\n}\nfunction formatTitle(title) {\n return formatRichText(title)\n .split(/(:\\s*)/)\n .map((part, i) => (i % 2 ? part : part.replace(/([^\\\\])\\b([a-z]*[A-Z].*?)\\b/g, '$1{$2}')))\n .join('')\n}\nfunction formatSingleValue(value, valueType) {\n switch (valueType) {\n case 'title':\n return formatTitle(value)\n case 'literal':\n return formatRichText(value.toString())\n case 'name':\n return formatName(value)\n case 'verbatim':\n case 'uri':\n return value.toString()\n default:\n return escapeValue(value.toString())\n }\n}\nfunction formatList(values, valueType, listType) {\n const delimiter = listDelimiters[listType]\n return values\n .map((value) => {\n const formatted = formatSingleValue(value, valueType)\n return formatted.includes(delimiter) ? `{${formatted}}` : formatted\n })\n .join(delimiter)\n}\nfunction formatAnnotationValue(values) {\n if (Array.isArray(values)) {\n return values.map((value) => escapeValue(value).replace(/([;,\"])/g, '{$1}')).join(', ')\n } else {\n return '\"' + escapeValue(values).replace(/([\"])/g, '{$1}') + '\"'\n }\n}\nexport function format(field, value) {\n if (!(field in fieldTypes)) {\n return formatSingleValue(value, 'verbatim')\n }\n const [listType, valueType] = fieldTypes[field]\n if (listType in listDelimiters) {\n return formatList(value, valueType, listType)\n } else {\n return formatSingleValue(value, valueType)\n }\n}\nexport function formatAnnotation(value) {\n const annotations = []\n if (value.field) {\n annotations.push('=' + formatAnnotationValue(value.field))\n }\n if (value.item) {\n for (const [itemCount, itemValue] of Object.entries(value.item)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n annotations.push(i + '=' + formatAnnotationValue(itemValue))\n }\n }\n if (value.part) {\n for (const [itemCount, itemValue] of Object.entries(value.part)) {\n if (!itemValue) {\n continue\n }\n const i = parseInt(itemCount) + 1\n for (const part in itemValue) {\n if (!itemValue[part]) {\n continue\n }\n annotations.push(i + ':' + part + '=' + formatAnnotationValue(itemValue[part]))\n }\n }\n }\n return annotations.join('; ')\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue, formatAnnotation } from './value.js'\nfunction formatEntryValues({ type, label, properties }) {\n const output = {\n type,\n label,\n properties: {},\n }\n for (const property in properties) {\n const value = properties[property]\n const [field, annotation] = property.split('+an:')\n if (annotation) {\n if (!output.annotations) {\n output.annotations = {}\n }\n if (!output.annotations[field]) {\n output.annotations[field] = {}\n }\n output.annotations[field][annotation] = formatAnnotation(value)\n } else {\n output.properties[property] = formatValue(property, value)\n }\n }\n return output\n}\nexport function format(entries) {\n return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n return mapBibtex(entries).map(formatEntryValues)\n}\n","import config from '../config.js'\nfunction formatField(field, value, dict) {\n return dict.listItem.join(`${field} = {${value}},`)\n}\nfunction formatEntry(entry, dict) {\n const fields = []\n for (const field in entry.properties) {\n fields.push(formatField(field, entry.properties[field], dict))\n if (entry.annotations && entry.annotations[field]) {\n for (const annotation in entry.annotations[field]) {\n let annotationField = field + config.biber.annotationMarker\n if (annotation !== 'default') {\n annotationField += config.biber.namedAnnotationMarker + annotation\n }\n fields.push(formatField(annotationField, entry.annotations[field][annotation], dict))\n }\n }\n }\n return dict.entry.join(`@${entry.type}{${entry.label},${dict.list.join(fields.join(''))}}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('')\n return dict.bibliographyContainer.join(entries)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties)\n .concat([['type', type]])\n .map(([field, value]) => dict.listItem.join(`${field}: ${value}`))\n return dict.entry.join(`[${label}]${dict.list.join(fields.join(''))}`)\n}\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('\\n')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../../core/index.js'\nimport { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'\nimport { format } from './bibtex.js'\nimport { format as formatBibtxt } from './bibtxt.js'\nconst factory = function (mapper, formatter) {\n return function (data, opts = {}) {\n const { type, format = type || 'text' } = opts\n data = mapper(data)\n if (format === 'object') {\n return data\n } else if (plugins.dict.has(format)) {\n return formatter(data, plugins.dict.get(format), opts)\n } else {\n throw new RangeError(`Output dictionary \"${format}\" not available`)\n }\n }\n}\nexport default {\n bibtex: factory(mapBibtex, format),\n biblatex: factory(mapBiblatex, format),\n bibtxt: factory(mapBibtex, formatBibtxt),\n}\n","import { plugins } from '../core/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport config from './config.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n config,\n})\n","import { util } from '../core/index.js'\n\nconst defaultLocales = {\n 'en-US': `Andrew DunningSebastian KarcherRintze M. ZelleDenis MeierBrenton M. WiernikThis work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License2015-10-10T23:31:02+00:00advance online publicationalbumaudio recordingfilmhenceforthloc. cit.no placen.p.no publishern.p.onop. cit.original work publishedpersonal communicationpodcastpodcast episodepreprintradio broadcastradio seriesradio series episodespecial issuespecial sectiontelevision broadcasttelevision seriestelevision series episodevideoworking paperaccessedandand othersanonymousanon.atavailable atbycircac.citededitioneditionsed.et al.forthcomingfromibid.inin pressinternetinterviewletterno daten.d.onlinepresented at thereferencereferencesref.refs.retrievedscaleversionpreprintjournal articlemagazine articlenewspaper articlebillbookbroadcastbook chapterclassiccollectiondatasetdocumententrydictionary entryencyclopedia entryeventgraphichearinginterviewlegal caselegislationmanuscriptmapvideo recordingmusical scorepamphletconference paperpatentperformanceperiodicalpersonal communicationpostblog postregulationreportreviewbook reviewsoftwareaudio recordingpresentationstandardthesistreatywebpagejournal art.mag. art.newspaper art.bk.bk. chap.doc.graph.interv.MSvideo rec.rep.rev.bk. rev.audio rec.ADBCBCECE:,;thstndrdthththfirstsecondthirdfourthfifthsixthseventheighthninthtenthactactsappendixappendicesarticlearticlescanoncanonslocationlocationsequationequationsrulerulesscenescenestabletablestitletitlesbookbookschapterchapterscolumncolumnsfigurefiguresfoliofoliosnumbernumberslinelinesnotenotesopusoperapagepagespagepagesparagraphparagraphspartpartssectionsectionssub verbosub verbisverseversesvolumevolumesapp.apps.art.arts.loc.locs.eq.eqs.r.rr.sc.scs.tbl.tbls.tit.tits.bk.bks.chap.chaps.col.cols.fig.figs.fol.fols.no.nos.l.ll.n.nn.op.opp.p.pp.p.pp.para.paras.pt.pts.sec.secs.s.v.s.vv.v.vv.vol.vols.¶¶§§§chairchairscompilercompilerscontributorcontributorscuratorcuratorsexecutive producerexecutive producersguestguestshosthostsnarratornarratorsorganizerorganizersperformerperformersproducerproducerswriterwritersseries creatorseries creatorsdirectordirectorseditoreditorseditoreditorsillustratorillustratorstranslatortranslatorseditor & translatoreditors & translatorscomp.comps.contrib.contribs.cur.curs.exec. prod.exec. prods.narr.narrs.org.orgs.perf.perfs.prod.prods.writ.writs.cre.cres.dir.dirs.ed.eds.ed.eds.ill.ills.tran.trans.ed. & tran.eds. & trans.chaired bycompiled bywithcurated byexecutive produced bywith guesthosted bynarrated byorganized byperformed byproduced bywritten bycreated bybydirected byedited byedited byillustrated byinterview bytobytranslated byedited & translated bycomp. byw.cur. byexec. prod. byw. guesthosted bynarr. byorg. byperf. byprod. bywrit. bycre. bydir. byed. byed. byillus. bytrans. byed. & trans. byJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJan.Feb.Mar.Apr.MayJun.Jul.Aug.Sep.Oct.Nov.Dec.SpringSummerAutumnWinter`,\n}\n\nconst locales = new util.Register(defaultLocales)\n\nconst fetchLocale = (lang) => {\n if (locales.has(lang)) {\n return locales.get(lang)\n } else {\n return locales.get('en-US')\n }\n}\n\nexport default fetchLocale\nexport { locales }\n","import { util } from '../core/index.js'\n\nconst defaultTemplates = {\n apa: ``,\n}\nconst templates = new util.Register(defaultTemplates)\n\nconst fetchStyle = (style) => {\n if (templates.has(style)) {\n return templates.get(style)\n } else {\n return templates.get('apa')\n }\n}\n\nexport default fetchStyle\nexport { templates }\n","import CSL from 'citeproc'\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\nconst proxied = Symbol.for('proxied')\nconst getWrapperProxy = function (original) {\n const proxy = function (state, entry) {\n if (state.sys.wrapBibliographyEntry) {\n const [prefix, postfix] = state.sys.wrapBibliographyEntry(this.system_id)\n entry = [prefix, entry, postfix].join('')\n }\n return original.call(this, state, entry)\n }\n proxy[proxied] = true\n return proxy\n}\nfor (const format in CSL.Output.Formats) {\n const original = CSL.Output.Formats[format]['@bibliography/entry']\n if (!original || original[proxied]) {\n continue\n }\n CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\nfunction retrieveLocale(locale) {\n if (locales.has(locale)) {\n return locales.get(locale)\n }\n const unnormalised = locale.replace('-', '_')\n if (locales.has(unnormalised)) {\n return locales.get(unnormalised)\n }\n return {}\n}\nconst engines = {}\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n const engineHash = `${style}|${locale}`\n let engine\n if (engines[engineHash] instanceof CSL.Engine) {\n engine = engines[engineHash]\n engine.sys.retrieveItem = retrieveItem\n engine.sys.wrapBibliographyEntry = undefined\n engine.updateItems([])\n } else {\n engine = engines[engineHash] = new CSL.Engine(\n {\n retrieveLocale,\n retrieveItem,\n },\n styleXml,\n locale,\n true\n )\n }\n return engine\n}\nconst prepareEngine = function (data, style, locale, format) {\n if (!CSL.Output.Formats[format] || !CSL.Output.Formats[format]['@bibliography/entry']) {\n throw new TypeError(`Cannot find format '${format}'`)\n }\n const items = data.reduce((store, entry) => {\n store[entry.id] = entry\n return store\n }, {})\n const template = templates.get(templates.has(style) ? style : 'apa')\n locale = locales.has(locale) ? locale : undefined\n const callback = function (key) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n return items[key]\n } else {\n throw new Error(`Cannot find entry with id '${key}'`)\n }\n }\n const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n engine.setOutputFormat(format)\n engine.opt.development_extensions.wrap_url_and_doi = false\n return engine\n}\nexport default prepareEngine\nexport { fetchEngine }\n","const getAttributedEntry = (string, name, value) =>\n string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\nexport { getAttributedEntry, getPrefixedEntry }\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\nexport default function bibliography(data, options = {}) {\n const { template = 'apa', lang, format = 'text', nosort = false } = options\n const ids = options.entry ? [].concat(options.entry) : data.map(({ id }) => id)\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const sortedIds = citeproc.updateItems(ids, nosort)\n if (options.append || options.prepend) {\n const items = data.reduce((items, entry) => {\n items[entry.id] = entry\n return items\n }, {})\n citeproc.sys.wrapBibliographyEntry = function (id) {\n const entry = items[id]\n return [getAffix(entry, options.prepend), getAffix(entry, options.append)]\n }\n }\n if (options.hyperlinks) {\n citeproc.opt.development_extensions.wrap_url_and_doi = true\n }\n const bibliography = citeproc.makeBibliography()\n const [{ bibstart, bibend }, bibBody] = bibliography\n const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n if (options.asEntryArray) {\n return entries.map((element, index) => [sortedIds[index], element])\n }\n return bibstart + entries.join('') + bibend\n}\n","import { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nfunction prepareCiteItem(citeItem) {\n return typeof citeItem === 'object'\n ? citeItem\n : {\n id: citeItem,\n }\n}\nfunction prepareCitation(citation) {\n if (citation.citationItems) {\n return citation\n }\n return {\n citationItems: [].concat(citation).map(prepareCiteItem),\n properties: {\n noteIndex: 0,\n },\n }\n}\nfunction prepareCitations(context) {\n if (!context) {\n return []\n }\n return context.map(prepareCitation)\n}\nexport default function citation(data, options = {}) {\n const { template = 'apa', lang, format = 'text' } = options\n const ids = data.map(({ id }) => id)\n const entries = options.entry ? options.entry : ids\n data = util.downgradeCsl(data)\n const citeproc = prepareEngine(data, template, lang, format)\n const before = prepareCitations(options.citationsPre)\n const citation = prepareCitation(entries)\n const after = prepareCitations(options.citationsPost)\n const output = citeproc.rebuildProcessorState([...before, citation, ...after], format, [])\n return output[before.length][2]\n}\n","import { plugins } from '../core/index.js'\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\nplugins.add('@csl', {\n output: {\n bibliography,\n citation,\n },\n config: {\n engine,\n locales,\n templates,\n },\n})\n","import yaml from 'js-yaml'\nimport { plugins } from '../core/index.js'\n\n// See https://github.com/nodeca/js-yaml/issues/569\nconst timestampTag = 'tag:yaml.org,2002:timestamp'\nconst timestamp = yaml.DEFAULT_SCHEMA.compiledTypeMap.scalar[timestampTag]\n\nconst date = new yaml.Type(timestampTag, {\n kind: 'scalar',\n resolve: timestamp.resolve,\n construct: timestamp.construct,\n instanceOf: Date,\n represent(object) {\n return object.toISOString().split('T')[0]\n },\n})\n\nconst CFF_SCHEMA = yaml.DEFAULT_SCHEMA.extend({\n implicit: [date],\n explicit: [],\n})\n\nplugins.add('@else', {\n input: {\n '@else/yaml': {\n parseType: {\n dataType: 'String',\n tokenList: {\n split: /\\n(\\s{2})*(-\\s)?/,\n token: /^[\\w-]*: /,\n every: false,\n },\n },\n parse(file) {\n return yaml.load(file, { json: true })\n },\n },\n },\n output: {\n yaml(data) {\n return yaml.dump(data, { schema: CFF_SCHEMA })\n },\n },\n})\n","import { plugins, util } from '../core/index.js'\nimport { parse as parseDate } from '@citation-js/date'\n\nimport '../plugin-yaml/index.js'\n\n/**\n * Format: Citation File Format (CFF) version 1.2.0\n * Spec: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md\n */\n\nconst TYPES_TO_TARGET = {\n art: 'graphic',\n article: 'article-journal', // more likely\n audiovisual: 'motion_picture',\n bill: 'bill',\n blog: 'post-weblog',\n book: 'book',\n catalogue: 'collection',\n conference: 'event',\n 'conference-paper': 'paper-conference',\n data: 'dataset',\n database: 'dataset',\n dictionary: 'entry-dictionary',\n 'edited-work': 'document', // unmapped\n encyclopedia: 'entry-encyclopedia',\n 'film-broadcast': 'broadcast',\n generic: 'document',\n 'government-document': 'regulation',\n grant: 'document', // unmapped\n hearing: 'hearing',\n 'historical-work': 'classic',\n 'legal-case': 'legal_case',\n 'legal-rule': 'legislation',\n 'magazine-article': 'article-magazine',\n manual: 'report', // substitute presented in the CSL specification\n map: 'map',\n multimedia: 'motion_picture',\n music: 'musical_score',\n 'newspaper-article': 'article-newspaper',\n pamphlet: 'pamphlet',\n patent: 'patent',\n 'personal-communication': 'personal_communication',\n proceedings: 'book', // substitute presented in the CSL specification\n report: 'report',\n serial: 'periodical',\n slides: 'speech',\n software: 'software',\n 'software-code': 'software',\n 'software-container': 'software',\n 'software-executable': 'software',\n 'software-virtual-machine': 'software',\n 'sound-recording': 'song',\n standard: 'standard',\n statute: 'legislation',\n thesis: 'thesis',\n unpublished: 'article',\n video: 'motion_picture',\n website: 'webpage',\n}\n\nconst TYPES_TO_SOURCE = {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'magazine-article',\n 'article-newspaper': 'newspaper-article',\n bill: 'bill',\n book: 'book',\n broadcast: 'film-broadcast',\n chapter: 'generic', // unmapped\n classic: 'historical-work',\n collection: 'catalogue',\n dataset: 'data',\n document: 'generic',\n entry: 'generic', // unmapped\n 'entry-dictionary': 'dictionary',\n 'entry-encyclopedia': 'encyclopedia',\n event: 'conference',\n figure: 'generic', // unmapped\n graphic: 'art',\n hearing: 'hearing',\n interview: 'sound-recording',\n legal_case: 'legal-case',\n legislation: 'statute',\n manuscript: 'historical-work',\n map: 'map',\n motion_picture: 'film-broadcast',\n musical_score: 'music',\n pamphlet: 'pamphlet',\n 'paper-conference': 'conference-paper',\n patent: 'patent',\n performance: 'generic', // unmapped\n periodical: 'serial',\n personal_communication: 'personal-communication',\n post: 'serial',\n 'post-weblog': 'blog',\n regulation: 'government-document',\n report: 'report',\n review: 'generic', // unmapped\n 'review-book': 'generic', // unmapped\n software: 'software',\n song: 'sound-recording',\n speech: 'slides',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'generic',\n webpage: 'website',\n}\n\nconst ENTITY_PROPS = [\n { source: 'family-names', target: 'family' },\n { source: 'given-names', target: 'given' },\n { source: 'name-particle', target: 'non-dropping-particle' },\n { source: 'name-suffix', target: 'suffix' },\n { source: 'name', target: 'literal' },\n { source: 'orcid', target: '_orcid' },\n]\n\nconst entity = new util.Translator(ENTITY_PROPS)\n\nconst PROP_CONVERTERS = {\n names: {\n toTarget(names) {\n return names.map(entity.convertToTarget)\n },\n toSource(names) {\n return names.map(entity.convertToSource)\n },\n },\n publisher: {\n toTarget({ name, city, region, country }) {\n const place = [city, region, country].filter(Boolean).join(', ')\n return [name, place || undefined]\n },\n toSource(name, place) {\n const entity = { name }\n\n if (place) {\n // Parse the following:\n // - Country\n // - City, Country\n // - City, Region, Country\n const parts = place.split(', ')\n entity.country = parts.pop()\n if (parts.length === 2) {\n entity.region = parts.pop()\n }\n if (parts.length === 1) {\n entity.city = parts.pop()\n }\n }\n\n return entity\n },\n },\n date: {\n toTarget(date) {\n if (date instanceof Date) {\n return parseDate(date.toISOString())\n } else {\n return parseDate(new Date(date).toISOString())\n }\n },\n toSource(date) {\n if (date.raw) {\n return date.raw\n }\n const [year, month, day] = date['date-parts'][0]\n if (day) {\n return new Date(Date.UTC(year, month - 1, day))\n } else if (month) {\n return new Date(Date.UTC(year, month - 1))\n } else {\n return new Date(Date.UTC(year))\n }\n },\n },\n}\n\nconst SHARED_PROPS = [\n 'abstract',\n\n { source: 'authors', target: 'author', convert: PROP_CONVERTERS.names },\n\n // TODO cff: commit\n\n // TODO cff: contact\n\n {\n source: 'date-released',\n target: 'issued',\n when: { target: { type: 'software' } },\n convert: PROP_CONVERTERS.date,\n },\n\n { source: 'doi', target: 'DOI' },\n\n {\n source: 'identifiers',\n target: ['DOI', 'ISBN', 'ISSN', 'PMCID', 'PMID', 'URL'],\n convert: {\n toTarget(identifiers) {\n const newIdentifiers = Array(6).fill(undefined)\n for (const { type, value } of identifiers) {\n if (!this.doi && type === 'doi') {\n newIdentifiers[0] = value\n }\n if (!this.url && type === 'url') {\n newIdentifiers[5] = value\n }\n if (type === 'other' && value.startsWith('urn:isbn:')) {\n newIdentifiers[1] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('urn:issn:')) {\n newIdentifiers[2] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('pmcid:')) {\n newIdentifiers[3] = value.slice(6)\n }\n if (type === 'other' && value.startsWith('pmid:')) {\n newIdentifiers[4] = value.slice(5)\n }\n }\n return newIdentifiers\n },\n toSource(doi, isbn, issn, pmcid, pmid, url) {\n return [\n doi && { type: 'doi', value: doi },\n url && { type: 'url', value: url },\n\n isbn && { type: 'other', value: `urn:isbn:${isbn}` },\n issn && { type: 'other', value: `urn:issn:${issn}` },\n pmcid && { type: 'other', value: `pmcid:${pmcid}` },\n pmid && { type: 'other', value: `pmid:${pmid}` },\n ].filter(Boolean)\n },\n },\n },\n\n {\n source: 'keywords',\n target: 'keyword',\n convert: {\n toTarget(keywords) {\n return keywords.join(',')\n },\n toSource(keywords) {\n return keywords.split(/,\\s*/g)\n },\n },\n },\n\n // TODO cff: license\n // TODO cff: license-url\n\n // TODO cff: message *\n\n // TODO cff: repository\n // TODO cff: repository-code\n // TODO cff: repository-artifact\n\n {\n source: 'title',\n target: 'title',\n when: {\n source: { term: false, entry: false },\n target: {\n type(type) {\n return !['entry', 'entry-dictionary', 'entry-encyclopedia'].includes(type)\n },\n },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { entry: true, journal: false },\n target: { type: ['entry'] },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { term: true, journal: false },\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n { source: 'url', target: 'URL' },\n\n 'version',\n]\n\nconst MAIN_PROPS = [\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toSource(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n toTarget(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n },\n },\n\n // Include main mappings\n ...SHARED_PROPS,\n]\n\nconst REF_PROPS = [\n // Include main mappings\n ...SHARED_PROPS,\n\n // ABBREVIATION\n { source: 'abbreviation', target: 'title-short' },\n { source: 'abbreviation', target: 'shortTitle' },\n\n // COLLECTIONS\n // TODO cff: collection-doi\n // TODO cff: collection-type\n 'collection-title',\n\n // COMMUNICATION\n { source: 'recipients', target: 'recipient', convert: PROP_CONVERTERS.names },\n { source: 'senders', target: 'authors', convert: PROP_CONVERTERS.names },\n\n // CONFERENCE\n {\n source: 'conference',\n target: ['event-title', 'event-date', 'event-place', 'event'],\n convert: {\n toSource(name, date, place, nameFallback) {\n const entity = { name: name || nameFallback }\n\n if (place) {\n entity.location = place\n }\n if (date) {\n entity['date-start'] = PROP_CONVERTERS.date.toSource(date)\n\n if (date['date-parts'] && date['date-parts'].length === 2) {\n entity['date-end'] = PROP_CONVERTERS.date.toSource({\n 'date-parts': [date['date-parts'][1]],\n })\n }\n }\n\n return entity\n },\n toTarget(event) {\n return [\n event.name,\n parseDate(event['date-start'].toISOString(), event['date-end'].toISOString()),\n event.location,\n ]\n },\n },\n },\n\n // COPYRIGHT\n // TODO cff: contact\n // TODO cff: copyright\n\n // DATABASE\n { source: 'database', target: 'source' },\n // TODO cff: database-provider NOTE entity\n\n // DATE\n { source: 'date-accessed', target: 'accessed', convert: PROP_CONVERTERS.date },\n\n {\n source: 'date-downloaded',\n target: 'accessed',\n convert: PROP_CONVERTERS.date,\n when: { source: { 'date-accessed': false }, target: false },\n },\n\n {\n source: 'date-published',\n target: 'issued',\n convert: PROP_CONVERTERS.date,\n when: {\n source: { 'date-released': false },\n target() {\n return this.type !== 'book' || !this.version\n },\n },\n },\n\n {\n source: ['year', 'month'],\n target: 'issued',\n when: { source: { 'date-published': false, 'date-released': false, year: true } },\n convert: {\n toTarget(year, month) {\n const date = month ? [year, month] : [year]\n return { 'date-parts': [date] }\n },\n toSource(issued) {\n const [year, month] = issued['date-parts'][0]\n return [year, month]\n },\n },\n },\n\n {\n source: 'year-original',\n target: 'original-date',\n convert: {\n toTarget(year) {\n return { 'date-parts': [[year]] }\n },\n toSource(date) {\n return date['date-parts'][0][0]\n },\n },\n },\n\n // EDITION\n 'edition',\n\n // EDITORS\n { source: 'editors', target: 'editor', convert: PROP_CONVERTERS.names },\n { source: 'editors-series', target: 'collection-editor', convert: PROP_CONVERTERS.names },\n\n // ENTRY\n {\n source: 'entry',\n target: 'title',\n when: {\n source: { term: false },\n target: { type: 'entry' },\n },\n },\n {\n source: 'term',\n target: 'title',\n when: {\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n // FORMAT\n { source: 'format', target: 'dimensions' },\n 'medium',\n\n // GENRE\n {\n source: 'data-type',\n target: 'genre',\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n },\n {\n source: 'thesis-type',\n target: 'genre',\n when: {\n source: { 'data-type': false },\n target: { type: 'thesis' },\n },\n },\n\n // IDENTIFIERS\n { source: 'isbn', target: 'ISBN' },\n { source: 'issn', target: 'ISSN' },\n // TODO cff: nihmsid\n { source: 'pmcid', target: 'PMCID' },\n\n // ISSUE\n 'issue',\n\n // JOURNAL\n { source: 'journal', target: 'container-title' },\n { source: 'volume-title', target: 'volume-title' },\n {\n source: 'issue-title',\n target: 'volume-title',\n when: {\n source: { 'volume-title': false },\n target: false,\n },\n },\n // TODO cff: issue-date\n\n // LANGUAGE\n {\n source: 'languages',\n target: 'language',\n when: {\n target: true,\n // NOTE: possible values not as strict in csl, so test (crudely) if the value is ok first\n source: {\n language(code) {\n return /[a-z]{2,3}/.test(code)\n },\n },\n },\n convert: {\n // NOTE: CSL can only hold one language\n toSource(language) {\n return [language]\n },\n toTarget(languages) {\n return languages[0]\n },\n },\n },\n\n // LOCATION\n {\n source: 'location',\n target: ['archive', 'archive-place'],\n convert: PROP_CONVERTERS.publisher,\n },\n\n // LOCATION (CODE)\n // TODO cff: filename\n // TODO cff: loc-start\n // TODO cff: loc-end\n\n // NOTES\n { source: 'notes', target: 'note', when: { source: { scope: false } } },\n { source: 'scope', target: 'note', when: { target: false } },\n\n // NUMBER\n 'number',\n\n // PATENT\n {\n source: 'patent-states',\n target: 'jurisdiction',\n // NOTE: CSL jurisdiction can contain more than just US states\n when: { target: false },\n convert: {\n toTarget(states) {\n return states.join(', ')\n },\n },\n },\n\n // PUBLISHER\n {\n source: ['institution', 'department'],\n target: ['publisher', 'publisher-place'],\n when: { source: { publisher: false }, target: { type: 'thesis' } },\n convert: {\n toTarget(institution, department) {\n const [name, place] = PROP_CONVERTERS.publisher.toTarget(institution)\n return [department ? `${department}, ${name}` : name, place]\n },\n toSource(name, place) {\n return [PROP_CONVERTERS.publisher.toSource(name, place)]\n },\n },\n },\n {\n source: 'publisher',\n target: ['publisher', 'publisher-place'],\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n convert: PROP_CONVERTERS.publisher,\n },\n\n // SECTION\n 'section',\n\n // STATUS\n {\n source: 'status',\n target: 'status',\n when: {\n source: true,\n // NOTE: possible values not as strict in csl, so test if the value is ok first\n target: {\n status: [\n 'in-preparation',\n 'abstract',\n 'submitted',\n 'in-press',\n 'advance-online',\n 'preprint',\n ],\n },\n },\n },\n\n // PAGES\n { source: 'start', target: 'page-first', when: { target: { page: false } } },\n {\n source: ['start', 'end'],\n target: 'page',\n convert: {\n toTarget(start, end) {\n return end ? `${start}-${end}` : start\n },\n toSource(page) {\n const [start, end] = page.split('-')\n return end ? [start, end] : [start]\n },\n },\n },\n { source: 'pages', target: 'number-of-pages' },\n\n // TRANSLATORS\n { source: 'translators', target: 'translator', convert: PROP_CONVERTERS.names },\n\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toTarget(type) {\n return TYPES_TO_TARGET[type] || 'document'\n },\n toSource(type) {\n if (type === 'book' && this['event-title']) {\n return 'proceedings'\n }\n return TYPES_TO_SOURCE[type] || 'generic'\n },\n },\n },\n\n // VOLUMES\n 'volume',\n { source: 'number-volumes', target: 'number-of-volumes' },\n]\n\nconst mainTranslator = new util.Translator(MAIN_PROPS)\nconst refTranslator = new util.Translator(REF_PROPS)\nconst CFF_VERSION = '1.2.0'\n\n/** Add doi or url as unique id if available to make citation easy */\nfunction addId(entry) {\n if ('DOI' in entry) {\n entry.id = entry.DOI\n } else if ('URL' in entry) {\n entry.id = entry.URL.replace('http://', '').replace('https://', '')\n }\n}\n\nfunction parse(input) {\n const main = mainTranslator.convertToTarget(input)\n if (input['cff-version'] <= '1.1.0') {\n main.type = TYPES_TO_TARGET.software\n }\n main._cff_mainReference = true\n addId(main)\n\n const output = [main]\n if (input['preferred-citation']) {\n const preferredCitation = refTranslator.convertToTarget(input['preferred-citation'])\n addId(preferredCitation)\n output.push(preferredCitation)\n }\n\n if (Array.isArray(input.references)) {\n output.push(...input.references.map(refTranslator.convertToTarget))\n }\n\n return output\n}\n\nfunction format(input, options = {}) {\n input = input.slice()\n const {\n main,\n preferred,\n cffVersion = CFF_VERSION,\n message = 'Please cite the following works when using this software.',\n } = options\n\n let preferredCitation\n const preferredIndex = input.findIndex((entry) => preferred && entry.id === preferred)\n if (cffVersion >= '1.2.0' && preferredIndex > -1) {\n preferredCitation = refTranslator.convertToSource(...input.splice(preferredIndex, 1))\n }\n\n let mainIndex = input.findIndex((entry) => (main ? entry.id === main : entry._cff_mainReference))\n mainIndex = mainIndex > -1 ? mainIndex : 0\n const mainRef = input[mainIndex]\n ? mainTranslator.convertToSource(...input.splice(mainIndex, 1))\n : {}\n if (mainRef && cffVersion < '1.2.0') {\n delete mainRef.type\n }\n\n const cff = { 'cff-version': cffVersion, message, ...mainRef }\n\n if (preferredCitation) {\n cff['preferred-citation'] = preferredCitation\n }\n\n if (input.length) {\n // @ts-ignore\n cff.references = input.map(refTranslator.convertToSource)\n }\n\n return cff\n}\n\nplugins.add('@cff', {\n input: {\n '@cff/object': {\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: 'cff-version',\n },\n },\n parse,\n },\n },\n output: {\n cff(data, options = {}) {\n const output = format(data, options)\n if (options.type === 'object') {\n return output\n } else {\n return plugins.output.format('yaml', output)\n }\n },\n },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n const copy = {}\n for (const key in obj) {\n copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n }\n return copy\n}\n\nfunction Cite(data, opts) {\n if (!(this instanceof Cite)) {\n return new Cite(data, opts)\n }\n\n const self = new CiteCore(data, opts)\n this._options = self._options\n this.log = self.log\n this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n","export default ``\n","export default ``\n","export default ``\n","export default ``\n","import rehypeCitationGenerator from './generator.js'\n// @ts-ignore\nimport Cite from './cite.js'\nimport mla from '../styles/mla.js'\nimport chicago from '../styles/chicago.js'\nimport harvard1 from '../styles/harvard1.js'\nimport vancouver from '../styles/vancouver.js'\n\nconst config = Cite.plugins.config.get('@csl')\n\n// Citation.js comes with apa\nconfig.templates.add('vancouver', vancouver)\nconfig.templates.add('harvard1', harvard1)\nconfig.templates.add('mla', mla)\nconfig.templates.add('chicago', chicago)\n\nconst rehypeCitation = rehypeCitationGenerator(Cite)\n\nexport default rehypeCitation\n"],"names":["citationRE","fullCitationRE","_wrapRegExp","prefix","citekey","explicitLocator","explicitLocatorInSuffix","suffix","locatorRE","locatorLabels","book","chapter","column","figure","folio","issue","line","note","opus","page","paragraph","part","section","verse","volume","parseCitation","regexMatch","entries","isComposite","fullCitation","inTextSuppressAuthor","inTextCitation","optionalSuffix","undefined","citationPart","split","match","exec","trim","thisCitation","id","groups","replace","locator","label","rawPrefix","endsWith","substring","length","rawSuffix","suffixToParse","containsLocator","parseSuffix","push","_extends","retValue","natural","toLowerCase","startsWith","substr","readFile","path","isValidHttpUrl","response","fetch","text","error","Error","then","fs","readFileSync","str","url","URL","_","protocol","getBibliography","options","file","bibliography","frontmatterBibliography","getFrontmatterField","i","join","cwd","loadCSL","Cite","format","root","config","plugins","get","Object","keys","templates","data","includes","cslName","Math","random","toString","slice","cslPath","add","err","loadLocale","locales","localePath","xmlLangRe","localeName","getCitationFormat","citeproc","info","cslXml","dataObj","children","node","find","x","citationFormat","getSortedRelevantRegistryItems","relevantIds","sorted","res","item","registry","reflist","index","isSameAuthor","item2","authorList","ref","author","authorList2","family","fieldName","_file$data$astro","sources","matter","frontmatter","astro","source","getBibliographyEntryText","originalItemIds","mylist","updateItems","bibOutput","makeBibliography","entryText","console","htmlToHast","html","p5ast","parseFragment","fromParse5","genCitation","mode","citationIdRoot","citationId","citationPre","inlineClass","linkCitations","showTooltips","tooltipAttribute","key","c","processCitationCluster","citationID","citationItems","properties","noteIndex","citationText","ids","map","tooltipMap","forEach","entry","wrapperTooltipAttr","e","refIds","output","d","refId","tooltipAttr","results","opt","sort_citations","citeMatch","ambig","indexOf","issued","year","startPos","start","rest","genBiblioNode","params","bibBody","biblioNode","filter","_node$properties","className","entry_ids","genFootnoteSection","citationDict","footnoteArray","footnoteSection","list","type","tagName","value","oldFootnoteList","n","idx","oldId","href","dataFootnoteBackref","ariaLabel","liNode","aNode","newfootnoteSection","dataFootnotes","defaultCiteFormat","permittedTags","idRoot","rehypeCitationGenerator","tree","_options$inlineBibCla","bibtexFile","inputCiteformat","csl","noCite","inputLang","lang","citeFormat","citations","generateGraph","citationIds","engine","xclass","parsedEntries","visit","parent","citeStartIdx","citeEndIdx","newChildren","citeItem","citedText","citedTextNode","mergedIds","concat","suppressBibliography","inlineBibClass","bilioInserted","biblioMap","_options$inlineBibCla2","_node$properties2","citekeys","pop","inlineBibNode","aBibNode","class","splice","fnArray","nextNode","newFootnoteSection","currentVersion","log","retrieveVersion","versnum","image","constructor","JSON","parse","undo","number","retrieveLastVersion","save","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","style","append","prepend","test","validateOptions","maxChainLength","forceType","strict","target","defaultOptions","validate","assign","typeOf","thing","name","dataTypeOf","Array","isArray","applyGraph","graph","_graph","findIndex","removeGraph","logger","_output","level","scope","msg","_log","_levels","_console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","listTypeParser","treeTypeParser","attachNode","typeMatcher","_defineProperty","obj","_toPropertyKey","defineProperty","enumerable","configurable","writable","t","_toPrimitive","r","Symbol","toPrimitive","String","Number","TypeParser","validateDataType","validDataTypes","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","trimInput","testTokens","parsePropertyConstraint","constraints","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","async","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","ownKeys","getOwnPropertySymbols","o","getOwnPropertyDescriptor","apply","_objectSpread","arguments","getOwnPropertyDescriptors","defineProperties","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","broadcast","classic","collection","dataset","document","event","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","dissertation","fieldTypes","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","submitted","categories","custom","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","jurisdiction","keyword","medium","PMCID","PMID","printing","publisher","references","scale","status","supplement","title","version","correctName","bestGuessConversions","literal","given","ORCID","orcid","_ORCID","_orcid","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","correctType","correctField","fieldType","parseFloat","parseCsl","clean","field","correction","upgradeCsl","downgradeCsl","deepCopy","seen","Set","has","copy","delete","conversions","lib","sign","evenRound","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","isFinite","abs","clamp","val","treatNullAsEmptyString","codePointAt","S","U","charCodeAt","fromCodePoint","a","b","Date","module","exports","mixin","getOwnPropertyNames","wrapperSymbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","s","findStatus","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","combiningMarksRegex","validateLabel","punycode","toUnicode","search","processing","result","labels","validation","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","gopher","http","https","ws","wss","failure","ucs2","decode","at","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","regex","parseIPv4","parts","numbers","ipv4","counter","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","serializeIPv6","seqResult","findLongestZeroSequence","ignore0","separator","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","tr46","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","trimControlChars","trimTabAndNewline","shortenPath","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","encodedCodePoints","parseHostName","parsePort","fileOtherwiseCodePoints","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","shift","parseCannotBeABaseURLPath","parseQuery","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","v","origin","hostname","pathname","hash","toJSON","utils","args","setup","is","set","Impl","create","privateData","interface","expose","Window","Worker","require$$0","require$$1","Readable","Stream","BUFFER","Blob","blobParts","buffers","element","ArrayBuffer","isView","from","byteOffset","byteLength","size","Promise","resolve","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","max","min","span","slicedBuffer","blob","toStringTag","FetchError","message","systemError","code","errno","captureStackTrace","convert","require","INTERNALS","PassThrough","Body","body","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","bodyUsed","consumeBody","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","kind","k","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","next","getPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","Response","contentType","statusText","ok","redirected","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","isAbortSignal","signal","Request","inputBody","redirect","follow","agent","getNodeRequestOptions","request","contentLengthValue","totalBytes","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","isSameProtocol","send","destroyStream","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","addEventListener","removeEventListener","once","socket","fixResponseChunkedTransferBadEnding","addListener","hadError","hasDataListener","listenerCount","isRedirect","statusCode","location","locationURL","requestOpts","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","createInflateRaw","createBrotliDecompress","errorCallback","destroy","serializeHeaders","deserializeHeaders","old","serializeRequest","credentials","cache","referrer","referrerPolicy","integrity","keepalive","deserializeRequest","resource","serializeResponse","deserializeResponse","bodyError","createStream","errors","serializeError","deserializeError","parseBodyType","parseBody","Transform","read","shared","execFileSync","_fetch","sendMessage","execPath","__dirname","windowsHide","maxBuffer","Infinity","shell","_body","_bodyError","SyncRequest","defineBuffer","checkBody","SyncResponse","defineBodyError","_super","self","catch","wrapFetchForNode","u","fetchNode","context","fetchFn","default","isBrowser","navigator","fetchPolyfill","userAgent","release","fetchId","Register","remove","Grammar","rules","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","got","SyntaxError","formatError","rule","createConditionEval","condition","conditionEval","parsePropStatement","toSource","inputProp","outputProp","toTarget","when","createConverter","Translator","CONVERT_TO_SOURCE","converter","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","prepareParseGraph","reduce","array","last","count","ChainParser","iteration","iterate","typeInfo","getTypeInfo","outputs","chain","parseData","chainLink","chainAsync","parseDataAsync","chainLinkAsync","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","listDataParser","formatParser","asyncData","util","parseInput","getIds","addAsync","parseInputAsync","setAsync","reset","getLabel","getComparisonValue","getName","num","compareProp","entryA","entryB","flip","getSortCallback","formatter","register","formatData","parsedOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","tmp","innerHTML","firstChild","promise","staticMethods","dict","entryName","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","registers","indices","mainIndex","typeIndex","typePlugins","typePlugin","substituters","parseJSON","subst","textContent","empty","jquery","jQuery","HTMLElement","appendCommas","getJsonObject","src","getJsonValue","getJson","warn","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","quickscrapeSpecificProps","generalProps","reviewer","keywords","published","parseDate","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","factory","moo","this","hasSticky","sticky","isRegExp","isObject","reEscape","reGroups","re","reCapture","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","lastNLines","numLines","position","lineBreaks","lastIndexOf","startPosition","objectToRules","j","include","ruleOptions","arrayToRules","defaultType","fallback","shouldThrow","toRules","spec","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","word","unicode","pat","regexp","groupCount","fallbackRule","flags","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","col","queuedToken","queuedText","queuedThrow","setState","popState","pushState","eat","_getGroup","tokenToString","queuedGroup","_token","group","lastIndex","offset","matchNL","nl","LexerIterator","numLinesAround","firstDisplayedLine","lastDisplayedLine","lastLineDigits","displayedLines","errorLines","lineNo","freeze","biblatexTypes","mvbook","bookinbook","mvcollection","mvproceedings","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","electronic","www","bibtexTypes","required","biblatex","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","H","textcommabelow","commands","textquotesingle","textasciigrave","textquotedbl","textdollar","textless","textgreater","textbackslash","textasciicircum","textunderscore","textbraceleft","textbar","textbraceright","textasciitilde","textexclamdown","textcent","textsterling","textcurrency","textyen","textbrokenbar","textsection","textasciidieresis","textcopyright","textordfeminine","guillemetleft","guillemotleft","textlnot","textregistered","textasciimacron","textdegree","textpm","texttwosuperior","textthreesuperior","textasciiacute","textmu","textparagraph","textperiodcentered","textonesuperior","textordmasculine","guillemetright","guillemotright","textonequarter","textonehalf","textthreequarters","textquestiondown","AE","DH","texttimes","O","TH","ss","ae","dh","textdiv","th","DJ","dj","IJ","ij","L","NG","ng","OE","oe","textflorin","textasciicaron","textasciibreve","textacutedbl","textgravedbl","texttildelow","textbaht","SS","textcompwordmark","textendash","textemdash","textbardbl","textquoteleft","textquoteright","quotesinglbase","textquotedblleft","textquotedblright","quotedblbase","textdagger","textdaggerdbl","textbullet","textellipsis","textperthousand","textpertenthousand","guilsinglleft","guilsinglright","textreferencemark","textinterrobang","textfractionsolidus","textlquill","textrquill","textdiscount","textcolonmonetary","textlira","textnaira","textwon","textdong","texteuro","textpeso","textcelsius","textnumero","textcircledP","textrecipe","textservicemark","texttrademark","textohm","textmho","textestimated","textleftarrow","textuparrow","textrightarrow","textdownarrow","textminus","Hwithstroke","hwithstroke","textasteriskcentered","textsurd","textlangle","textrangle","textblank","textvisiblespace","textopenbullet","textbigcircle","textmusicalnote","textmarried","textdivorced","textinterrobangdown","copyright","mathCommands","Gamma","Delta","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega","alpha","beta","gamma","delta","varepsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","pi","rho","varsigma","sigma","tau","upsilon","varphi","chi","psi","omega","vartheta","Upsilon","phi","varpi","varrho","epsilon","_required","_fieldTypes","defaultStrings","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","acmcs","acta","cacm","ibmjrd","ibmsj","ieeese","ieeetc","ieeetcad","ipl","jacm","jcss","scp","sicomp","tocs","tods","tog","toms","toois","toplas","tcs","formattingEnvs","it","itshape","sl","slshape","em","bf","bfseries","sc","scshape","rm","sf","tt","formattingCommands","textit","textsl","emph","mkbibitalic","mkbibemph","textbf","strong","mkbibbold","textsc","textsuperscript","textsubscript","enquote","mkbibquote","textmd","textrm","textsf","texttt","textup","formatting","italics","bold","superscript","subscript","smallcaps","nocase","quotes","argumentCommands","ElsevierGlyph","glyph","fromCharCode","ligaturePattern","ligatures","mathScriptFormatting","sp","sb","mathrm","mathScripts","h","m","p","sentenceCaseLanguages","constants","sentenceCase","useIdAsLabel","checkLabel","asciiOnly","biber","annotationMarker","namedAnnotationMarker","whitespace","comment","main","junk","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","equals","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","entryBody","closeBrace","EntryBody","annotationField","annotationName","annotations","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","splitEntries","parseEntry","splitPairs","splitPair","parseBibTxtEntry","out","parseBibTxt","stopWords","unsafeChars","isLabelSafe","formatLabelFromId","firstWord","months","LABEL","MONTHS","january","february","march","april","june","july","august","september","october","november","december","TYPE_KEYS","bathesis","mathesis","candthesis","resreport","datacd","audiocd","patentde","patenteu","patentfr","patentuk","patentus","patreq","patreqde","patreqeu","patreqfr","patrequk","patrequs","STANDARD_NUMBERS_PATTERN","day","parseMonth","formatLabel","Converters","PICK","datePart","padStart","YEAR_MONTH","EPRINT","EVENT_TITLE","addon","HOW_PUBLISHED","howPublished","KEYWORDS","NAMES","NAMES_ORCID","inputName","_orcid$item","outputName","PAGES","STANDARD_NUMBERS","STATUS","TITLE","nonSpec","formatDate","S2ID","aliases","subtype","typeKey","sourceType","subType","targetType","BOOK","BOOK_PART","COLLECTION","COLLECTION_PART","PROCEEDINGS","PROCEEDINGS_PART","PERIODICAL_PART","TITLE_MAP","shortand","shortandintro","targets","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","_parse","_format","_spec$convertToSource","parseBibtex","formatBibtex","getStringCase","formatNameParts","piece","hyphenated","orderNameParts","orderGiven","undecided","upperCase","unshift","orderNamePieces","pieces","commandBegin","command","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","colon","semicolon","itemCount","mathLiteral","script","environment","commandEnd","flattenConsString","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","Annotations","Annotation","_this$state","partlyLowercase","topLevel","protectCase","MathString","char","formatName","ligature","afterPunctuation","_this$state2","first","otherCharacters","restLowerCase","Command","commandToken","diacritic","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","isEnglish","languages","getMainRule","option","getLexerState","parseAnnotation","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","mapBibtex","parseEntries","parseBibtxt","mathUnicode","UNSAFE_UNICODE","DIACRITIC_PATTERN","LONE_DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","sub","escapeCharacter","escapeValue","subject","formatRichText","closingTags","tokens","formatTitle","formatSingleValue","valueType","formatList","listType","delimiter","formatted","formatAnnotationValue","formatAnnotation","itemValue","formatEntryValues","formatValue","formatField","formatEntry","mapper","bibtxt","formatBibtxt","defaultLocales","defaultTemplates","apa","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","Engine","prepareEngine","items","store","setOutputFormat","development_extensions","wrap_url_and_doi","getAttributedEntry","getPrefixedEntry","getAffix","affix","nosort","sortedIds","hyperlinks","bibstart","bibend","asEntryArray","prepareCiteItem","prepareCitation","citation","prepareCitations","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","ENTITY_PROPS","entity","PROP_CONVERTERS","city","region","country","place","UTC","SHARED_PROPS","newIdentifiers","fill","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","_cff_mainReference","preferredCitation","preferred","cffVersion","preferredIndex","mainRef","cff","CiteCore","vancouver","harvard1","mla","chicago","rehypeCitation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,GACrB,muhBAAmG,CAAA;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,gBAAAC,WAAA,CACzB,s2hBAAgK,EAAA;EAAAC,MAAA,EAAA,CAAA;EAAAC,OAAA,EAAA,CAAA;EAAAC,eAAA,EAAA,CAAA;EAAAC,uBAAA,EAAA,CAAA;EAAAC,MAAA,EAAA,CAAA;AAAA,CAAA,CAAA,CAAA;;AAElK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,GAAG,yCAAyC;;AC5ClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAG;EACpBC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACzFC,EAAAA,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;AAC9FC,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;AAChGC,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACjFC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;EACnFC,KAAK,EAAE,CACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAK,CACN;AACDC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC/EC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC3DC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvDC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;EAC7DC,SAAS,EAAE,CACT,QAAQ,EACR,SAAS,EACT,MAAM,EACN,GAAG,EACH,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,CACV;AACDC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;EACpFC,OAAO,EAAE,CACP,WAAW,EACX,YAAY,EACZ,SAAS,EACT,GAAG,EACH,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,CACR;AACD,EAAA,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC;AACtFC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AACnFC,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAA;AAC/E,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,aAAa,GAAIC,UAAU,IAAK;AAC3C;EACA,IAAIC,OAAO,GAAG,EAAE,CAAA;EAChB,IAAIC,WAAW,GAAG,KAAK,CAAA;AACvB,EAAA,MAAMC,YAAY,GAAGH,UAAU,CAAC,CAAC,CAAC,CAAA;AAClC,EAAA,MAAMI,oBAAoB,GAAGJ,UAAU,CAAC,CAAC,CAAC,CAAA;AAC1C,EAAA,MAAMK,cAAc,GAAGL,UAAU,CAAC,CAAC,CAAC,CAAA;AACpC,EAAA,MAAMM,cAAc,GAAGN,UAAU,CAAC,CAAC,CAAC,CAAA;EAEpC,IAAIG,YAAY,KAAKI,SAAS,EAAE;AAC9B;IACA,KAAK,MAAMC,YAAY,IAAIL,YAAY,CAACM,KAAK,CAAC,GAAG,CAAC,EAAE;MAClD,MAAMC,KAAK,GAAGnC,cAAc,CAACoC,IAAI,CAACH,YAAY,CAACI,IAAI,EAAE,CAAC,CAAA;MACtD,IAAIF,KAAK,KAAK,IAAI,EAAE;AAClB,QAAA,SAAQ;AACV,OAAA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMG,YAAY,GAAG;AACnBC,QAAAA,EAAE,EAAEJ,KAAK,CAACK,MAAM,CAACrC,OAAO,CAACsC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AAChDvC,QAAAA,MAAM,EAAE8B,SAAS;AACjBU,QAAAA,OAAO,EAAEV,SAAS;AAClBW,QAAAA,KAAK,EAAE,MAAM;AACb,QAAA,iBAAiB,EAAE,KAAK;AACxBrC,QAAAA,MAAM,EAAE0B,SAAAA;OACT,CAAA;;AAED;AACA;AACA,MAAA,MAAMY,SAAS,GAAGT,KAAK,CAACK,MAAM,CAACtC,MAAM,CAAA;MACrC,IAAI0C,SAAS,KAAKZ,SAAS,EAAE;AAC3BM,QAAAA,YAAY,CAAC,iBAAiB,CAAC,GAAGM,SAAS,CAACP,IAAI,EAAE,CAACQ,QAAQ,CAAC,GAAG,CAAC,CAAA;AAChE,QAAA,IAAIP,YAAY,CAAC,iBAAiB,CAAC,EAAE;UACnCA,YAAY,CAACpC,MAAM,GAAG0C,SAAS,CAACE,SAAS,CAAC,CAAC,EAAEF,SAAS,CAACP,IAAI,EAAE,CAACU,MAAM,GAAG,CAAC,CAAC,CAACV,IAAI,EAAE,CAAA;AAClF,SAAC,MAAM;AACLC,UAAAA,YAAY,CAACpC,MAAM,GAAG0C,SAAS,CAACP,IAAI,EAAE,CAAA;AACxC,SAAA;AACF,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMjC,eAAe,GAAG+B,KAAK,CAACK,MAAM,CAACpC,eAAe,CAAA;AACpD,MAAA,MAAMC,uBAAuB,GAAG8B,KAAK,CAACK,MAAM,CAACnC,uBAAuB,CAAA;AACpE,MAAA,MAAM2C,SAAS,GAAGb,KAAK,CAACK,MAAM,CAAClC,MAAM,CAAA;AAErC,MAAA,IAAI2C,aAAa,CAAA;MACjB,IAAIC,eAAe,GAAG,IAAI,CAAA;AAC1B,MAAA,IAAI9C,eAAe,KAAK4B,SAAS,IAAI3B,uBAAuB,KAAK2B,SAAS,EAAE;AAC1E;AACA;AACAiB,QAAAA,aAAa,GAAGD,SAAS,CAAA;AACzBE,QAAAA,eAAe,GAAG,KAAK,CAAA;OACxB,MAAM,IAAI7C,uBAAuB,KAAK2B,SAAS,IAAI5B,eAAe,KAAK4B,SAAS,EAAE;AACjFiB,QAAAA,aAAa,GAAG7C,eAAe,KAAK4B,SAAS,GAAG5B,eAAe,GAAGC,uBAAuB,CAAA;QACzFiC,YAAY,CAAChC,MAAM,GAAG0C,SAAS,oBAATA,SAAS,CAAEX,IAAI,EAAE,CAAA;AACzC,OAAA;MAEA,MAAM;QAAEM,KAAK;QAAED,OAAO;AAAEpC,QAAAA,MAAAA;AAAO,OAAC,GAAG6C,WAAW,CAACF,aAAa,EAAEC,eAAe,CAAC,CAAA;MAC9EZ,YAAY,CAACI,OAAO,GAAGA,OAAO,CAAA;MAE9B,IAAIC,KAAK,KAAKX,SAAS,EAAE;QACvBM,YAAY,CAACK,KAAK,GAAGA,KAAK,CAAA;AAC5B,OAAA;AAEA,MAAA,IAAIvC,eAAe,KAAK4B,SAAS,IAAI3B,uBAAuB,KAAK2B,SAAS,EAAE;QAC1EM,YAAY,CAAChC,MAAM,GAAGA,MAAM,CAAA;OAC7B,MAAM,IAAIA,MAAM,KAAK0B,SAAS,IAAIM,YAAY,CAACI,OAAO,KAAKV,SAAS,EAAE;AACrE;AACA;AACA;QACAM,YAAY,CAACI,OAAO,IAAIpC,MAAM,CAAA;AAChC,OAAA;AAEAoB,MAAAA,OAAO,CAAC0B,IAAI,CAACd,YAAY,CAAC,CAAA;AAC5B,KAAA;AACF,GAAC,MAAM;AACL;AACAX,IAAAA,WAAW,GAAG,IAAI,CAAA;IAClBD,OAAO,CAAC0B,IAAI,CAAAC,QAAA,CAAA;AACVnD,MAAAA,MAAM,EAAE8B,SAAS;MACjBO,EAAE,EAAET,cAAc,CAACW,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;MAC1C,iBAAiB,EAAEZ,oBAAoB,KAAKG,SAAAA;AAAS,KAAA,EAClDmB,WAAW,CAACpB,cAAc,EAAE,KAAK,CAAC,CACtC,CAAC,CAAA;AACJ,GAAA;AACA,EAAA,OAAO,CAACL,OAAO,EAAEC,WAAW,CAAC,CAAA;AAC/B,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASwB,WAAWA,CAAC7C,MAAM,EAAE4C,eAAe,EAAE;AAC5C;AACA,EAAA,MAAMI,QAAQ,GAAG;AACfZ,IAAAA,OAAO,EAAEV,SAAS;AAClBW,IAAAA,KAAK,EAAE,MAAM;AACbrC,IAAAA,MAAM,EAAE0B,SAAAA;GACT,CAAA;EAED,IAAI1B,MAAM,KAAK0B,SAAS,EAAE;AACxB,IAAA,OAAOsB,QAAQ,CAAA;AACjB,GAAA;;AAEA;AACAhD,EAAAA,MAAM,GAAGA,MAAM,CAAC+B,IAAI,EAAE,CAAA;;AAEtB;AACA,EAAA,KAAK,MAAMM,KAAK,IAAInC,aAAa,EAAE;AACjC,IAAA,KAAK,MAAM+C,OAAO,IAAI/C,aAAa,CAACmC,KAAK,CAAC,EAAE;AAC1C,MAAA,IAAIrC,MAAM,CAACkD,WAAW,EAAE,CAACC,UAAU,CAACF,OAAO,CAACC,WAAW,EAAE,CAAC,EAAE;QAC1DF,QAAQ,CAACX,KAAK,GAAGA,KAAK,CAAA;AACtB,QAAA,IAAIO,eAAe,EAAE;AACnB;AACA;AACAI,UAAAA,QAAQ,CAACZ,OAAO,GAAGpC,MAAM,CAACoD,MAAM,CAACH,OAAO,CAACR,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;AACzD,SAAC,MAAM;AACL;AACA;AACAiB,UAAAA,QAAQ,CAAChD,MAAM,GAAGA,MAAM,CAACoD,MAAM,CAACH,OAAO,CAACR,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;UACtD,MAAMF,KAAK,GAAG5B,SAAS,CAAC6B,IAAI,CAACkB,QAAQ,CAAChD,MAAM,CAAC,CAAA;UAC7C,IAAI6B,KAAK,KAAK,IAAI,EAAE;AAClBmB,YAAAA,QAAQ,CAACZ,OAAO,GAAGP,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5BmB,YAAAA,QAAQ,CAAChD,MAAM,GAAGgD,QAAQ,CAAChD,MAAM,CAACoD,MAAM,CAACvB,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;AAClE,WAAA;AACF,SAAA;AAEA,QAAA,OAAOiB,QAAQ,CAAC;AAClB,OAAA;AACF,KAAA;AACF,GAAA;;AAEA;AACA;AACA;AACA,EAAA,IAAIJ,eAAe,EAAE;IACnBI,QAAQ,CAACZ,OAAO,GAAGpC,MAAM,CAAA;AAC3B,GAAC,MAAM;AACL;AACA;AACA;AACA,IAAA,MAAM6B,KAAK,GAAG5B,SAAS,CAAC6B,IAAI,CAAC9B,MAAM,CAAC,CAAA;IACpC,IAAI6B,KAAK,KAAK,IAAI,EAAE;AAClBmB,MAAAA,QAAQ,CAACZ,OAAO,GAAGP,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5BmB,MAAAA,QAAQ,CAAChD,MAAM,GAAGA,MAAM,CAACoD,MAAM,CAACvB,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAC,CAACV,IAAI,EAAE,CAAC;AAC1D,KAAA;AACF,GAAA;;AAEA,EAAA,OAAOiB,QAAQ,CAAA;AACjB;;AC1OO,MAAMK,QAAQ,GAAG,MAAOC,IAAI,IAAK;AACtC,EAAA,IAAIC,cAAc,CAACD,IAAI,CAAC,EAAE;IACxB,IAAI;AACF,MAAA,MAAME,QAAQ,GAAG,MAAMC,OAAK,CAACH,IAAI,CAAC,CAAA;AAClC,MAAA,OAAO,MAAME,QAAQ,CAACE,IAAI,EAAE,CAAA;KAC7B,CAAC,OAAOC,KAAK,EAAE;AACd,MAAA,MAAM,IAAIC,KAAK,CAAE,CAAiCD,+BAAAA,EAAAA,KAAM,GAAE,CAAC,CAAA;AAC7D,KAAA;AACF,GAAC,MAAM;AACL,IAAY;MACV,IAAI;AACF,QAAA,OAAO,OAAO,IAAI,CAAC,CAACE,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,YAAY,CAACT,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;OAChE,CAAC,OAAOK,KAAK,EAAE;AACd,QAAA,MAAM,IAAIC,KAAK,CAAE,CAAA,sCAAA,CAAuC,CAAC,CAAA;AAC3D,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAML,cAAc,GAAIS,GAAG,IAAK;AACrC,EAAA,IAAIC,GAAG,CAAA;EAEP,IAAI;AACFA,IAAAA,GAAG,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC,CAAA;GACnB,CAAC,OAAOG,CAAC,EAAE;AACV,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,OAAOF,GAAG,CAACG,QAAQ,KAAK,OAAO,IAAIH,GAAG,CAACG,QAAQ,KAAK,QAAQ,IAAIH,GAAG,CAACG,QAAQ,KAAK,OAAO,CAAA;AAC1F,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAG,OAAOC,OAAO,EAAEC,IAAI,KAAK;AACtD;EACA,IAAIC,YAAY,GAAG,EAAE,CAAA;AACrB,EAAA,MAAMC,uBAAuB,GAAGC,mBAAmB,CAACH,IAAI,EAAE,cAAc,CAAC,CAAA;EACzE,IAAID,OAAO,CAACE,YAAY,EAAE;AACxBA,IAAAA,YAAY,GACV,OAAOF,OAAO,CAACE,YAAY,KAAK,QAAQ,GAAG,CAACF,OAAO,CAACE,YAAY,CAAC,GAAGF,OAAO,CAACE,YAAY,CAAA;GAC3F,MAAM,IAAIC,uBAAuB,EAAE;IAClCD,YAAY,GACV,OAAOC,uBAAuB,KAAK,QAAQ,GACvC,CAACA,uBAAuB,CAAC,GACzBA,uBAAuB,CAAA;AAC/B,GAAA;AACA;AACA,EAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,YAAY,CAAC/B,MAAM,EAAEkC,CAAC,EAAE,EAAE;IAC5C,IAAI,CAACpB,cAAc,CAACiB,YAAY,CAACG,CAAC,CAAC,CAAC,EAAE;AACpC;MACA,IAAIL,OAAO,CAAChB,IAAI,EAAE;AAChB;AACA,QAAY;UACVkB,YAAY,CAACG,CAAC,CAAC,GAAG,MAAM,OAAO,MAAM,CAAC,CAACd,IAAI,CAAEP,IAAI,IAC/CA,IAAI,CAACsB,IAAI,CAACN,OAAO,CAAChB,IAAI,EAAEkB,YAAY,CAACG,CAAC,CAAC,CACzC,CAAC,CAAA;AACD;AACF,SAEA;AACA;AACF,OAAC,MAAM;AACL;AACA,QAAY;UACVH,YAAY,CAACG,CAAC,CAAC,GAAG,MAAM,OAAO,MAAM,CAAC,CAACd,IAAI,CAAEP,IAAI,IAC/CA,IAAI,CAACsB,IAAI,CAACL,IAAI,CAACM,GAAG,EAAEL,YAAY,CAACG,CAAC,CAAC,CACrC,CAAC,CAAA;AACD;AACF,SAIA;AACF,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,OAAOH,YAAY,CAAA;AACrB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMM,OAAO,GAAG,OAAOC,IAAI,EAAEC,MAAM,EAAEC,IAAI,GAAG,EAAE,KAAK;EACxD,MAAMC,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,EAAA,IAAI,CAACC,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACK,SAAS,CAACC,IAAI,CAAC,CAACC,QAAQ,CAACT,MAAM,CAAC,EAAE;IACxD,MAAMU,OAAO,GAAI,CAAYC,UAAAA,EAAAA,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC,CAAA,CAAA;IACrE,IAAIC,OAAO,GAAG,EAAE,CAAA;IAChB,IAAIxC,cAAc,CAACyB,MAAM,CAAC,EAAEe,OAAO,GAAGf,MAAM,CACvC,KAAA;MACSe,OAAO,GAAG,MAAM,OAAO,MAAM,CAAC,CAAClC,IAAI,CAAEP,IAAI,IAAKA,IAAI,CAACsB,IAAI,CAACK,IAAI,EAAED,MAAM,CAAC,CAAC,CAAA;AACpF,KAAA;IACA,IAAI;AACFE,MAAAA,MAAM,CAACK,SAAS,CAACS,GAAG,CAACN,OAAO,EAAE,MAAMrC,QAAQ,CAAC0C,OAAO,CAAC,CAAC,CAAA;KACvD,CAAC,OAAOE,GAAG,EAAE;AACZ,MAAA,MAAM,IAAIrC,KAAK,CAAE,CAAoBoB,kBAAAA,EAAAA,MAAO,qCAAoC,CAAC,CAAA;AACnF,KAAA;AACA,IAAA,OAAOU,OAAO,CAAA;AAChB,GAAC,MAAM;AACL,IAAA,OAAOV,MAAM,CAAA;AACf,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,UAAU,GAAG,OAAOnB,IAAI,EAAEC,MAAM,EAAEC,IAAI,GAAG,EAAE,KAAK;EAC3D,MAAMC,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,EAAA,IAAI,CAACC,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACiB,OAAO,CAACX,IAAI,CAAC,CAACC,QAAQ,CAACT,MAAM,CAAC,EAAE;IACtD,IAAIoB,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI7C,cAAc,CAACyB,MAAM,CAAC,EAAEoB,UAAU,GAAGpB,MAAM,CAC1C,KAAA;MACSoB,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC,CAACvC,IAAI,CAAEP,IAAI,IAAKA,IAAI,CAACsB,IAAI,CAACK,IAAI,EAAED,MAAM,CAAC,CAAC,CAAA;AACvF,KAAA;IACA,IAAI;AACF,MAAA,MAAMT,IAAI,GAAG,MAAMlB,QAAQ,CAAC+C,UAAU,CAAC,CAAA;MACvC,MAAMC,SAAS,GAAG,iBAAiB,CAAA;MACnC,MAAMC,UAAU,GAAG/B,IAAI,CAAC1C,KAAK,CAACwE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;MAC3CnB,MAAM,CAACiB,OAAO,CAACH,GAAG,CAACM,UAAU,EAAE/B,IAAI,CAAC,CAAA;AACpC,MAAA,OAAO+B,UAAU,CAAA;KAClB,CAAC,OAAOL,GAAG,EAAE;AACZ,MAAA,MAAM,IAAIrC,KAAK,CAAE,CAAuBoB,qBAAAA,EAAAA,MAAO,qCAAoC,CAAC,CAAA;AACtF,KAAA;AACF,GAAC,MAAM;AACL,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMuB,iBAAiB,GAAIC,QAAQ,IAAK;EAC7C,MAAMC,IAAI,GAAGD,QAAQ,CAACE,MAAM,CAACC,OAAO,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;EAChD,MAAMC,IAAI,GAAGJ,IAAI,CAACG,QAAQ,CAACE,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC,OAAO,CAAC,IAAIA,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AACnF;AACA;AACA;EACA,MAAMC,cAAc,GAAGH,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAA;AACvD,EAAA,OAAOG,cAAc,CAAA;AACvB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,8BAA8B,GAAGA,CAACT,QAAQ,EAAEU,WAAW,EAAEC,MAAM,KAAK;EAC/E,MAAMC,GAAG,GAAG,EAAE,CAAA;AACd,EAAA,IAAID,MAAM,EAAE;AACV;IACA,KAAK,MAAME,IAAI,IAAIb,QAAQ,CAACc,QAAQ,CAACC,OAAO,EAAE;AAC5C,MAAA,IAAIL,WAAW,CAACzB,QAAQ,CAAC4B,IAAI,CAACpF,EAAE,CAAC,EAAEmF,GAAG,CAACtE,IAAI,CAACuE,IAAI,CAAC,CAAA;AACnD,KAAA;AACF,GAAC,MAAM;AACL;AACA,IAAA,KAAK,MAAMpF,EAAE,IAAIiF,WAAW,EAAE;AAC5BE,MAAAA,GAAG,CAACtE,IAAI,CAAC0D,QAAQ,CAACc,QAAQ,CAACC,OAAO,CAACT,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC9E,EAAE,KAAKA,EAAE,CAAC,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;AACA,EAAA,OAAOmF,GAAG,CAAA;AACZ,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMxF,KAAK,GAAGA,CAACoC,GAAG,EAAEwD,KAAK,KAAK;AACnC,EAAA,OAAO,CAACxD,GAAG,CAAC8B,KAAK,CAAC,CAAC,EAAE0B,KAAK,CAAC,EAAExD,GAAG,CAAC8B,KAAK,CAAC0B,KAAK,CAAC,CAAC,CAAA;AAChD,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGA,CAACJ,IAAI,EAAEK,KAAK,KAAK;AAC3C,EAAA,MAAMC,UAAU,GAAGN,IAAI,CAACO,GAAG,CAACC,MAAM,CAAA;AAClC,EAAA,MAAMC,WAAW,GAAGJ,KAAK,CAACE,GAAG,CAACC,MAAM,CAAA;EACpC,IAAIF,UAAU,CAAClF,MAAM,KAAKqF,WAAW,CAACrF,MAAM,EAAE,OAAO,KAAK,CAAA;AAC1D,EAAA,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgD,UAAU,CAAClF,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAC1C,IAAA,IAAIgD,UAAU,CAAChD,CAAC,CAAC,CAACoD,MAAM,KAAKD,WAAW,CAACnD,CAAC,CAAC,CAACoD,MAAM,EAAE,OAAO,KAAK,CAAA;AAClE,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,MAAMrD,mBAAmB,GAAGA,CAACH,IAAI,EAAEyD,SAAS,KAAK;AAAA,EAAA,IAAAC,gBAAA,CAAA;AACtD,EAAA,IAAI,CAAC1D,IAAI,IAAI,CAACA,IAAI,CAACiB,IAAI,EAAE;AACvB,IAAA,OAAO9D,SAAS,CAAA;AAClB,GAAA;EAEA,MAAMwG,OAAO,GAAG,CAAC3D,IAAI,CAACiB,IAAI,CAAC2C,MAAM,EAAE5D,IAAI,CAACiB,IAAI,CAAC4C,WAAW,EAAAH,CAAAA,gBAAA,GAAE1D,IAAI,CAACiB,IAAI,CAAC6C,KAAK,KAAfJ,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAiBG,WAAW,CAAC,CAAA;AAEvF,EAAA,KAAK,MAAME,MAAM,IAAIJ,OAAO,EAAE;AAC5B,IAAA,IAAII,MAAM,IAAIN,SAAS,IAAIM,MAAM,EAAE;MACjC,OAAOA,MAAM,CAACN,SAAS,CAAC,CAAA;AAC1B,KAAA;AACF,GAAA;AAEA,EAAA,OAAOtG,SAAS,CAAA;AAClB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM6G,wBAAwB,GAAGA,CAAC/B,QAAQ,EAAEvE,EAAE,KAAK;EACxD,IAAI;AACF;IACA,MAAMuG,eAAe,GAAG,CAAC,GAAGhC,QAAQ,CAACc,QAAQ,CAACmB,MAAM,CAAC,CAAA;;AAErD;AACAjC,IAAAA,QAAQ,CAACkC,WAAW,CAAC,CAACzG,EAAE,CAAC,CAAC,CAAA;IAC1B,MAAM0G,SAAS,GAAGnC,QAAQ,CAACoC,gBAAgB,CAAC,CAAC3G,EAAE,CAAC,CAAC,CAAA;AACjD,IAAA,IAAI,CAAC0G,SAAS,IAAI,CAACA,SAAS,CAAC,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,CAAC,CAAClG,MAAM,KAAK,CAAC,EAAE;AAC5D+D,MAAAA,QAAQ,CAACkC,WAAW,CAACF,eAAe,CAAC,CAAA;AACrC,MAAA,OAAO,EAAE,CAAA;AACX,KAAA;;AAEA;AACA,IAAA,IAAIK,SAAS,GAAGF,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACxG,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AACvD0G,IAAAA,SAAS,GAAGA,SAAS,CAAC1G,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAACJ,IAAI,EAAE,CAAA;;AAEjD;AACAyE,IAAAA,QAAQ,CAACkC,WAAW,CAACF,eAAe,CAAC,CAAA;AAErC,IAAA,OAAOK,SAAS,CAAA;GACjB,CAAC,OAAOlF,KAAK,EAAE;AACdmF,IAAAA,OAAO,CAACnF,KAAK,CAAC,wCAAwC,EAAEA,KAAK,CAAC,CAAA;AAC9D,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;AACF,CAAC;;ACtRD;AACA;AACA;AACA;AACA;AACO,MAAMoF,UAAU,GAAIC,IAAI,IAAK;AAClC,EAAA,MAAMC,KAAK,GAAGC,aAAa,CAACF,IAAI,CAAC,CAAA;AACjC;EACA,OAAOG,UAAU,CAACF,KAAK,CAAC,CAACrC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;;ACZD;AACA;AACA;AACA;AACA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMwC,WAAW,GAAGA,CACzB5C,QAAQ,EACR6C,IAAI,EACJjI,OAAO,EACPkI,cAAc,EACdC,UAAU,EACVC,WAAW,EACXlF,OAAO,EACPjD,WAAW,EACX2F,cAAc,KACX;EACH,MAAM;IAAEyC,WAAW;IAAEC,aAAa;AAAEC,IAAAA,YAAY,GAAG,KAAK;AAAEC,IAAAA,gBAAgB,GAAG,OAAA;AAAQ,GAAC,GAAGtF,OAAO,CAAA;AAChG,EAAA,MAAMuF,GAAG,GAAI,CAAA,EAAEP,cAAe,CAAA,CAAA,EAAGC,UAAW,CAAC,CAAA,CAAA;AAC7C,EAAA,MAAMO,CAAC,GAAGtD,QAAQ,CAACuD,sBAAsB,CACvC;AACEC,IAAAA,UAAU,EAAEH,GAAG;AACfI,IAAAA,aAAa,EAAE7I,OAAO;AACtB8I,IAAAA,UAAU,EACRb,IAAI,KAAK,SAAS,GACd;AAAEc,MAAAA,SAAS,EAAE,CAAC;AAAEd,MAAAA,IAAI,EAAEhI,WAAW,GAAG,WAAW,GAAG,EAAA;AAAG,KAAC,GACtD;AAAE8I,MAAAA,SAAS,EAAEZ,UAAU;AAAEF,MAAAA,IAAI,EAAEhI,WAAW,GAAG,WAAW,GAAG,EAAA;AAAG,KAAA;AACtE,GAAC,EACDmI,WAAW,CAAC/G,MAAM,GAAG,CAAC,GAAG+G,WAAW,GAAG,EAAE,EACzC,EACF,CAAC,CAAA;EAED,MAAMY,YAAY,GAAGN,CAAC,CAAC,CAAC,CAAC,CAAChD,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,KAAK8C,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;EACtD,MAAMQ,GAAG,GAAI,CAAA,UAAA,EAAYjJ,OAAO,CAACkJ,GAAG,CAAEvD,CAAC,IAAKA,CAAC,CAAC9E,EAAE,CAACiB,WAAW,EAAE,CAAC,CAAC0B,IAAI,CAAC,IAAI,CAAE,CAAI2E,EAAAA,EAAAA,UAAW,CAAC,CAAA,CAAA;;AAE3F;EACA,MAAMgB,UAAU,GAAG,EAAE,CAAA;AACrB,EAAA,IAAIZ,YAAY,EAAE;AAChBvI,IAAAA,OAAO,CAACoJ,OAAO,CAAEC,KAAK,IAAK;MACzB,MAAM5B,SAAS,GAAGN,wBAAwB,CAAC/B,QAAQ,EAAEiE,KAAK,CAACxI,EAAE,CAAC,CAAA;AAC9D;MACAsI,UAAU,CAACE,KAAK,CAACxI,EAAE,CAACiB,WAAW,EAAE,CAAC,GAAG2F,SAAS,CAAC1G,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/F,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACA,EAAA,MAAMuI,kBAAkB,GAAGf,YAAY,GAClC,CAAGC,CAAAA,EAAAA,gBAAiB,CAAIxI,EAAAA,EAAAA,OAAO,CAACkJ,GAAG,CAAEK,CAAC,IAAKJ,UAAU,CAACI,CAAC,CAAC1I,EAAE,CAACiB,WAAW,EAAE,CAAC,CAAC,CAAC0B,IAAI,CAAC,IAAI,CAAE,CAAA,CAAA,CAAE,GACzF,EAAE,CAAA;EAEN,IAAIyE,IAAI,KAAK,MAAM,EAAE;AACnB,IAAA,OAAO,CACLe,YAAY,EACZrB,UAAU,CACP,CAAA,aAAA,EAAe,CAACU,WAAW,IAAXA,IAAAA,GAAAA,WAAW,GAAI,EAAE,EAAE7E,IAAI,CACtC,GACF,CAAE,CAAA,KAAA,EAAOyF,GAAI,CAAA,EAAEK,kBAAmB,CAAA,wBAAA,EAA0BnB,UAAW,CAAA,iBAAA,EAAmBA,UAAW,CAAA,sDAAA,EAAwDA,UAAW,CAAA,iBAAA,CAC1K,CAAC,CACF,CAAA;AACH,GAAC,MAAM,IAAIG,aAAa,IAAI1C,cAAc,KAAK,SAAS,EAAE;AACxD;IACA,IAAIrC,CAAC,GAAG,CAAC,CAAA;IACT,MAAMiG,MAAM,GAAGxJ,OAAO,CAACkJ,GAAG,CAAEK,CAAC,IAAKA,CAAC,CAAC1I,EAAE,CAAC,CAAA;IACvC,MAAM4I,MAAM,GAAGT,YAAY,CAACjI,OAAO,CAAC,MAAM,EAAE,UAAU2I,CAAC,EAAE;MACvD,MAAMC,KAAK,GAAGH,MAAM,CAACjG,CAAC,CAAC,CAACzB,WAAW,EAAE,CAAA;AACrC,MAAA,MAAM8H,WAAW,GAAGrB,YAAY,GAAI,CAAGC,CAAAA,EAAAA,gBAAiB,CAAIW,EAAAA,EAAAA,UAAU,CAACQ,KAAK,CAAE,CAAA,CAAA,CAAE,GAAG,EAAE,CAAA;MACrF,MAAM9G,GAAG,GAAI,CAAgB8G,cAAAA,EAAAA,KAAM,IAAGC,WAAY,CAAA,CAAA,EAAGF,CAAE,CAAK,IAAA,CAAA,CAAA;AAC5DnG,MAAAA,CAAC,EAAE,CAAA;AACH,MAAA,OAAOV,GAAG,CAAA;AACZ,KAAC,CAAC,CAAA;IAEF,OAAO,CACLmG,YAAY,EACZrB,UAAU,CAAE,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE7E,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOyF,GAAI,CAAGQ,CAAAA,EAAAA,MAAO,CAAQ,OAAA,CAAA,CAAC,CACxF,CAAA;AACH,GAAC,MAAM,IAAInB,aAAa,IAAI1C,cAAc,KAAK,aAAa,EAAE;AAC5D;AACA,IAAA,IAAI5F,OAAO,CAACqB,MAAM,KAAK,CAAC,EAAE;AACxB;MACA,MAAMsI,KAAK,GAAG3J,OAAO,CAAC,CAAC,CAAC,CAACa,EAAE,CAACiB,WAAW,EAAE,CAAA;AACzC,MAAA,MAAM8H,WAAW,GAAGrB,YAAY,GAAI,CAAGC,CAAAA,EAAAA,gBAAiB,CAAIW,EAAAA,EAAAA,UAAU,CAACQ,KAAK,CAAE,CAAA,CAAA,CAAE,GAAG,EAAE,CAAA;AAErF,MAAA,MAAMF,MAAM,GAAGxJ,WAAW,GACrB,CAAgB0J,cAAAA,EAAAA,KAAM,IAAGC,WAAY,CAAA,CAAA,EAAGZ,YAAa,CAAK,IAAA,CAAA,GAC1D,GAAEA,YAAY,CAACtE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,iBAAgBiF,KAAM,CAAA,CAAA,EAAGC,WAAY,CAAGZ,CAAAA,EAAAA,YAAY,CAACtE,KAAK,CACpF,CAAC,EACD,CAAC,CACH,CAAE,CAAA,IAAA,EAAMsE,YAAY,CAACtE,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAA,CAAA;MAEpC,OAAO,CACLsE,YAAY,EACZrB,UAAU,CAAE,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE7E,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOyF,GAAI,CAAGQ,CAAAA,EAAAA,MAAO,CAAQ,OAAA,CAAA,CAAC,CACxF,CAAA;AACH,KAAC,MAAM;AACL;MACA,MAAMD,MAAM,GAAGxJ,OAAO,CAACkJ,GAAG,CAAEK,CAAC,IAAKA,CAAC,CAAC1I,EAAE,CAAC,CAAA;AACvC,MAAA,MAAMgJ,OAAO,GAAGhE,8BAA8B,CAACT,QAAQ,EAAEoE,MAAM,EAAEpE,QAAQ,CAAC0E,GAAG,CAACC,cAAc,CAAC,CAAA;MAC7F,MAAMN,MAAM,GAAG,EAAE,CAAA;MACjB,IAAI7G,GAAG,GAAGoG,YAAY,CAAA;AAEtB,MAAA,KAAK,MAAM,CAACzF,CAAC,EAAE0C,IAAI,CAAC,IAAI4D,OAAO,CAAC7J,OAAO,EAAE,EAAE;AACzC;AACA,QAAA,MAAMa,EAAE,GAAGoF,IAAI,CAACpF,EAAE,CAAA;AAClB,QAAA,IAAImJ,SAAS,GAAG/D,IAAI,CAACgE,KAAK,CAAA;AAC1B;QACA,IAAI1G,CAAC,GAAG,CAAC,IAAI8C,YAAY,CAACwD,OAAO,CAACtG,CAAC,GAAG,CAAC,CAAC,EAAE0C,IAAI,CAAC,IAAIrD,GAAG,CAACsH,OAAO,CAACF,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAChF;UACAA,SAAS,GAAG/D,IAAI,CAACO,GAAG,CAAC2D,MAAM,CAACC,IAAI,CAAC3F,QAAQ,EAAE,CAAA;AAC7C,SAAA;AACA,QAAA,MAAM4F,QAAQ,GAAGzH,GAAG,CAACsH,OAAO,CAACF,SAAS,CAAC,CAAA;QACvC,MAAM,CAACM,KAAK,EAAEC,IAAI,CAAC,GAAG/J,KAAK,CAACoC,GAAG,EAAEyH,QAAQ,CAAC,CAAA;AAC1CZ,QAAAA,MAAM,CAAC/H,IAAI,CAAC4I,KAAK,CAAC,CAAC;;AAEnB,QAAA,MAAMX,KAAK,GAAG9I,EAAE,CAACiB,WAAW,EAAE,CAAA;AAC9B,QAAA,MAAM8H,WAAW,GAAGrB,YAAY,GAAI,CAAGC,CAAAA,EAAAA,gBAAiB,CAAIW,EAAAA,EAAAA,UAAU,CAACQ,KAAK,CAAE,CAAA,CAAA,CAAE,GAAG,EAAE,CAAA;AACrF,QAAA,MAAM9G,GAAG,GAAI,CAAA,cAAA,EAAgB8G,KAAM,CAAA,CAAA,EAAGC,WAAY,CAAGW,CAAAA,EAAAA,IAAI,CAACnJ,SAAS,CACjE,CAAC,EACD4I,SAAS,CAAC3I,MACZ,CAAE,CAAK,IAAA,CAAA,CAAA;AAEPoI,QAAAA,MAAM,CAAC/H,IAAI,CAACmB,GAAG,CAAC,CAAA;QAChBD,GAAG,GAAG2H,IAAI,CAACnJ,SAAS,CAAC4I,SAAS,CAAC3I,MAAM,CAAC,CAAA;AACxC,OAAA;AACAoI,MAAAA,MAAM,CAAC/H,IAAI,CAACkB,GAAG,CAAC,CAAA;AAChB,MAAA,OAAO,CACLoG,YAAY,EACZrB,UAAU,CACP,CAAA,aAAA,EAAe,CAACU,WAAW,IAAXA,IAAAA,GAAAA,WAAW,GAAI,EAAE,EAAE7E,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOyF,GAAI,CAAA,CAAA,EAAGQ,MAAM,CAACjG,IAAI,CAAC,EAAE,CAAE,CAC9E,OAAA,CAAA,CAAC,CACF,CAAA;AACH,KAAA;AACF,GAAC,MAAM;IACL,OAAO,CACLwF,YAAY,EACZrB,UAAU,CACP,gBAAe,CAACU,WAAW,IAAXA,IAAAA,GAAAA,WAAW,GAAI,EAAE,EAAE7E,IAAI,CACtC,GACF,CAAE,CAAOyF,KAAAA,EAAAA,GAAI,CAAEK,EAAAA,kBAAmB,CAAGN,CAAAA,EAAAA,YAAa,CACpD,OAAA,CAAA,CAAC,CACF,CAAA;AACH,GAAA;AACF,CAAC;;AClKD;AACA;AACA;AACA;AACA;AACO,MAAMwB,aAAa,GAAIpF,QAAQ,IAAK;EACzC,MAAM,CAACqF,MAAM,EAAEC,OAAO,CAAC,GAAGtF,QAAQ,CAACoC,gBAAgB,EAAE,CAAA;EACrD,MAAMpE,YAAY,GAChB,mDAAmD,GAAGsH,OAAO,CAAClH,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAA;AACnF,EAAA,MAAMmH,UAAU,GAAGhD,UAAU,CAACvE,YAAY,CAAC,CAAA;;AAE3C;AACAuH,EAAAA,UAAU,CAACnF,QAAQ,CAChBoF,MAAM,CAAEnF,IAAI,IAAA;AAAA,IAAA,IAAAoF,gBAAA,CAAA;AAAA,IAAA,OAAA,CAAAA,gBAAA,GAAKpF,IAAI,CAACqD,UAAU,cAAA+B,gBAAA,GAAfA,gBAAA,CAAiBC,SAAS,KAA1BD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA4BxG,QAAQ,CAAC,WAAW,CAAC,CAAA;AAAA,GAAA,CAAC,CACnE+E,OAAO,CAAC,CAAC3D,IAAI,EAAElC,CAAC,KAAK;AACpB,IAAA,MAAM9E,OAAO,GAAGgM,MAAM,CAACM,SAAS,CAACxH,CAAC,CAAC,CAAC,CAAC,CAAC,CAACzB,WAAW,EAAE,CAAA;IACpD2D,IAAI,CAACqD,UAAU,GAAGrD,IAAI,CAACqD,UAAU,IAAI,EAAE,CAAA;AACvCrD,IAAAA,IAAI,CAACqD,UAAU,CAACjI,EAAE,GAAG,MAAM,GAAGpC,OAAO,CAAA;AACvC,GAAC,CAAC,CAAA;AACJ,EAAA,OAAOkM,UAAU,CAAA;AACnB,CAAC;;ACtBD;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,kBAAkB,GAAGA,CAACC,YAAY,EAAEC,aAAa,EAAEC,eAAe,KAAK;AAClF;AACA,EAAA,MAAMC,IAAI,GAAG;AACXC,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,OAAO,EAAE,IAAI;IACbxC,UAAU,EAAE,EAAE;AACdtD,IAAAA,QAAQ,EAAE,CAAC;AAAE6F,MAAAA,IAAI,EAAE,MAAM;AAAEE,MAAAA,KAAK,EAAE,IAAA;KAAM,CAAA;GACzC,CAAA;AACD,EAAA,IAAIC,eAAe,CAAA;AACnB,EAAA,IAAIL,eAAe,EAAE;;IAEnBK,eAAe,GAAGL,eAAe,CAAC3F,QAAQ,CAACoF,MAAM,CAACa,CAAC,IAAKA,CAAC,CAACJ,IAAI,IAAI,SAAU,CAAC,CAAC3F,IAAI,CAAE+F,CAAC,IAAMA,CAAC,CAACH,OAAO,KAAK,IAAK,CAAC,CAAA;AACjH,GAAA;AACA,EAAA,KAAK,MAAM,CAACI,GAAG,EAAEzF,IAAI,CAAC,IAAIiF,aAAa,CAAClL,OAAO,EAAE,EAAE;IACjD,MAAM;MAAEqL,IAAI;AAAEM,MAAAA,KAAAA;AAAM,KAAC,GAAG1F,IAAI,CAAA;IAC5B,IAAIoF,IAAI,KAAK,UAAU,EAAE;AACvBD,MAAAA,IAAI,CAAC5F,QAAQ,CAAC9D,IAAI,CAAC;AACjB2J,QAAAA,IAAI,EAAE,SAAS;AACfC,QAAAA,OAAO,EAAE,IAAI;AACbxC,QAAAA,UAAU,EAAE;AAAEjI,UAAAA,EAAE,EAAG,CAAA,gBAAA,EAAkB6K,GAAG,GAAG,CAAE,CAAA,CAAA;SAAG;AAChDlG,QAAAA,QAAQ,EAAE,CACR;AACE6F,UAAAA,IAAI,EAAE,SAAS;AACfC,UAAAA,OAAO,EAAE,GAAG;UACZxC,UAAU,EAAE,EAAE;UACdtD,QAAQ,EAAE,CACRmC,UAAU,CAAE,CAAA,MAAA,EAAQsD,YAAY,CAACU,KAAK,CAAE,CAAQ,OAAA,CAAA,CAAC,EACjD;AACEN,YAAAA,IAAI,EAAE,SAAS;AACfC,YAAAA,OAAO,EAAE,GAAG;AACZxC,YAAAA,UAAU,EAAE;AACV8C,cAAAA,IAAI,EAAG,CAAA,oBAAA,EAAsBF,GAAG,GAAG,CAAE,CAAC,CAAA;AACtCG,cAAAA,mBAAmB,EAAE,IAAI;cACzBf,SAAS,EAAE,CAAC,uBAAuB,CAAC;AACpCgB,cAAAA,SAAS,EAAE,iBAAA;aACZ;AACDtG,YAAAA,QAAQ,EAAE,CAAC;AAAE6F,cAAAA,IAAI,EAAE,MAAM;AAAEE,cAAAA,KAAK,EAAE,GAAA;aAAK,CAAA;WACxC,CAAA;AAEL,SAAC,EACD;AAAEF,UAAAA,IAAI,EAAE,MAAM;AAAEE,UAAAA,KAAK,EAAE,IAAA;SAAM,CAAA;AAEjC,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM,IAAIF,IAAI,KAAK,UAAU,EAAE;AAC9B;MACA,MAAMU,MAAM,GAAGP,eAAe,CAAChG,QAAQ,CAACE,IAAI,CACzC+F,CAAC,IAAKA,CAAC,CAACH,OAAO,KAAK,IAAI,IAAIG,CAAC,CAAC3C,UAAU,CAACjI,EAAE,KAAM,CAAA,gBAAA,EAAkB8K,KAAM,CAAA,CAC5E,CAAC,CAAA;MACDI,MAAM,CAACjD,UAAU,CAACjI,EAAE,GAAI,CAAkB6K,gBAAAA,EAAAA,GAAG,GAAG,CAAE,CAAC,CAAA,CAAA;MACnD,MAAMM,KAAK,GAAGD,MAAM,CAACvG,QAAQ,CAAC,CAAC,CAAC,CAACA,QAAQ,CAACE,IAAI,CAAE+F,CAAC,IAAKA,CAAC,CAACH,OAAO,KAAK,GAAG,CAAC,CAAA;MACxEU,KAAK,CAAClD,UAAU,CAAC8C,IAAI,GAAI,CAAsBF,oBAAAA,EAAAA,GAAG,GAAG,CAAE,CAAC,CAAA,CAAA;AACxDN,MAAAA,IAAI,CAAC5F,QAAQ,CAAC9D,IAAI,CAACqK,MAAM,CAAC,CAAA;AAC5B,KAAA;AACF,GAAA;;AAEA;AACA,EAAA,MAAME,kBAAkB,GAAG;AACzBZ,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,OAAO,EAAE,SAAS;AAClBxC,IAAAA,UAAU,EAAE;AAAEoD,MAAAA,aAAa,EAAE,IAAI;MAAEpB,SAAS,EAAE,CAAC,WAAW,CAAA;KAAG;AAC7DtF,IAAAA,QAAQ,EAAE,CACR;AACE6F,MAAAA,IAAI,EAAE,SAAS;AACfC,MAAAA,OAAO,EAAE,IAAI;AACbxC,MAAAA,UAAU,EAAE;QAAEgC,SAAS,EAAE,CAAC,SAAS,CAAC;AAAEjK,QAAAA,EAAE,EAAE,gBAAA;OAAkB;AAC5D2E,MAAAA,QAAQ,EAAE,CAAC;AAAE6F,QAAAA,IAAI,EAAE,MAAM;AAAEE,QAAAA,KAAK,EAAE,WAAA;OAAa,CAAA;AACjD,KAAC,EACD;AAAEF,MAAAA,IAAI,EAAE,MAAM;AAAEE,MAAAA,KAAK,EAAE,IAAA;AAAK,KAAC,EAC7BH,IAAI,CAAA;GAEP,CAAA;AACD,EAAA,OAAOa,kBAAkB,CAAA;AAC3B,CAAC;;AC1DD,MAAME,iBAAiB,GAAG,KAAK,CAAA;AAC/B,MAAMC,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC5D,MAAMC,MAAM,GAAG,UAAU,CAAA;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACMC,MAAAA,uBAAuB,GAAI3I,IAAI,IAAK;AACxC,EAAA,OAAO,CAACT,OAAO,GAAG,EAAE,KAAK;AACvB,IAAA,OAAO,OAAOqJ,IAAI,EAAEpJ,IAAI,KAAK;AAAA,MAAA,IAAAqJ,qBAAA,CAAA;AAC3B;MACA,IAAIC,UAAU,GAAG,EAAE,CAAA;AACnB,MAAA,MAAMC,eAAe;MAEnBxJ,OAAO,CAACyJ,GAAG,IAAIrJ,mBAAmB,CAACH,IAAI,EAAE,KAAK,CAAC,IAAIgJ,iBAAiB,CAAA;AACtE,MAAA,MAAMS,MAAM;MAEV1J,OAAO,CAAC0J,MAAM,IAAItJ,mBAAmB,CAACH,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAA;AAChE,MAAA,MAAM0J,SAAS,GAAG3J,OAAO,CAAC4J,IAAI,IAAI,OAAO,CAAA;MACzC,MAAMhJ,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,MAAA,MAAM+I,UAAU,GAAG,MAAMrJ,OAAO,CAACC,IAAI,EAAE+I,eAAe,EAAExJ,OAAO,CAAChB,IAAI,CAAC,CAAA;AACrE,MAAA,MAAM4K,IAAI,GAAG,MAAMhI,UAAU,CAACnB,IAAI,EAAEkJ,SAAS,EAAE3J,OAAO,CAAChB,IAAI,CAAC,CAAA;MAE5D,IAAIkB,YAAY,GAAG,MAAMH,eAAe,CAACC,OAAO,EAAEC,IAAI,CAAC,CAAA;AACvD,MAAA,IAAIC,YAAY,CAAC/B,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,KAAK,IAAIkC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,YAAY,CAAC/B,MAAM,EAAEkC,CAAC,EAAE,EAAE;AAC5C;AACR;AACA;AACA;AACA;AACQ,QAAA,IAAIpB,cAAc,CAACiB,YAAY,CAACG,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI;YACF,MAAMnB,QAAQ,GAAG,MAAMC,OAAK,CAACe,YAAY,CAACG,CAAC,CAAC,CAAC,CAAA;YAC7CkJ,UAAU,CAAC/K,IAAI,CAAC,MAAMU,QAAQ,CAACE,IAAI,EAAE,CAAC,CAAA;WACvC,CAAC,OAAOC,KAAK,EAAE;AACd,YAAA,MAAM,IAAIC,KAAK,CAAE,CAAiCD,+BAAAA,EAAAA,KAAM,GAAE,CAAC,CAAA;AAC7D,WAAA;AACF,SAAC,MAAM;UACL,IAAI;YACFkK,UAAU,CAAC/K,IAAI,CAAC,MAAMO,QAAQ,CAACmB,YAAY,CAACG,CAAC,CAAC,CAAC,CAAC,CAAA;WACjD,CAAC,OAAOhB,KAAK,EAAE;AACd,YAAA,MAAM,IAAIC,KAAK,CAAE,CAAA,mDAAA,CAAoD,CAAC,CAAA;AACxE,WAAA;AACF,SAAA;AACF,OAAA;AACA,MAAA,MAAMwK,SAAS,GAAG,IAAIrJ,IAAI,CAAC8I,UAAU,EAAE;AAAEQ,QAAAA,aAAa,EAAE,KAAA;AAAM,OAAC,CAAC,CAAA;AAChE,MAAA,MAAMC,WAAW,GAAGF,SAAS,CAAC5I,IAAI,CAAC8E,GAAG,CAAEvD,CAAC,IAAKA,CAAC,CAAC9E,EAAE,CAAC,CAAA;MACnD,MAAMuH,WAAW,GAAG,EAAE,CAAA;MACtB,MAAM6C,YAAY,GAAG,EAAE,CAAA;MACvB,IAAI9C,UAAU,GAAG,CAAC,CAAA;AAClB,MAAA,MAAM/C,QAAQ,GAAGtB,MAAM,CAACqJ,MAAM,CAACH,SAAS,CAAC5I,IAAI,EAAE2I,UAAU,EAAED,IAAI,EAAE,MAAM,CAAC,CAAA;AACxE;AACA,MAAA,MAAM7E,IAAI,GAAG7C,QAAQ,CAAC0E,GAAG,CAACsD,MAAM,CAAA;AAChC,MAAA,MAAMxH,cAAc,GAAGT,iBAAiB,CAACC,QAAQ,CAAC,CAAA;MAClD,IAAIiI,aAAa,GAAG,EAAE,CAAA;MACtBC,KAAK,CAACf,IAAI,EAAE,MAAM,EAAE,CAAC9G,IAAI,EAAEiG,GAAG,EAAE6B,MAAM,KAAK;QACzC,MAAM9M,KAAK,GAAGgF,IAAI,CAAC8F,KAAK,CAAC9K,KAAK,CAACpC,UAAU,CAAC,CAAA;AAC1C,QAAA,IAAI,CAACoC,KAAK,IAAK,SAAS,IAAI8M,MAAM,IAAI,CAACnB,aAAa,CAAC/H,QAAQ,CAACkJ,MAAM,CAACjC,OAAO,CAAE,EAAE,OAAA;AAChF,QAAA,IAAIkC,YAAY,GAAG/M,KAAK,CAAC2F,KAAK,CAAA;QAC9B,IAAIqH,UAAU,GAAGhN,KAAK,CAAC2F,KAAK,GAAG3F,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAA;AAC9C;AACA;AACA;AACA,QAAA,IAAIZ,KAAK,CAAC,CAAC,CAAC,KAAKH,SAAS,EAAE;AAC1BkN,UAAAA,YAAY,EAAE,CAAA;AAChB,SAAA;QACA,MAAME,WAAW,GAAG,EAAE,CAAA;AACtB;QACA,IAAIF,YAAY,KAAK,CAAC,EAAE;AACtB;UACAE,WAAW,CAAChM,IAAI,CAAC;AACf2J,YAAAA,IAAI,EAAE,MAAM;YACZE,KAAK,EAAE9F,IAAI,CAAC8F,KAAK,CAAC7G,KAAK,CAAC,CAAC,EAAE8I,YAAY,CAAA;AACzC,WAAC,CAAC,CAAA;AACJ,SAAA;QAEA,MAAM,CAACxN,OAAO,EAAEC,WAAW,CAAC,GAAGH,aAAa,CAACW,KAAK,CAAC,CAAA;AACnD4M,QAAAA,aAAa,GAAGrN,OAAO,CAAA;;AAEvB;AACA,QAAA,KAAK,MAAM2N,QAAQ,IAAI3N,OAAO,EAAE;UAC9B,IAAI,CAACkN,WAAW,CAAC7I,QAAQ,CAACsJ,QAAQ,CAAC9M,EAAE,CAAC,EAAE,OAAA;AAC1C,SAAA;QACA,MAAM,CAAC+M,SAAS,EAAEC,aAAa,CAAC,GAAG7F,WAAW,CAC5C5C,QAAQ,EACR6C,IAAI,EACJjI,OAAO,EACPqM,MAAM,EACNlE,UAAU,EACVC,WAAW,EACXlF,OAAO,EACPjD,WAAW,EACX2F,cACF,CAAC,CAAA;AACDqF,QAAAA,YAAY,CAAC9C,UAAU,CAAC,GAAGyF,SAAS,CAAA;;AAEpC;AACAxF,QAAAA,WAAW,CAAC1G,IAAI,CAAC,CAAE,CAAE2K,EAAAA,MAAO,CAAGlE,CAAAA,EAAAA,UAAW,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC,CAAA;QAChDA,UAAU,GAAGA,UAAU,GAAG,CAAC,CAAA;AAE3BuF,QAAAA,WAAW,CAAChM,IAAI,CAACmM,aAAa,CAAC,CAAA;;AAE/B;AACA,QAAA,IAAIJ,UAAU,GAAGhI,IAAI,CAAC8F,KAAK,CAAClK,MAAM,EAAE;UAClCqM,WAAW,CAAChM,IAAI,CAAC;AACf2J,YAAAA,IAAI,EAAE,MAAM;AACZE,YAAAA,KAAK,EAAE9F,IAAI,CAAC8F,KAAK,CAAC7G,KAAK,CAAC+I,UAAU,CAAA;AACpC,WAAC,CAAC,CAAA;AACJ,SAAA;;AAEA;AACA;AACAF,QAAAA,MAAM,CAAC/H,QAAQ,GAAG,CAChB,GAAG+H,MAAM,CAAC/H,QAAQ,CAACd,KAAK,CAAC,CAAC,EAAEgH,GAAG,CAAC,EAChC,GAAGgC,WAAW,EACd,GAAGH,MAAM,CAAC/H,QAAQ,CAACd,KAAK,CAACgH,GAAG,GAAG,CAAC,CAAC,CAClC,CAAA;AACH,OAAC,CAAC,CAAA;AAEF,MAAA,IAAIkB,MAAM,EAAE;AACV,QAAA,IAAIA,MAAM,CAACvL,MAAM,KAAK,CAAC,IAAIuL,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC7CxH,UAAAA,QAAQ,CAACkC,WAAW,CAAC4F,WAAW,CAAC,CAAA;AACnC,SAAC,MAAM;UACL,MAAMY,SAAS,GAAGd,SAAS,CAAC5I,IAAI,CAC7BwG,MAAM,CAAEjF,CAAC,IAAKiH,MAAM,CAAC1D,GAAG,CAAEvD,CAAC,IAAKA,CAAC,CAAC5E,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAACsD,QAAQ,CAACsB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAChFuD,GAAG,CAAEvD,CAAC,IAAKA,CAAC,CAAC9E,EAAE,CAAC,CAChBkN,MAAM,CAACV,aAAa,CAACnE,GAAG,CAAEvD,CAAC,IAAKA,CAAC,CAAC9E,EAAE,CAAC,CAAC,CAAA;AAEzCuE,UAAAA,QAAQ,CAACkC,WAAW,CAACwG,SAAS,CAAC,CAAA;AACjC,SAAA;AACF,OAAA;AAEA,MAAA,IACE1I,QAAQ,CAACc,QAAQ,CAACmB,MAAM,CAAChG,MAAM,IAAI,CAAC,KACnC,CAAC6B,OAAO,CAAC8K,oBAAoB,IAAI,CAAA,CAAAxB,qBAAA,GAAAtJ,OAAO,CAAC+K,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtBzB,qBAAA,CAAwBnL,MAAM,IAAG,CAAC,CAAC,EACrE;AACA,QAAA,MAAMsJ,UAAU,GAAGH,aAAa,CAACpF,QAAQ,CAAC,CAAA;QAC1C,IAAI8I,aAAa,GAAG,KAAK,CAAA;QAEzB,MAAMC,SAAS,GAAG,EAAE,CAAA;AACpBxD,QAAAA,UAAU,CAACnF,QAAQ,CAChBoF,MAAM,CAAEnF,IAAI,IAAA;AAAA,UAAA,IAAAoF,gBAAA,CAAA;AAAA,UAAA,OAAA,CAAAA,gBAAA,GAAKpF,IAAI,CAACqD,UAAU,cAAA+B,gBAAA,GAAfA,gBAAA,CAAiBC,SAAS,KAA1BD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA4BxG,QAAQ,CAAC,WAAW,CAAC,CAAA;AAAA,SAAA,CAAC,CACnE+E,OAAO,CAAE3D,IAAI,IAAK;UACjB,MAAMhH,OAAO,GAAGgH,IAAI,CAACqD,UAAU,CAACjI,EAAE,CAACL,KAAK,CAAC,GAAG,CAAC,CAACkE,KAAK,CAAC,CAAC,CAAC,CAAClB,IAAI,CAAC,GAAG,CAAC,CAAA;AAChE2K,UAAAA,SAAS,CAAC1P,OAAO,CAAC,GAAAkD,QAAA,CAAA,EAAA,EAAQ8D,IAAI,CAAE,CAAA;AAChC0I,UAAAA,SAAS,CAAC1P,OAAO,CAAC,CAACqK,UAAU,GAAG;YAAEjI,EAAE,EAAE,YAAY,GAAGpC,OAAAA;WAAS,CAAA;AAChE,SAAC,CAAC,CAAA;;AAEJ;QACA6O,KAAK,CAACf,IAAI,EAAE,SAAS,EAAE,CAAC9G,IAAI,EAAEiG,GAAG,EAAE6B,MAAM,KAAK;UAAA,IAAAa,sBAAA,EAAAC,iBAAA,CAAA;AAC5C;AACA,UAAA,IACE,CAAAD,CAAAA,sBAAA,GAAAlL,OAAO,CAAC+K,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtBG,sBAAA,CAAwB/M,MAAM,IAAG,CAAC,IAAAgN,CAAAA,iBAAA,GAClC5I,IAAI,CAACqD,UAAU,KAAA,IAAA,IAAA,CAAAuF,iBAAA,GAAfA,iBAAA,CAAiBxN,EAAE,aAAnBwN,iBAAA,CAAqB5J,QAAQ,EAAE,CAAC1C,UAAU,CAAC,WAAW,CAAC,EACvD;AACA;AACA,YAAA,MAAM,GAAG,GAAGuM,QAAQ,CAAC,GAAG7I,IAAI,CAACqD,UAAU,CAACjI,EAAE,CAAC4D,QAAQ,EAAE,CAACjE,KAAK,CAAC,IAAI,CAAC,CAAA;AACjE,YAAA,MAAMoI,UAAU,GAAG0F,QAAQ,CAACC,GAAG,EAAE,CAAA;;AAEjC;AACA,YAAA,MAAMC,aAAa,GAAG;AACpBnD,cAAAA,IAAI,EAAE,SAAS;AACfC,cAAAA,OAAO,EAAE,KAAK;AACdxC,cAAAA,UAAU,EAAE;gBACVgC,SAAS,EAAE5H,OAAO,CAAC+K,cAAc;gBACjCpN,EAAE,EAAG,cAAayN,QAAQ,CAAC9K,IAAI,CAAC,IAAI,CAAE,CAAA,EAAA,EAAIoF,UAAW,CAAA,CAAA;eACtD;AACDpD,cAAAA,QAAQ,EAAE8I,QAAQ,CAACpF,GAAG,CAAEzK,OAAO,IAAK;AAClC,gBAAA,MAAMgQ,QAAQ,GAAGN,SAAS,CAAC1P,OAAO,CAAC,CAAA;gBACnCgQ,QAAQ,CAAC3F,UAAU,GAAG;AACpB4F,kBAAAA,KAAK,EAAE,cAAc;AACrB7N,kBAAAA,EAAE,EAAG,CAAA,QAAA,EAAUpC,OAAQ,CAAA,EAAA,EAAImK,UAAW,CAAA,CAAA;iBACvC,CAAA;AACD,gBAAA,OAAO6F,QAAQ,CAAA;eAChB,CAAA;aACF,CAAA;AACDlB,YAAAA,MAAM,CAAC/H,QAAQ,CAAC9D,IAAI,CAAC8M,aAAa,CAAC,CAAA;AACrC,WAAA;;AAEA;UACA,IACE,CAACtL,OAAO,CAAC8K,oBAAoB,KAC5BvI,IAAI,CAAC6F,OAAO,KAAK,GAAG,IAAI7F,IAAI,CAAC6F,OAAO,KAAK,KAAK,CAAC,IAChD7F,IAAI,CAACD,QAAQ,CAACnE,MAAM,IAAI,CAAC,IACzBoE,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC6F,IAAI,KAAK,MAAM,IAChC5F,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC+F,KAAK,KAAK,QAAQ,EACnC;AACAgC,YAAAA,MAAM,CAAC/H,QAAQ,CAACkG,GAAG,CAAC,GAAGf,UAAU,CAAA;AACjCuD,YAAAA,aAAa,GAAG,IAAI,CAAA;AACtB,WAAA;AACF,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,CAAChL,OAAO,CAAC8K,oBAAoB,IAAI,CAACE,aAAa,EAAE;AACnD3B,UAAAA,IAAI,CAAC/G,QAAQ,CAAC9D,IAAI,CAACiJ,UAAU,CAAC,CAAA;AAChC,SAAA;AACF,OAAA;AAEA,MAAA,IAAIQ,eAAe,CAAA;MACnBmC,KAAK,CAACf,IAAI,EAAE,SAAS,EAAE,CAAC9G,IAAI,EAAEW,KAAK,EAAEmH,MAAM,KAAK;QAC9C,IAAI9H,IAAI,CAAC6F,OAAO,KAAK,SAAS,IAAI7F,IAAI,CAACqD,UAAU,CAACoD,aAAa,EAAE;AAC/Df,UAAAA,eAAe,GAAG1F,IAAI,CAAA;UACtB8H,MAAM,CAAC/H,QAAQ,CAACmJ,MAAM,CAACvI,KAAK,EAAE,CAAC,CAAC,CAAA;AAClC,SAAA;AACF,OAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA,MAAA,IAAI6B,IAAI,KAAK,MAAM,IAAIhE,MAAM,CAACC,IAAI,CAAC+G,YAAY,CAAC,CAAC5J,MAAM,GAAG,CAAC,EAAE;AAC3D;QACA,IAAIuN,OAAO,GAAG,EAAE,CAAA;QAChB,IAAIxI,KAAK,GAAG,CAAC,CAAA;AACbkH,QAAAA,KAAK,CAACf,IAAI,EAAE,SAAS,EAAG9G,IAAI,IAAK;AAC/B,UAAA,IAAIA,IAAI,CAAC6F,OAAO,KAAK,KAAK,IAAI7F,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC6F,IAAI,KAAK,SAAS,EAAE;AACjE,YAAA,IAAIwD,QAAQ,GAAGpJ,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC/B,YAAA,IAAIqJ,QAAQ,CAACvD,OAAO,KAAK,GAAG,EAAE;;cAE5B,MAAM;gBAAEM,IAAI;AAAE/K,gBAAAA,EAAAA;eAAI,GAAGgO,QAAQ,CAAC/F,UAAU,CAAA;AACxC,cAAA,IAAI8C,IAAI,CAACvH,QAAQ,CAAC,IAAI,CAAC,IAAIxD,EAAE,CAACwD,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC/C,MAAMsH,KAAK,GAAGC,IAAI,CAACpL,KAAK,CAAC,GAAG,CAAC,CAAC+N,GAAG,EAAE,CAAA;gBACnCK,OAAO,CAAClN,IAAI,CAAC;kBACX2J,IAAI,EAAEO,IAAI,CAACvH,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,UAAU;AACrDsH,kBAAAA,KAAAA;AACF,iBAAC,CAAC,CAAA;AACF;AACAkD,gBAAAA,QAAQ,CAAC/F,UAAU,CAAC8C,IAAI,GAAI,CAAA,iBAAA,EAAmBxF,KAAM,CAAC,CAAA,CAAA;AACtDyI,gBAAAA,QAAQ,CAAC/F,UAAU,CAACjI,EAAE,GAAI,CAAA,mBAAA,EAAqBuF,KAAM,CAAC,CAAA,CAAA;AACtD;AACAyI,gBAAAA,QAAQ,CAACrJ,QAAQ,CAAC,CAAC,CAAC,CAAC+F,KAAK,GAAGnF,KAAK,CAAC3B,QAAQ,EAAE,CAAA;AAC7C2B,gBAAAA,KAAK,IAAI,CAAC,CAAA;AACZ,eAAA;AACF,aAAA;AACF,WAAA;AACF,SAAC,CAAC,CAAA;AACF;QACA,MAAM0I,kBAAkB,GAAG9D,kBAAkB,CAACC,YAAY,EAAE2D,OAAO,EAAEzD,eAAe,CAAC,CAAA;AACrFoB,QAAAA,IAAI,CAAC/G,QAAQ,CAAC9D,IAAI,CAACoN,kBAAkB,CAAC,CAAA;AACxC,OAAC,MAAM;QACL,IAAI3D,eAAe,EAAEoB,IAAI,CAAC/G,QAAQ,CAAC9D,IAAI,CAACyJ,eAAe,CAAC,CAAA;AAC1D,OAAA;KACD,CAAA;GACF,CAAA;AACH;;AC1RA,SAAS4D,cAAcA,GAAG;AACxB,EAAA,OAAO,IAAI,CAACC,GAAG,CAAC3N,MAAM,CAAA;AACxB,CAAA;AACA,SAAS4N,eAAeA,CAACC,OAAO,GAAG,CAAC,EAAE;EACpC,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,IAAI,CAACH,cAAc,EAAE,EAAE;AACnD,IAAA,OAAO,IAAI,CAAA;AACb,GAAC,MAAM;AACL,IAAA,MAAM,CAAC3K,IAAI,EAAElB,OAAO,CAAC,GAAG,IAAI,CAAC8L,GAAG,CAACE,OAAO,GAAG,CAAC,CAAC,CAAA;IAC7C,MAAMC,KAAK,GAAG,IAAI,IAAI,CAACC,WAAW,CAACC,IAAI,CAACC,KAAK,CAAClL,IAAI,CAAC,EAAEiL,IAAI,CAACC,KAAK,CAACpM,OAAO,CAAC,CAAC,CAAA;AACzEiM,IAAAA,KAAK,CAACH,GAAG,GAAG,IAAI,CAACA,GAAG,CAACtK,KAAK,CAAC,CAAC,EAAEwK,OAAO,CAAC,CAAA;AACtC,IAAA,OAAOC,KAAK,CAAA;AACd,GAAA;AACF,CAAA;AACA,SAASI,IAAIA,CAACC,MAAM,GAAG,CAAC,EAAE;EACxB,OAAO,IAAI,CAACP,eAAe,CAAC,IAAI,CAACF,cAAc,EAAE,GAAGS,MAAM,CAAC,CAAA;AAC7D,CAAA;AACA,SAASC,mBAAmBA,GAAG;EAC7B,OAAO,IAAI,CAACR,eAAe,CAAC,IAAI,CAACF,cAAc,EAAE,CAAC,CAAA;AACpD,CAAA;AACA,SAASW,IAAIA,GAAG;EACd,IAAI,CAACV,GAAG,CAACtN,IAAI,CAAC,CAAC2N,IAAI,CAACM,SAAS,CAAC,IAAI,CAACvL,IAAI,CAAC,EAAEiL,IAAI,CAACM,SAAS,CAAC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACzE,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;;;;ACtBA,MAAMC,SAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAClC,MAAMC,OAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC/C,MAAMC,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AACzE,MAAMC,YAAY,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACpC,SAASC,qBAAqBA,CAAC/M,OAAO,EAAE;AAC7C,EAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;AAC/B,IAAA,MAAM,IAAIgN,SAAS,CAAC,wBAAwB,CAAC,CAAA;AAC/C,GAAA;EACA,MAAM;IAAEtM,MAAM;IAAEyH,IAAI;IAAE8E,KAAK;IAAErD,IAAI;IAAEsD,MAAM;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,GAAGnN,OAAO,CAAA;EAC9D,IAAIU,MAAM,IAAI,CAACiM,SAAO,CAACxL,QAAQ,CAACT,MAAM,CAAC,EAAE;IACvC,MAAM,IAAIsM,SAAS,CAAE,CAAA,gBAAA,EAAkBtM,MAAO,CAAuBiM,qBAAAA,EAAAA,SAAQ,EAAC,CAAC,CAAA;GAChF,MAAM,IAAIxE,IAAI,IAAI,CAACyE,OAAK,CAACzL,QAAQ,CAACgH,IAAI,CAAC,EAAE;IACxC,MAAM,IAAI6E,SAAS,CAAE,CAAA,cAAA,EAAgB7E,IAAK,CAAuByE,qBAAAA,EAAAA,OAAM,EAAC,CAAC,CAAA;AAC3E,GAAC,MAAM,IAAIK,KAAK,IAAI,CAACJ,MAAM,CAAC1L,QAAQ,CAAC8L,KAAK,CAAC,IAAI,CAAC,WAAW,CAACG,IAAI,CAACH,KAAK,CAAC,EAAE;IACvE,MAAM,IAAID,SAAS,CAAE,CAAA,eAAA,EAAiBC,KAAM,CAAuBJ,qBAAAA,EAAAA,MAAO,EAAC,CAAC,CAAA;GAC7E,MAAM,IAAIjD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AAC3C,IAAA,MAAM,IAAIoD,SAAS,CAAE,4CAA2C,OAAOpD,IAAK,EAAC,CAAC,CAAA;AAChF,GAAC,MAAM,IAAIuD,OAAO,IAAI,CAACL,YAAY,CAAC3L,QAAQ,CAAC,OAAOgM,OAAO,CAAC,EAAE;AAC5D,IAAA,MAAM,IAAIH,SAAS,CAChB,6DAA4D,OAAOG,OAAQ,EAC9E,CAAC,CAAA;AACH,GAAC,MAAM,IAAID,MAAM,IAAI,CAACJ,YAAY,CAAC3L,QAAQ,CAAC,OAAO+L,MAAM,CAAC,EAAE;AAC1D,IAAA,MAAM,IAAIF,SAAS,CAAE,4DAA2D,OAAOE,MAAO,EAAC,CAAC,CAAA;AAClG,GAAA;EACA,IAAI,WAAW,CAACE,IAAI,CAACH,KAAK,CAAC,IAAI9E,IAAI,KAAK,MAAM,EAAE;IAC9C,MAAM,IAAI7I,KAAK,CAAE,CAAA,wDAAA,EAA0D6I,IAAK,CAAG8E,CAAAA,EAAAA,KAAM,EAAC,CAAC,CAAA;AAC7F,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;AACO,SAASI,eAAeA,CAACrN,OAAO,EAAE;AACvC,EAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;AAC/B,IAAA,MAAM,IAAIgN,SAAS,CAAC,6BAA6B,CAAC,CAAA;AACpD,GAAA;EACA,IAAIhN,OAAO,CAACuG,MAAM,EAAE;AAClBwG,IAAAA,qBAAqB,CAAC/M,OAAO,CAACuG,MAAM,CAAC,CAAA;AACvC,GAAC,MAAM,IAAIvG,OAAO,CAACsN,cAAc,IAAI,OAAOtN,OAAO,CAACsN,cAAc,KAAK,QAAQ,EAAE;AAC/E,IAAA,MAAM,IAAIN,SAAS,CAAC,0CAA0C,CAAC,CAAA;AACjE,GAAC,MAAM,IAAIhN,OAAO,CAACuN,SAAS,IAAI,OAAOvN,OAAO,CAACuN,SAAS,KAAK,QAAQ,EAAE;AACrE,IAAA,MAAM,IAAIP,SAAS,CAAC,qCAAqC,CAAC,CAAA;AAC5D,GAAC,MAAM,IAAIhN,OAAO,CAAC+J,aAAa,IAAI,IAAI,IAAI,OAAO/J,OAAO,CAAC+J,aAAa,KAAK,SAAS,EAAE;AACtF,IAAA,MAAM,IAAIiD,SAAS,CAAC,0CAA0C,CAAC,CAAA;AACjE,GAAC,MAAM,IAAIhN,OAAO,CAACwN,MAAM,IAAI,IAAI,IAAI,OAAOxN,OAAO,CAACwN,MAAM,KAAK,SAAS,EAAE;AACxE,IAAA,MAAM,IAAIR,SAAS,CAAC,mCAAmC,CAAC,CAAA;AAC1D,GAAC,MAAM,IAAIhN,OAAO,CAACyN,MAAM,IAAI,IAAI,IAAI,OAAOzN,OAAO,CAACyN,MAAM,KAAK,QAAQ,EAAE;AACvE,IAAA,MAAM,IAAIT,SAAS,CAAC,mCAAmC,CAAC,CAAA;AAC1D,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb;;AC9CA,MAAMU,cAAc,GAAG;AACrBhN,EAAAA,MAAM,EAAE,MAAM;AACdyH,EAAAA,IAAI,EAAE,MAAM;AACZ8E,EAAAA,KAAK,EAAE,KAAK;AACZrD,EAAAA,IAAI,EAAE,OAAA;AACR,CAAC,CAAA;AACD,SAAS5J,OAAOA,CAACA,OAAO,EAAE8L,GAAG,EAAE;EAC7B6B,qBAAQ,CAAC3N,OAAO,CAAC,CAAA;AACjB,EAAA,IAAI8L,GAAG,EAAE;IACP,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;EACAzL,MAAM,CAAC6M,MAAM,CAAC,IAAI,CAAClB,QAAQ,EAAE1M,OAAO,CAAC,CAAA;AACrC,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;ACdO,SAAS6N,MAAMA,CAACC,KAAK,EAAE;AAC5B,EAAA,QAAQA,KAAK;AACX,IAAA,KAAK1Q,SAAS;AACZ,MAAA,OAAO,WAAW,CAAA;AACpB,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,MAAM,CAAA;AACf,IAAA;AACE,MAAA,OAAO0Q,KAAK,CAAC5B,WAAW,CAAC6B,IAAI,CAAA;AACjC,GAAA;AACF,CAAA;AACO,SAASC,UAAUA,CAACF,KAAK,EAAE;AAChC,EAAA,QAAQ,OAAOA,KAAK;AAClB,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO,QAAQ,CAAA;AACjB,IAAA,KAAK,QAAQ;AACX,MAAA,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,OAAO,CAAA;OACf,MAAM,IAAID,MAAM,CAACC,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,cAAc,CAAA;OACtB,MAAM,IAAID,MAAM,CAACC,KAAK,CAAC,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,eAAe,CAAA;AACxB,OAAA;AACF,IAAA;AACE,MAAA,OAAO,WAAW,CAAA;AACtB,GAAA;AACF;;;;;;;;ACzBO,SAASK,UAAUA,CAAChI,KAAK,EAAEiI,KAAK,EAAE;EACvC,IAAIjI,KAAK,CAACkI,MAAM,EAAE;AAChB,IAAA,MAAMnL,KAAK,GAAGkL,KAAK,CAACE,SAAS,CAAC,CAAC;AAAEnG,MAAAA,IAAAA;AAAK,KAAC,KAAKA,IAAI,KAAK,mBAAmB,CAAC,CAAA;AACzE,IAAA,IAAIjF,KAAK,KAAK,CAAC,CAAC,EAAE;MAChBkL,KAAK,CAAC3C,MAAM,CAACvI,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAGiD,KAAK,CAACkI,MAAM,CAAC7M,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,KAAA;AACF,GAAA;EACA2E,KAAK,CAACkI,MAAM,GAAGD,KAAK,CAAA;AACpB,EAAA,OAAOjI,KAAK,CAAA;AACd,CAAA;AACO,SAASoI,WAAWA,CAACpI,KAAK,EAAE;EACjC,OAAOA,KAAK,CAACkI,MAAM,CAAA;AACnB,EAAA,OAAOlI,KAAK,CAAA;AACd;;;;;;;;ACbA,MAAMqI,MAAM,GAAG;AACbC,EAAAA,OAAOA,CAACC,KAAK,EAAEC,KAAK,EAAEC,GAAG,EAAE;IACzB,IAAI,CAACC,IAAI,CAACrQ,IAAI,CAACmQ,KAAK,EAAEC,GAAG,CAAC,CAAA;AAC1B,IAAA,IAAI,IAAI,CAACE,OAAO,CAAC9H,OAAO,CAAC0H,KAAK,CAAC,GAAG,IAAI,CAACI,OAAO,CAAC9H,OAAO,CAAC,IAAI,CAAC0H,KAAK,CAAC,EAAE;AAClE,MAAA,OAAA;AACF,KAAA;IACA,IAAI,CAACK,QAAQ,CAACjD,GAAG,CAAC6C,KAAK,EAAE,GAAGC,GAAG,CAAC,CAAA;GACjC;AACDG,EAAAA,QAAQ,EAAE,IAAI;AACdF,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AACzEJ,EAAAA,KAAK,EAAE,QAAA;AACT,CAAC,CAAA;AACD,KAAK,MAAMA,KAAK,IAAIF,MAAM,CAACM,OAAO,EAAE;AAClCN,EAAAA,MAAM,CAACE,KAAK,CAAC,GAAG,CAACC,KAAK,EAAE,GAAGC,GAAG,KAAKJ,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEC,KAAK,EAAEC,GAAG,CAAC,CAAA;AACtE,CAAA;AACA,IAAI,OAAOpK,OAAO,CAACwK,OAAO,KAAK,UAAU,EAAE;EACzCR,MAAM,CAACO,QAAQ,GAAG,IAAIvK,OAAO,CAACwK,OAAO,CAACC,OAAO,CAACC,MAAM,CAAC,CAAA;AACvD,CAAC,MAAM;EACLV,MAAM,CAACO,QAAQ,GAAGvK,OAAO,CAAA;AAC3B;;AClBA,MAAMoI,KAAK,GAAG,EAAE,CAAA;AAChB,MAAMuC,SAAS,GAAG,EAAE,CAAA;AACpB,MAAMC,SAAS,GAAG,EAAE,CAAA;AACpB,SAASC,gBAAgBA,CAACC,KAAK,EAAEC,QAAQ,EAAE;AACzC,EAAA,QAAQA,QAAQ;AACd,IAAA,KAAK,OAAO;AACV,MAAA,IAAID,KAAK,CAACnR,MAAM,KAAK,CAAC,IAAImR,KAAK,CAACE,KAAK,CAAErJ,KAAK,IAAKgC,IAAI,CAAChC,KAAK,CAAC,KAAK,aAAa,CAAC,EAAE;AAC/E,QAAA,OAAO,kBAAkB,CAAA;AAC3B,OAAC,MAAM;AACL,QAAA,OAAO,mBAAmB,CAAA;AAC5B,OAAA;AACF,IAAA,KAAK,cAAc,CAAA;AACnB,IAAA,KAAK,eAAe;AAClB,MAAA,OAAO,aAAa,CAAA;AACtB,IAAA;AACE,MAAA,OAAO,UAAU,CAAA;AACrB,GAAA;AACF,CAAA;AACA,SAASsJ,SAASA,CAACC,QAAQ,GAAG,EAAE,EAAExO,IAAI,EAAE;AACtC,EAAA,KAAK,MAAMiH,IAAI,IAAIuH,QAAQ,EAAE;IAC3B,IAAI9C,KAAK,CAACzE,IAAI,CAAC,CAACwH,SAAS,CAACzO,IAAI,CAAC,EAAE;AAC/B,MAAA,OAAOuO,SAAS,CAAC7C,KAAK,CAACzE,IAAI,CAAC,CAACyH,UAAU,EAAE1O,IAAI,CAAC,IAAIiH,IAAI,CAAA;AACxD,KAAA;AACF,GAAA;AACF,CAAA;AACO,SAASA,IAAIA,CAACmH,KAAK,EAAE;AAC1B,EAAA,MAAMC,QAAQ,GAAGvB,UAAU,CAACsB,KAAK,CAAC,CAAA;EAClC,IAAIC,QAAQ,KAAK,OAAO,IAAID,KAAK,CAACnR,MAAM,KAAK,CAAC,EAAE;AAC9C,IAAA,OAAOkR,gBAAgB,CAACC,KAAK,EAAEC,QAAQ,CAAC,CAAA;AAC1C,GAAA;EACA,MAAMhS,KAAK,GAAGkS,SAAS,CAACN,SAAS,CAACI,QAAQ,CAAC,EAAED,KAAK,CAAC,CAAA;AACnD,EAAA,OAAO/R,KAAK,IAAI8R,gBAAgB,CAACC,KAAK,EAAEC,QAAQ,CAAC,CAAA;AACnD,CAAA;AACO,SAASM,aAAaA,CAACnP,MAAM,EAAE;EAAE6O,QAAQ;EAAEI,SAAS;AAAEG,EAAAA,OAAO,EAAEC,MAAAA;AAAO,CAAC,EAAE;EAC9E,IAAIH,UAAU,GAAG,EAAE,CAAA;EACnB,IAAIlP,MAAM,IAAI0O,SAAS,EAAE;AACvBQ,IAAAA,UAAU,GAAGR,SAAS,CAAC1O,MAAM,CAAC,CAAA;IAC9B,OAAO0O,SAAS,CAAC1O,MAAM,CAAC,CAAA;IACxB8N,MAAM,CAACwB,KAAK,CACV,QAAQ,EACP,eAAcJ,UAAW,CAAA,qCAAA,EAAuClP,MAAO,CAAA,CAAA,CAC1E,CAAC,CAAA;AACH,GAAA;AACA,EAAA,MAAMuP,MAAM,GAAG;IACbN,SAAS;AACTC,IAAAA,UAAAA;GACD,CAAA;AACDhD,EAAAA,KAAK,CAAClM,MAAM,CAAC,GAAGuP,MAAM,CAAA;AACtB,EAAA,IAAIF,MAAM,EAAE;AACV,IAAA,MAAMG,gBAAgB,GAAGtD,KAAK,CAACmD,MAAM,CAAC,CAAA;AACtC,IAAA,IAAIG,gBAAgB,EAAE;AACpBA,MAAAA,gBAAgB,CAACN,UAAU,CAACpR,IAAI,CAACkC,MAAM,CAAC,CAAA;AAC1C,KAAC,MAAM;AACL,MAAA,IAAI,CAAC0O,SAAS,CAACW,MAAM,CAAC,EAAE;AACtBX,QAAAA,SAAS,CAACW,MAAM,CAAC,GAAG,EAAE,CAAA;AACxB,OAAA;AACAX,MAAAA,SAAS,CAACW,MAAM,CAAC,CAACvR,IAAI,CAACkC,MAAM,CAAC,CAAA;MAC9B8N,MAAM,CAACwB,KAAK,CAAC,QAAQ,EAAG,aAAYtP,MAAO,CAAA,6BAAA,EAA+BqP,MAAO,CAAA,CAAA,CAAE,CAAC,CAAA;AACtF,KAAA;AACF,GAAC,MAAM;AACL,IAAA,MAAML,QAAQ,GAAGP,SAAS,CAACI,QAAQ,CAAC,KAAKJ,SAAS,CAACI,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;AAClEG,IAAAA,QAAQ,CAAClR,IAAI,CAACkC,MAAM,CAAC,CAAA;AACvB,GAAA;AACF,CAAA;AACO,SAASyP,aAAaA,CAAChI,IAAI,EAAE;EAClC,OAAOpH,MAAM,CAACqP,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC1D,KAAK,EAAEzE,IAAI,CAAC,CAAA;AAC1D,CAAA;AACO,SAASoI,gBAAgBA,CAACpI,IAAI,EAAE;EACrC,OAAOyE,KAAK,CAACzE,IAAI,CAAC,CAAA;EAClB,MAAMqI,SAAS,GAAG,CAChB,GAAGzP,MAAM,CAACC,IAAI,CAACmO,SAAS,CAAC,CAACnJ,GAAG,CAAET,GAAG,IAAK4J,SAAS,CAAC5J,GAAG,CAAC,CAAC,EACtD,GAAGxE,MAAM,CAACC,IAAI,CAAC4L,KAAK,CAAC,CAClB5G,GAAG,CAAEmC,IAAI,IAAKyE,KAAK,CAACzE,IAAI,CAAC,CAACyH,UAAU,CAAC,CACrClI,MAAM,CAAEQ,IAAI,IAAKA,IAAI,CAAC/J,MAAM,GAAG,CAAC,CAAC,CACrC,CAAA;AACDqS,EAAAA,SAAS,CAACtK,OAAO,CAAEwJ,QAAQ,IAAK;AAC9B,IAAA,MAAMxM,KAAK,GAAGwM,QAAQ,CAAC1I,OAAO,CAACmB,IAAI,CAAC,CAAA;AACpC,IAAA,IAAIjF,KAAK,GAAG,CAAC,CAAC,EAAE;AACdwM,MAAAA,QAAQ,CAACjE,MAAM,CAACvI,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;AACO,SAASuN,cAAcA,GAAG;AAC/B,EAAA,OAAO1P,MAAM,CAACC,IAAI,CAAC4L,KAAK,CAAC,CAAA;AAC3B,CAAA;AACO,SAAS8D,cAAcA,GAAG;EAC/B,MAAMC,UAAU,GAAI5C,IAAI,KAAM;IAC5BA,IAAI;IACJzL,QAAQ,EAAEsK,KAAK,CAACmB,IAAI,CAAC,CAAC6B,UAAU,CAAC5J,GAAG,CAAC2K,UAAU,CAAA;AACjD,GAAC,CAAC,CAAA;EACF,OAAO;AACL5C,IAAAA,IAAI,EAAE,WAAW;IACjBzL,QAAQ,EAAEvB,MAAM,CAACC,IAAI,CAACmO,SAAS,CAAC,CAACnJ,GAAG,CAAE+H,IAAI,KAAM;MAC9CA,IAAI;MACJzL,QAAQ,EAAE6M,SAAS,CAACpB,IAAI,CAAC,CAAC/H,GAAG,CAAC2K,UAAU,CAAA;AAC1C,KAAC,CAAC,CAAA;GACH,CAAA;AACH,CAAA;AACO,MAAMC,WAAW,GAAG,yCAAyC;;ACpGpE;AACA,SAASC,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAEA,MAAMO,UAAU,CAAC;EACfzF,WAAWA,CAAChL,IAAI,EAAE;AAChB2P,IAAAA,iBAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,CACtC,QAAQ,EACR,OAAO,EACP,cAAc,EACd,eAAe,EACf,WAAW,CACZ,CAAC,CAAA;IACF,IAAI,CAAC3P,IAAI,GAAGA,IAAI,CAAA;AAClB,GAAA;AACA0Q,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,MAAMrC,QAAQ,GAAG,IAAI,CAACrO,IAAI,CAACqO,QAAQ,CAAA;IACnC,IAAIA,QAAQ,IAAI,CAAC,IAAI,CAACsC,cAAc,CAAC1Q,QAAQ,CAACoO,QAAQ,CAAC,EAAE;MACvD,MAAM,IAAIuC,UAAU,CAAE,CAAevC,aAAAA,EAAAA,QAAS,qBAAoB,IAAI,CAACsC,cAAe,CAAA,CAAC,CAAC,CAAA;AAC1F,KAAA;AACF,GAAA;AACAE,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMpC,SAAS,GAAG,IAAI,CAACzO,IAAI,CAACyO,SAAS,CAAA;AACrC,IAAA,IAAIA,SAAS,IAAI,EAAEA,SAAS,YAAYqC,MAAM,IAAI,OAAOrC,SAAS,KAAK,UAAU,CAAC,EAAE;AAClF,MAAA,MAAM,IAAI3C,SAAS,CAAE,iBAAgB,OAAO2C,SAAU,+BAA8B,CAAC,CAAA;AACvF,KAAA;AACF,GAAA;AACAsC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMC,SAAS,GAAG,IAAI,CAAChR,IAAI,CAACgR,SAAS,CAAA;AACrC,IAAA,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;AAC9C,MAAA,MAAM,IAAIlF,SAAS,CAAE,iBAAgB,OAAOkF,SAAU,6BAA4B,CAAC,CAAA;AACrF,KAAA;AACF,GAAA;AACAC,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,MAAMC,kBAAkB,GAAG,IAAI,CAAClR,IAAI,CAACkR,kBAAkB,CAAA;AACvD,IAAA,IAAIA,kBAAkB,IAAI,OAAOA,kBAAkB,KAAK,QAAQ,EAAE;AAChE,MAAA,MAAM,IAAIpF,SAAS,CAChB,0BAAyB,OAAOoF,kBAAmB,4BACtD,CAAC,CAAA;AACH,KAAA;AACF,GAAA;AACAC,EAAAA,yBAAyBA,GAAG;AAC1B,IAAA,MAAMC,iBAAiB,GAAG,IAAI,CAACpR,IAAI,CAACoR,iBAAiB,CAAA;AACrD,IAAA,IAAIA,iBAAiB,IAAI,OAAOA,iBAAiB,KAAK,QAAQ,EAAE;AAC9D,MAAA,MAAM,IAAItF,SAAS,CAAE,yBAAwB,OAAOsF,iBAAkB,mBAAkB,CAAC,CAAA;AAC3F,KAAA;AACF,GAAA;AACAC,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAMxC,MAAM,GAAG,IAAI,CAAC7O,IAAI,CAAC4O,OAAO,CAAA;AAChC,IAAA,IAAIC,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AACxC,MAAA,MAAM,IAAI/C,SAAS,CAAE,eAAc,OAAO+C,MAAO,mBAAkB,CAAC,CAAA;AACtE,KAAA;AACF,GAAA;AACApC,EAAAA,QAAQA,GAAG;AACT,IAAA,IAAI,IAAI,CAACzM,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAACA,IAAI,KAAK,QAAQ,EAAE;MACvD,MAAM,IAAI8L,SAAS,CAAE,CAAA,eAAA,EAAiB,OAAO,IAAI,CAAC9L,IAAK,CAAA,iBAAA,CAAkB,CAAC,CAAA;AAC5E,KAAA;IACA,IAAI,CAAC0Q,gBAAgB,EAAE,CAAA;IACvB,IAAI,CAACG,iBAAiB,EAAE,CAAA;IACxB,IAAI,CAACE,iBAAiB,EAAE,CAAA;IACxB,IAAI,CAACE,0BAA0B,EAAE,CAAA;IACjC,IAAI,CAACE,yBAAyB,EAAE,CAAA;IAChC,IAAI,CAACE,eAAe,EAAE,CAAA;AACxB,GAAA;AACAC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAIN,SAAS,GAAG,IAAI,CAAChR,IAAI,CAACgR,SAAS,CAAA;IACnC,IAAI,CAACA,SAAS,EAAE;AACd,MAAA,OAAO,EAAE,CAAA;AACX,KAAC,MAAM,IAAIA,SAAS,YAAYF,MAAM,EAAE;AACtCE,MAAAA,SAAS,GAAG;AACVO,QAAAA,KAAK,EAAEP,SAAAA;OACR,CAAA;AACH,KAAA;IACA,MAAM;MAAEO,KAAK;AAAEnV,MAAAA,KAAK,GAAG,KAAK;AAAEG,MAAAA,IAAI,GAAG,IAAI;AAAE+R,MAAAA,KAAK,GAAG,IAAA;AAAK,KAAC,GAAG0C,SAAS,CAAA;AACrE,IAAA,MAAMQ,SAAS,GAAIpD,KAAK,IAAM7R,IAAI,GAAG6R,KAAK,CAAC7R,IAAI,EAAE,GAAG6R,KAAM,CAAA;AAC1D,IAAA,MAAMqD,UAAU,GAAGnD,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAC3C,MAAMG,SAAS,GAAIL,KAAK,IACtBoD,SAAS,CAACpD,KAAK,CAAC,CACbhS,KAAK,CAACA,KAAK,CAAC,CACZqV,UAAU,CAAC,CAAEnW,IAAI,IAAKiW,KAAK,CAACrF,IAAI,CAAC5Q,IAAI,CAAC,CAAC,CAAA;IAC5C,OAAO,CAACmT,SAAS,CAAC,CAAA;AACpB,GAAA;AACAiD,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,MAAMC,WAAW,GAAG,EAAE,CAAChI,MAAM,CAAC,IAAI,CAAC3J,IAAI,CAACkR,kBAAkB,IAAI,EAAE,CAAC,CAAA;AACjE,IAAA,OAAOS,WAAW,CAAC7M,GAAG,CAAC,CAAC;MAAE8M,KAAK;MAAEvV,KAAK;AAAE8K,MAAAA,KAAAA;AAAM,KAAC,KAAK;AAClDyK,MAAAA,KAAK,GAAG,EAAE,CAACjI,MAAM,CAACiI,KAAK,CAAC,CAAA;AACxB,MAAA,QAAQvV,KAAK;AACX,QAAA,KAAK,KAAK,CAAA;AACV,QAAA,KAAK,MAAM;UACT,OAAQ+R,KAAK,IAAKwD,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,IAAI1D,KAAK,KAAK,CAACjH,KAAK,IAAIA,KAAK,CAACiH,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,QAAA,KAAK,MAAM;UACT,OAAQ1D,KAAK,IAAK,CAACwD,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,IAAI1D,KAAK,KAAK,CAACjH,KAAK,IAAIA,KAAK,CAACiH,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1F,QAAA,KAAK,OAAO,CAAA;AACZ,QAAA;UACE,OAAQ1D,KAAK,IAAKwD,KAAK,CAACtD,KAAK,CAAEwD,IAAI,IAAKA,IAAI,IAAI1D,KAAK,KAAK,CAACjH,KAAK,IAAIA,KAAK,CAACiH,KAAK,CAAC0D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;AACAC,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMC,UAAU,GAAG,IAAI,CAAChS,IAAI,CAACoR,iBAAiB,CAAA;IAC9C,OAAO,CAACY,UAAU,GAAG,EAAE,GAAG,CAAE5D,KAAK,IAAKA,KAAK,CAACE,KAAK,CAAErJ,KAAK,IAAKgC,IAAI,CAAChC,KAAK,CAAC,KAAK+M,UAAU,CAAC,CAAC,CAAA;AAC3F,GAAA;AACAC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,IAAI,CAACjS,IAAI,CAACyO,SAAS,YAAYqC,MAAM,EAAE;AACzC,MAAA,OAAO,CAAC,IAAI,CAAC9Q,IAAI,CAACyO,SAAS,CAACvC,IAAI,CAACgG,IAAI,CAAC,IAAI,CAAClS,IAAI,CAACyO,SAAS,CAAC,CAAC,CAAA;AAC7D,KAAC,MAAM,IAAI,IAAI,CAACzO,IAAI,CAACyO,SAAS,EAAE;AAC9B,MAAA,OAAO,CAAC,IAAI,CAACzO,IAAI,CAACyO,SAAS,CAAC,CAAA;AAC9B,KAAC,MAAM;AACL,MAAA,OAAO,EAAE,CAAA;AACX,KAAA;AACF,GAAA;AACA0D,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAMC,UAAU,GAAG,CACjB,GAAG,IAAI,CAACH,cAAc,EAAE,EACxB,GAAG,IAAI,CAACX,cAAc,EAAE,EACxB,GAAG,IAAI,CAACI,uBAAuB,EAAE,EACjC,GAAG,IAAI,CAACK,sBAAsB,EAAE,CACjC,CAAA;AACD,IAAA,IAAIK,UAAU,CAACnV,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAA,OAAO,MAAM,IAAI,CAAA;AACnB,KAAC,MAAM,IAAImV,UAAU,CAACnV,MAAM,KAAK,CAAC,EAAE;MAClC,OAAOmV,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,KAAC,MAAM;AACL,MAAA,OAAQhE,KAAK,IAAKgE,UAAU,CAAC9D,KAAK,CAAEG,SAAS,IAAKA,SAAS,CAACL,KAAK,CAAC,CAAC,CAAA;AACrE,KAAA;AACF,GAAA;AACAiE,EAAAA,WAAWA,GAAG;AACZ,IAAA,IAAI,IAAI,CAACrS,IAAI,CAACqO,QAAQ,EAAE;AACtB,MAAA,OAAO,IAAI,CAACrO,IAAI,CAACqO,QAAQ,CAAA;KAC1B,MAAM,IAAI,IAAI,CAACrO,IAAI,CAACyO,SAAS,YAAYqC,MAAM,EAAE;AAChD,MAAA,OAAO,QAAQ,CAAA;AACjB,KAAC,MAAM,IAAI,IAAI,CAAC9Q,IAAI,CAACgR,SAAS,EAAE;AAC9B,MAAA,OAAO,QAAQ,CAAA;AACjB,KAAC,MAAM,IAAI,IAAI,CAAChR,IAAI,CAACoR,iBAAiB,EAAE;AACtC,MAAA,OAAO,OAAO,CAAA;AAChB,KAAC,MAAM;AACL,MAAA,OAAO,WAAW,CAAA;AACpB,KAAA;AACF,GAAA;EACA,IAAI/C,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACgE,WAAW,EAAE,CAAA;AAC3B,GAAA;EACA,IAAI5D,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAAC0D,oBAAoB,EAAE,CAAA;AACpC,GAAA;EACA,IAAIvD,OAAOA,GAAG;AACZ,IAAA,OAAO,IAAI,CAAC5O,IAAI,CAAC4O,OAAO,CAAA;AAC1B,GAAA;AACF,CAAA;AACA,MAAM0D,UAAU,CAAC;EACftH,WAAWA,CAACuH,MAAM,EAAE;AAAEC,IAAAA,KAAAA;GAAO,GAAG,EAAE,EAAE;IAClC,IAAI,CAACD,MAAM,GAAGA,MAAM,CAAA;IACpB,IAAI,CAACC,KAAK,GAAGA,KAAK,CAAA;AACpB,GAAA;AACA/F,EAAAA,QAAQA,GAAG;AACT,IAAA,MAAM8F,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAC1B,IAAA,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;AAChC,MAAA,MAAM,IAAIzG,SAAS,CAAE,cAAa,OAAOyG,MAAO,qBAAoB,CAAC,CAAA;AACvE,KAAA;AACF,GAAA;AACF,CAAA;AACA,MAAME,YAAY,CAAC;AACjBzH,EAAAA,WAAWA,CAACxL,MAAM,EAAEkT,OAAO,GAAG,EAAE,EAAE;IAChC,IAAI,CAAClT,MAAM,GAAGA,MAAM,CAAA;IACpB,IAAIkT,OAAO,CAACC,SAAS,EAAE;MACrB,IAAI,CAACC,UAAU,GAAG,IAAInC,UAAU,CAACiC,OAAO,CAACC,SAAS,CAAC,CAAA;AACrD,KAAA;IACA,IAAID,OAAO,CAACxH,KAAK,EAAE;MACjB,IAAI,CAAC2H,UAAU,GAAG,IAAIP,UAAU,CAACI,OAAO,CAACxH,KAAK,EAAE;AAC9CsH,QAAAA,KAAK,EAAE,KAAA;AACT,OAAC,CAAC,CAAA;AACJ,KAAA;IACA,IAAIE,OAAO,CAACI,UAAU,EAAE;MACtB,IAAI,CAACC,eAAe,GAAG,IAAIT,UAAU,CAACI,OAAO,CAACI,UAAU,EAAE;AACxDN,QAAAA,KAAK,EAAE,IAAA;AACT,OAAC,CAAC,CAAA;AACJ,KAAA;AACF,GAAA;AACAQ,EAAAA,cAAcA,GAAG;AACf,IAAA,MAAMxT,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAC1B,IAAA,IAAI,CAACkQ,WAAW,CAACxD,IAAI,CAAC1M,MAAM,CAAC,EAAE;AAC7B,MAAA,MAAM,IAAIsM,SAAS,CAAE,CAAmBtM,iBAAAA,EAAAA,MAAO,kCAAiC,CAAC,CAAA;AACnF,KAAA;AACF,GAAA;AACAiN,EAAAA,QAAQA,GAAG;IACT,IAAI,CAACuG,cAAc,EAAE,CAAA;IACrB,IAAI,IAAI,CAACJ,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACnG,QAAQ,EAAE,CAAA;AAC5B,KAAA;IACA,IAAI,IAAI,CAACoG,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACpG,QAAQ,EAAE,CAAA;AAC5B,KAAA;IACA,IAAI,IAAI,CAACsG,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAACtG,QAAQ,EAAE,CAAA;AACjC,KAAA;AACF,GAAA;AACF;;;;;;;;;AC9NA,SAASwG,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AAEA,MAAMwD,IAAI,GAAG,CAAC,CAAA;AACd,MAAMC,SAAS,GAAG,CAAC,CAAA;AACnB,MAAMC,IAAI,GAAG,CAAC,CAAA;AACd,MAAMC,MAAI,GAAG,CAAC,CAAA;AACd,MAAMC,UAAU,GAAG;AACjBC,EAAAA,OAAO,EAAE,IAAI;AACb,EAAA,iBAAiB,EAAE,IAAI;AACvB,EAAA,kBAAkB,EAAE,IAAI;AACxB,EAAA,mBAAmB,EAAE,IAAI;AACzBC,EAAAA,IAAI,EAAE,IAAI;AACVrZ,EAAAA,IAAI,EAAE,IAAI;AACVsZ,EAAAA,SAAS,EAAE,IAAI;AACfrZ,EAAAA,OAAO,EAAE,IAAI;AACbsZ,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,QAAQ,EAAE,IAAI;AACdpP,EAAAA,KAAK,EAAE,IAAI;AACX,EAAA,kBAAkB,EAAE,IAAI;AACxB,EAAA,oBAAoB,EAAE,IAAI;AAC1BqP,EAAAA,KAAK,EAAE,IAAI;AACXxZ,EAAAA,MAAM,EAAE,IAAI;AACZyZ,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,UAAU,EAAE,IAAI;AAChB9P,EAAAA,GAAG,EAAE,IAAI;AACT+P,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,QAAQ,EAAE,IAAI;AACd,EAAA,kBAAkB,EAAE,IAAI;AACxBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,sBAAsB,EAAE,IAAI;AAC5BC,EAAAA,IAAI,EAAE,IAAI;AACV,EAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZ,EAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,IAAI,EAAE,IAAI;AACVC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,OAAO,EAAE,IAAI;AACb,EAAA,iBAAiB,EAAE,iBAAiB;AACpC,EAAA,cAAc,EAAE,SAAS;AACzB,EAAA,gBAAgB,EAAE,YAAY;AAC9B,EAAA,qBAAqB,EAAE,kBAAkB;AACzCC,EAAAA,YAAY,EAAE,QAAA;AAChB,CAAC,CAAA;AACD,MAAMC,YAAU,GAAG;AACjB3T,EAAAA,MAAM,EAAEsR,SAAS;AACjBsC,EAAAA,KAAK,EAAEtC,SAAS;AAChB,EAAA,mBAAmB,EAAEA,SAAS;AAC9BuC,EAAAA,QAAQ,EAAEvC,SAAS;AACnBwC,EAAAA,QAAQ,EAAExC,SAAS;AACnB,EAAA,kBAAkB,EAAEA,SAAS;AAC7ByC,EAAAA,WAAW,EAAEzC,SAAS;AACtB0C,EAAAA,OAAO,EAAE1C,SAAS;AAClB2C,EAAAA,QAAQ,EAAE3C,SAAS;AACnB4C,EAAAA,MAAM,EAAE5C,SAAS;AACjB,EAAA,oBAAoB,EAAEA,SAAS;AAC/B,EAAA,oBAAoB,EAAEA,SAAS;AAC/B6C,EAAAA,KAAK,EAAE7C,SAAS;AAChB8C,EAAAA,IAAI,EAAE9C,SAAS;AACf+C,EAAAA,WAAW,EAAE/C,SAAS;AACtBgD,EAAAA,WAAW,EAAEhD,SAAS;AACtBiD,EAAAA,QAAQ,EAAEjD,SAAS;AACnBkD,EAAAA,SAAS,EAAElD,SAAS;AACpB,EAAA,iBAAiB,EAAEA,SAAS;AAC5BmD,EAAAA,SAAS,EAAEnD,SAAS;AACpBoD,EAAAA,QAAQ,EAAEpD,SAAS;AACnB,EAAA,iBAAiB,EAAEA,SAAS;AAC5BqD,EAAAA,SAAS,EAAErD,SAAS;AACpB,EAAA,eAAe,EAAEA,SAAS;AAC1B,EAAA,gBAAgB,EAAEA,SAAS;AAC3BsD,EAAAA,UAAU,EAAEtD,SAAS;AACrBuD,EAAAA,QAAQ,EAAEtD,IAAI;AACd,EAAA,gBAAgB,EAAEA,IAAI;AACtBuD,EAAAA,SAAS,EAAEvD,IAAI;AACf,EAAA,YAAY,EAAEA,IAAI;AAClB7N,EAAAA,MAAM,EAAE6N,IAAI;AACZ,EAAA,eAAe,EAAEA,IAAI;AACrBwD,EAAAA,SAAS,EAAExD,IAAI;AACf3M,EAAAA,IAAI,EAAE4M,MAAI;AACVwD,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,MAAM,EAAE,QAAQ;AAChB7a,EAAAA,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB8a,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,mBAAmB,EAAE,QAAQ;AAC7BC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,kBAAkB,EAAE,QAAQ;AAC5BC,EAAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,eAAe,EAAE,QAAQ;AACzBC,EAAAA,SAAS,EAAE,QAAQ;AACnB,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,cAAc,EAAE,QAAQ;AACxB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,mBAAmB,EAAE,QAAQ;AAC7B,EAAA,kBAAkB,EAAE,QAAQ;AAC5B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,uBAAuB,EAAE,QAAQ;AACjCC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,GAAG,EAAE,QAAQ;AACbC,EAAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC7B7D,EAAAA,KAAK,EAAE,QAAQ;AACf,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,6BAA6B,EAAE,QAAQ;AACvC8D,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,IAAI,EAAE,QAAQ;AACdtd,EAAAA,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC3Bud,EAAAA,YAAY,EAAE,QAAQ;AACtBC,EAAAA,OAAO,EAAE,QAAQ;AACjB5b,EAAAA,OAAO,EAAE,QAAQ;AACjB6b,EAAAA,MAAM,EAAE,QAAQ;AAChBvd,EAAAA,IAAI,EAAE,QAAQ;AACdkQ,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACzC,EAAA,oBAAoB,EAAE,QAAQ;AAC9B,EAAA,0BAA0B,EAAE,QAAQ;AACpC,EAAA,gBAAgB,EAAE,QAAQ;AAC1BhQ,EAAAA,IAAI,EAAE,QAAQ;AACd,EAAA,YAAY,EAAE,QAAQ;AACtB,EAAA,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnC,EAAA,YAAY,EAAE,QAAQ;AACtBsd,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,SAAS,EAAE,QAAQ;AACnB,EAAA,iBAAiB,EAAE,QAAQ;AAC3BC,EAAAA,UAAU,EAAE,QAAQ;AACpB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,gBAAgB,EAAE,QAAQ;AAC1BC,EAAAA,KAAK,EAAE,QAAQ;AACfxd,EAAAA,OAAO,EAAE,QAAQ;AACjBuH,EAAAA,MAAM,EAAE,QAAQ;AAChBkW,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAChCC,EAAAA,KAAK,EAAE,QAAQ;AACf,EAAA,aAAa,EAAE,QAAQ;AACvBxa,EAAAA,GAAG,EAAE,QAAQ;AACbya,EAAAA,OAAO,EAAE,QAAQ;AACjB1d,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5B,EAAA,cAAc,EAAE,QAAQ;AACxB,EAAA,oBAAoB,EAAE,QAAQ;AAC9B,EAAA,aAAa,EAAE,QAAA;AACjB,CAAC,CAAA;AACD,SAAS2d,WAAWA,CAACvM,IAAI,EAAEwM,oBAAoB,EAAE;EAC/C,IAAI,OAAOxM,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,KAAKA,IAAI,CAACyM,OAAO,IAAIzM,IAAI,CAAC0M,KAAK,IAAI1M,IAAI,CAACtK,MAAM,CAAC,EAAE;IAC5F,IAAIsK,IAAI,CAAC2M,KAAK,IAAI3M,IAAI,CAAC4M,KAAK,IAAI5M,IAAI,CAAC6M,MAAM,EAAE;MAC3C7M,IAAI,GAAGyG,eAAa,CAClB;QACEqG,MAAM,EAAE9M,IAAI,CAAC2M,KAAK,IAAI3M,IAAI,CAAC4M,KAAK,IAAI5M,IAAI,CAAC6M,MAAAA;OAC1C,EACD7M,IACF,CAAC,CAAA;MACD,OAAOA,IAAI,CAAC2M,KAAK,CAAA;MACjB,OAAO3M,IAAI,CAAC4M,KAAK,CAAA;MACjB,OAAO5M,IAAI,CAAC6M,MAAM,CAAA;AACpB,KAAA;AACA,IAAA,OAAO7M,IAAI,CAAA;AACb,GAAC,MAAM,IAAI,CAACwM,oBAAoB,EAAE;AAChC,IAAA,OAAOnd,SAAS,CAAA;AAClB,GAAC,MAAM,IAAI,OAAO2Q,IAAI,KAAK,QAAQ,EAAE;IACnC,OAAO+M,OAAS,CAAC/M,IAAI,CAAC,CAAA;AACxB,GAAA;AACF,CAAA;AACA,SAASgN,eAAeA,CAACC,QAAQ,EAAET,oBAAoB,EAAE;EACvD,IAAIS,QAAQ,YAAY/M,KAAK,EAAE;AAC7B,IAAA,MAAMgN,KAAK,GAAGD,QAAQ,CAAChV,GAAG,CAAE+H,IAAI,IAAKuM,WAAW,CAACvM,IAAI,EAAEwM,oBAAoB,CAAC,CAAC,CAAC7S,MAAM,CAACwT,OAAO,CAAC,CAAA;AAC7F,IAAA,OAAOD,KAAK,CAAC9c,MAAM,GAAG8c,KAAK,GAAG7d,SAAS,CAAA;AACzC,GAAA;AACF,CAAA;AACA,SAAS+d,gBAAgBA,CAACC,SAAS,EAAEb,oBAAoB,EAAE;EACzD,IAAIa,SAAS,CAAC5L,KAAK,CAAEhT,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,CAAC,EAAE;AACvD,IAAA,OAAO4e,SAAS,CAAA;AAClB,GAAC,MAAM,IAAI,CAACb,oBAAoB,IAAIa,SAAS,CAACrI,IAAI,CAAEvW,IAAI,IAAK6e,KAAK,CAACC,QAAQ,CAAC9e,IAAI,CAAC,CAAC,CAAC,EAAE;AACnF,IAAA,OAAOY,SAAS,CAAA;AAClB,GAAC,MAAM;IACL,OAAOge,SAAS,CAACpV,GAAG,CAAExJ,IAAI,IAAK8e,QAAQ,CAAC9e,IAAI,CAAC,CAAC,CAAA;AAChD,GAAA;AACF,CAAA;AACA,SAAS+e,WAAWA,CAACC,IAAI,EAAEjB,oBAAoB,EAAE;EAC/C,MAAMkB,EAAE,GAAG,YAAY,CAAA;EACvB,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;AAC7C,IAAA,OAAOpe,SAAS,CAAA;GACjB,MAAM,IAAIoe,IAAI,CAACC,EAAE,CAAC,YAAYxN,KAAK,IAAIuN,IAAI,CAACC,EAAE,CAAC,CAACjM,KAAK,CAAEhT,IAAI,IAAKA,IAAI,YAAYyR,KAAK,CAAC,EAAE;IACvF,MAAMyN,KAAK,GAAGF,IAAI,CAACC,EAAE,CAAC,CACnBzV,GAAG,CAAEoV,SAAS,IAAKD,gBAAgB,CAACC,SAAS,EAAEb,oBAAoB,CAAC,CAAC,CACrE7S,MAAM,CAACwT,OAAO,CAAC,CAAA;AAClB,IAAA,OAAOQ,KAAK,CAACvd,MAAM,GACfqW,eAAa,CACXA,eAAa,CAAC,EAAE,EAAEgH,IAAI,CAAC,EACvB,EAAE,EACF;AACE,MAAA,YAAY,EAAEE,KAAAA;KAElB,CAAC,GACDte,SAAS,CAAA;AACf,GAAC,MAAM,IAAIoe,IAAI,YAAYvN,KAAK,IAAIuN,IAAI,CAAChM,KAAK,CAAEhT,IAAI,IAAKA,IAAI,CAACif,EAAE,CAAC,YAAYxN,KAAK,CAAC,EAAE;IACnF,MAAMyN,KAAK,GAAGF,IAAI,CACfxV,GAAG,CAAEoV,SAAS,IAAKD,gBAAgB,CAACC,SAAS,CAACK,EAAE,CAAC,EAAElB,oBAAoB,CAAC,CAAC,CACzE7S,MAAM,CAACwT,OAAO,CAAC,CAAA;IAClB,OAAOQ,KAAK,CAACvd,MAAM,GACf;AACE,MAAA,YAAY,EAAEud,KAAAA;AAChB,KAAC,GACDte,SAAS,CAAA;GACd,MAAM,IAAIoe,IAAI,CAACC,EAAE,CAAC,YAAYxN,KAAK,EAAE;IACpC,MAAMmN,SAAS,GAAGD,gBAAgB,CAACK,IAAI,CAACC,EAAE,CAAC,EAAElB,oBAAoB,CAAC,CAAA;AAClE,IAAA,OACEa,SAAS,IAAI;MACX,YAAY,EAAE,CAACA,SAAS,CAAA;KACzB,CAAA;GAEJ,MAAM,IAAI,SAAS,IAAII,IAAI,IAAI,KAAK,IAAIA,IAAI,EAAE;AAC7C,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;AACF,CAAA;AACA,SAASG,WAAWA,CAACxT,IAAI,EAAEoS,oBAAoB,EAAE;EAC/CpS,IAAI,GAAGyT,YAAY,CAAC,UAAU,EAAEzT,IAAI,EAAEoS,oBAAoB,CAAC,CAAA;AAC3D,EAAA,IAAIvF,UAAU,CAAC7M,IAAI,CAAC,KAAK,IAAI,EAAE;AAC7B,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;AACA,EAAA,IAAIoS,oBAAoB,EAAE;IACxB,IAAIpS,IAAI,IAAI6M,UAAU,EAAE;MACtB,OAAOA,UAAU,CAAC7M,IAAI,CAAC,CAAA;KACxB,MAAM,IAAIA,IAAI,CAACvJ,WAAW,EAAE,KAAKuJ,IAAI,EAAE;MACtC,OAAOwT,WAAW,CAACxT,IAAI,CAACvJ,WAAW,EAAE,EAAE2b,oBAAoB,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;AACA,EAAA,OAAOnd,SAAS,CAAA;AAClB,CAAA;AACA,SAASwe,YAAYA,CAAClY,SAAS,EAAE2E,KAAK,EAAEkS,oBAAoB,EAAE;EAC5D,MAAMsB,SAAS,GAAG,EAAE,CAAChR,MAAM,CAACqM,YAAU,CAACxT,SAAS,CAAC,CAAC,CAAA;EAClD,QAAQwT,YAAU,CAACxT,SAAS,CAAC;AAC3B,IAAA,KAAKkR,IAAI;AACP,MAAA,OAAO0F,WAAW,CAACjS,KAAK,EAAEkS,oBAAoB,CAAC,CAAA;AACjD,IAAA,KAAK1F,SAAS;AACZ,MAAA,OAAOkG,eAAe,CAAC1S,KAAK,EAAEkS,oBAAoB,CAAC,CAAA;AACrD,IAAA,KAAKzF,IAAI;AACP,MAAA,OAAOyG,WAAW,CAAClT,KAAK,EAAEkS,oBAAoB,CAAC,CAAA;AACjD,IAAA,KAAKxF,MAAI;AACP,MAAA,OAAO4G,WAAW,CAACtT,KAAK,EAAEkS,oBAAoB,CAAC,CAAA;AACnD,GAAA;AACA,EAAA,IAAIA,oBAAoB,EAAE;IACxB,IACE,OAAOlS,KAAK,KAAK,QAAQ,IACzBwT,SAAS,CAAC1a,QAAQ,CAAC,QAAQ,CAAC,IAC5B,CAAC0a,SAAS,CAAC1a,QAAQ,CAAC,QAAQ,CAAC,IAC7B,CAACka,KAAK,CAAC,CAAChT,KAAK,CAAC,EACd;MACA,OAAOyT,UAAU,CAACzT,KAAK,CAAC,CAAA;KACzB,MAAM,IACL,OAAOA,KAAK,KAAK,QAAQ,IACzBwT,SAAS,CAAC1a,QAAQ,CAAC,QAAQ,CAAC,IAC5B,CAAC0a,SAAS,CAAC1a,QAAQ,CAAC,QAAQ,CAAC,EAC7B;AACA,MAAA,OAAOkH,KAAK,CAAC9G,QAAQ,EAAE,CAAA;AACzB,KAAC,MAAM,IAAI0M,KAAK,CAACC,OAAO,CAAC7F,KAAK,CAAC,IAAIA,KAAK,CAAClK,MAAM,EAAE;MAC/C,OAAOyd,YAAY,CAAClY,SAAS,EAAE2E,KAAK,CAAC,CAAC,CAAC,EAAEkS,oBAAoB,CAAC,CAAA;AAChE,KAAA;AACF,GAAA;AACA,EAAA,IAAIsB,SAAS,CAAC1a,QAAQ,CAAC,OAAOkH,KAAK,CAAC,EAAE;AACpC,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;AACF,CAAA;AACA,SAAS0T,QAAQA,CAAC7a,IAAI,EAAEqZ,oBAAoB,GAAG,IAAI,EAAE;AACnD,EAAA,OAAOrZ,IAAI,CAAC8E,GAAG,CAAC,UAAUG,KAAK,EAAE;IAC/B,MAAM6V,KAAK,GAAG,EAAE,CAAA;AAChB,IAAA,KAAK,MAAMC,KAAK,IAAI9V,KAAK,EAAE;AACzB,MAAA,MAAM+V,UAAU,GAAGN,YAAY,CAACK,KAAK,EAAE9V,KAAK,CAAC8V,KAAK,CAAC,EAAE1B,oBAAoB,CAAC,CAAA;MAC1E,IAAI2B,UAAU,KAAK9e,SAAS,EAAE;AAC5B4e,QAAAA,KAAK,CAACC,KAAK,CAAC,GAAGC,UAAU,CAAA;AAC3B,OAAA;AACF,KAAA;AACA,IAAA,OAAOF,KAAK,CAAA;AACd,GAAC,CAAC,CAAA;AACJ;;;;;;;AC7VA,SAAS7H,SAAOA,CAAC9N,CAAC,EAAEiL,CAAC,EAAE;AACrB,EAAA,IAAIF,CAAC,GAAGrQ,MAAM,CAACC,IAAI,CAACqF,CAAC,CAAC,CAAA;EACtB,IAAItF,MAAM,CAACqT,qBAAqB,EAAE;AAChC,IAAA,IAAIC,CAAC,GAAGtT,MAAM,CAACqT,qBAAqB,CAAC/N,CAAC,CAAC,CAAA;IACvCiL,CAAC,KACE+C,CAAC,GAAGA,CAAC,CAAC3M,MAAM,CAAC,UAAU4J,CAAC,EAAE;MACzB,OAAOvQ,MAAM,CAACuT,wBAAwB,CAACjO,CAAC,EAAEiL,CAAC,CAAC,CAACL,UAAU,CAAA;AACzD,KAAC,CAAC,CAAC,EACHG,CAAC,CAAC5S,IAAI,CAAC+V,KAAK,CAACnD,CAAC,EAAEiD,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,EAAA,OAAOjD,CAAC,CAAA;AACV,CAAA;AACA,SAASoD,eAAaA,CAACnO,CAAC,EAAE;AACxB,EAAA,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmD,SAAS,CAACtW,MAAM,EAAEmT,CAAC,EAAE,EAAE;AACzC,IAAA,IAAIF,CAAC,GAAG,IAAI,IAAIqD,SAAS,CAACnD,CAAC,CAAC,GAAGmD,SAAS,CAACnD,CAAC,CAAC,GAAG,EAAE,CAAA;AAChDA,IAAAA,CAAC,GAAG,CAAC,GACD6C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;MAC1CT,iBAAe,CAACxK,CAAC,EAAEiL,CAAC,EAAEF,CAAC,CAACE,CAAC,CAAC,CAAC,CAAA;AAC7B,KAAC,CAAC,GACFvQ,MAAM,CAAC2T,yBAAyB,GAChC3T,MAAM,CAAC4T,gBAAgB,CAACtO,CAAC,EAAEtF,MAAM,CAAC2T,yBAAyB,CAACtD,CAAC,CAAC,CAAC,GAC/D+C,SAAO,CAACpT,MAAM,CAACqQ,CAAC,CAAC,CAAC,CAAClL,OAAO,CAAC,UAAUoL,CAAC,EAAE;AACtCvQ,MAAAA,MAAM,CAACiQ,cAAc,CAAC3K,CAAC,EAAEiL,CAAC,EAAEvQ,MAAM,CAACuT,wBAAwB,CAAClD,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAA;AACpE,KAAC,CAAC,CAAA;AACR,GAAA;AACA,EAAA,OAAOjL,CAAC,CAAA;AACV,CAAA;AACA,SAASwK,iBAAeA,CAACC,GAAG,EAAEvL,GAAG,EAAE8C,KAAK,EAAE;AACxC9C,EAAAA,GAAG,GAAGwL,gBAAc,CAACxL,GAAG,CAAC,CAAA;EACzB,IAAIA,GAAG,IAAIuL,GAAG,EAAE;AACd/P,IAAAA,MAAM,CAACiQ,cAAc,CAACF,GAAG,EAAEvL,GAAG,EAAE;AAC9B8C,MAAAA,KAAK,EAAEA,KAAK;AACZ4I,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE,IAAA;AACZ,KAAC,CAAC,CAAA;AACJ,GAAC,MAAM;AACLL,IAAAA,GAAG,CAACvL,GAAG,CAAC,GAAG8C,KAAK,CAAA;AAClB,GAAA;AACA,EAAA,OAAOyI,GAAG,CAAA;AACZ,CAAA;AACA,SAASC,gBAAcA,CAACK,CAAC,EAAE;AACzB,EAAA,IAAI/Q,CAAC,GAAGgR,cAAY,CAACD,CAAC,EAAE,QAAQ,CAAC,CAAA;EACjC,OAAO,QAAQ,IAAI,OAAO/Q,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,EAAE,CAAA;AAC1C,CAAA;AACA,SAASgR,cAAYA,CAACD,CAAC,EAAEE,CAAC,EAAE;EAC1B,IAAI,QAAQ,IAAI,OAAOF,CAAC,IAAI,CAACA,CAAC,EAAE,OAAOA,CAAC,CAAA;AACxC,EAAA,IAAI/K,CAAC,GAAG+K,CAAC,CAACG,MAAM,CAACC,WAAW,CAAC,CAAA;AAC7B,EAAA,IAAI,KAAK,CAAC,KAAKnL,CAAC,EAAE;IAChB,IAAIhG,CAAC,GAAGgG,CAAC,CAACiK,IAAI,CAACc,CAAC,EAAEE,CAAC,IAAI,SAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAI,OAAOjR,CAAC,EAAE,OAAOA,CAAC,CAAA;AAClC,IAAA,MAAM,IAAI2M,SAAS,CAAC,8CAA8C,CAAC,CAAA;AACrE,GAAA;EACA,OAAO,CAAC,QAAQ,KAAKsE,CAAC,GAAGG,MAAM,GAAGC,MAAM,EAAEN,CAAC,CAAC,CAAA;AAC9C,CAAA;AACO,SAAS+K,UAAUA,CAACpZ,IAAI,EAAE;AAC/B,EAAA,IAAIkL,KAAK,CAACC,OAAO,CAACnL,IAAI,CAAC,EAAE;AACvB,IAAA,OAAOA,IAAI,CAACiD,GAAG,CAACmW,UAAU,CAAC,CAAA;AAC7B,GAAA;AACApZ,EAAAA,IAAI,GAAGyR,eAAa,CAAC,EAAE,EAAEzR,IAAI,CAAC,CAAA;EAC9B,IAAI,OAAO,IAAIA,IAAI,EAAE;AACnBA,IAAAA,IAAI,CAAC,aAAa,CAAC,GAAGA,IAAI,CAACyS,KAAK,CAAA;IAChC,OAAOzS,IAAI,CAACyS,KAAK,CAAA;AACnB,GAAA;EACA,IAAIzS,IAAI,CAACoF,IAAI,KAAK,MAAM,IAAI,SAAS,IAAIpF,IAAI,EAAE;IAC7CA,IAAI,CAACoF,IAAI,GAAG,UAAU,CAAA;AACxB,GAAA;AACA,EAAA,OAAOpF,IAAI,CAAA;AACb,CAAA;AACO,SAASqZ,YAAYA,CAACrZ,IAAI,EAAE;AACjC,EAAA,IAAIkL,KAAK,CAACC,OAAO,CAACnL,IAAI,CAAC,EAAE;AACvB,IAAA,OAAOA,IAAI,CAACiD,GAAG,CAACoW,YAAY,CAAC,CAAA;AAC/B,GAAA;AACArZ,EAAAA,IAAI,GAAGyR,eAAa,CAAC,EAAE,EAAEzR,IAAI,CAAC,CAAA;EAC9B,IAAI,aAAa,IAAIA,IAAI,EAAE;AACzBA,IAAAA,IAAI,CAACyS,KAAK,GAAGzS,IAAI,CAAC,aAAa,CAAC,CAAA;IAChC,OAAOA,IAAI,CAAC,aAAa,CAAC,CAAA;AAC5B,GAAA;AACA,EAAA,IAAIA,IAAI,CAACoF,IAAI,KAAK,UAAU,EAAE;IAC5BpF,IAAI,CAACoF,IAAI,GAAG,MAAM,CAAA;AACpB,GAAA;AACA,EAAA,OAAOpF,IAAI,CAAA;AACb;;AClFO,SAASsZ,QAAQA,CAAChU,KAAK,EAAEiU,IAAI,GAAG,IAAIC,GAAG,EAAE,EAAE;EAChD,IACE,OAAOlU,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACbA,KAAK,CAAC6D,WAAW,KAAKnL,MAAM,IAAIsH,KAAK,CAAC6D,WAAW,KAAK+B,KAAM,EAC7D;AACA,IAAA,OAAO5F,KAAK,CAAA;AACd,GAAA;AACA,EAAA,IAAIiU,IAAI,CAACE,GAAG,CAACnU,KAAK,CAAC,EAAE;AACnB,IAAA,MAAM,IAAI2E,SAAS,CAAC,wCAAwC,CAAC,CAAA;AAC/D,GAAA;AACAsP,EAAAA,IAAI,CAAC5a,GAAG,CAAC2G,KAAK,CAAC,CAAA;AACf,EAAA,IAAIoU,IAAI,CAAA;AACR,EAAA,IAAIpU,KAAK,CAAC6D,WAAW,KAAK+B,KAAK,EAAE;AAC/BwO,IAAAA,IAAI,GAAGpU,KAAK,CAACrC,GAAG,CAAEqC,KAAK,IAAKgU,QAAQ,CAAChU,KAAK,EAAEiU,IAAI,CAAC,CAAC,CAAA;AACpD,GAAC,MAAM;IACL,MAAMrM,MAAM,GAAG,EAAE,CAAA;AACjB,IAAA,KAAK,MAAM1K,GAAG,IAAI8C,KAAK,EAAE;AACvB4H,MAAAA,MAAM,CAAC1K,GAAG,CAAC,GAAG8W,QAAQ,CAAChU,KAAK,CAAC9C,GAAG,CAAC,EAAE+W,IAAI,CAAC,CAAA;AAC1C,KAAA;AACAG,IAAAA,IAAI,GAAGxM,MAAM,CAAA;AACf,GAAA;AACAqM,EAAAA,IAAI,CAACI,MAAM,CAACrU,KAAK,CAAC,CAAA;AAClB,EAAA,OAAOoU,IAAI,CAAA;AACb;;;;;;;;;ACtBA,IAAIE,WAAW,GAAG,EAAE,CAAA;AACpB,IAAcC,KAAA,GAAGD,WAAW,CAAA;AAE5B,SAASE,IAAIA,CAACpa,CAAC,EAAE;AACb,EAAA,OAAOA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACzB,CAAA;AAEA,SAASqa,SAASA,CAACra,CAAC,EAAE;AACtB;AACI,EAAA,IAAKA,CAAC,GAAG,CAAC,KAAM,GAAG,IAAI,CAACA,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAAA;AAClC,IAAA,OAAOpB,IAAI,CAAC0b,KAAK,CAACta,CAAC,CAAC,CAAA;AAC5B,GAAK,MAAM;AACH,IAAA,OAAOpB,IAAI,CAAC2b,KAAK,CAACva,CAAC,CAAC,CAAA;AACvB,GAAA;AACL,CAAA;AAEA,SAASwa,sBAAsBA,CAACC,SAAS,EAAEC,QAAQ,EAAE;AACjD,EAAA,IAAI,CAACA,QAAQ,CAACC,QAAQ,EAAE;AACpB,IAAA,EAAEF,SAAS,CAAA;AACd,GAAA;AACD,EAAA,MAAMG,UAAU,GAAGF,QAAQ,CAACC,QAAQ,GAAG,CAAC,GAAG,CAAC/b,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAAA;EAClE,MAAMK,UAAU,GAAGlc,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,GAAG,CAAC,CAAA;EAE7C,MAAMM,SAAS,GAAGL,QAAQ,CAACM,eAAe,GAAGpc,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEH,QAAQ,CAACM,eAAe,CAAC,GAAGpc,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAAA;AAC3G,EAAA,MAAMQ,WAAW,GAAGP,QAAQ,CAACM,eAAe,GAAGpc,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEH,QAAQ,CAACM,eAAe,GAAG,CAAC,CAAC,GAAGpc,IAAI,CAACic,GAAG,CAAC,CAAC,EAAEJ,SAAS,GAAG,CAAC,CAAC,CAAA;AAErH,EAAA,OAAO,UAASS,CAAC,EAAEC,IAAI,EAAE;AACrB,IAAA,IAAI,CAACA,IAAI,EAAEA,IAAI,GAAG,EAAE,CAAA;IAEpB,IAAInb,CAAC,GAAG,CAACkb,CAAC,CAAA;IAEV,IAAIC,IAAI,CAACC,YAAY,EAAE;AACnB,MAAA,IAAI,CAACnM,MAAM,CAACoM,QAAQ,CAACrb,CAAC,CAAC,EAAE;AACrB,QAAA,MAAM,IAAIuK,SAAS,CAAC,iCAAiC,CAAC,CAAA;AACzD,OAAA;AAEDvK,MAAAA,CAAC,GAAGoa,IAAI,CAACpa,CAAC,CAAC,GAAGpB,IAAI,CAAC0b,KAAK,CAAC1b,IAAI,CAAC0c,GAAG,CAACtb,CAAC,CAAC,CAAC,CAAA;AACrC,MAAA,IAAIA,CAAC,GAAG4a,UAAU,IAAI5a,CAAC,GAAG8a,UAAU,EAAE;AAClC,QAAA,MAAM,IAAIvQ,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACvD,OAAA;AAED,MAAA,OAAOvK,CAAC,CAAA;AACX,KAAA;IAED,IAAI,CAAC4Y,KAAK,CAAC5Y,CAAC,CAAC,IAAImb,IAAI,CAACI,KAAK,EAAE;AACzBvb,MAAAA,CAAC,GAAGqa,SAAS,CAACra,CAAC,CAAC,CAAA;AAEhB,MAAA,IAAIA,CAAC,GAAG4a,UAAU,EAAE5a,CAAC,GAAG4a,UAAU,CAAA;AAClC,MAAA,IAAI5a,CAAC,GAAG8a,UAAU,EAAE9a,CAAC,GAAG8a,UAAU,CAAA;AAClC,MAAA,OAAO9a,CAAC,CAAA;AACX,KAAA;IAED,IAAI,CAACiP,MAAM,CAACoM,QAAQ,CAACrb,CAAC,CAAC,IAAIA,CAAC,KAAK,CAAC,EAAE;AAChC,MAAA,OAAO,CAAC,CAAA;AACX,KAAA;AAEDA,IAAAA,CAAC,GAAGoa,IAAI,CAACpa,CAAC,CAAC,GAAGpB,IAAI,CAAC0b,KAAK,CAAC1b,IAAI,CAAC0c,GAAG,CAACtb,CAAC,CAAC,CAAC,CAAA;IACrCA,CAAC,GAAGA,CAAC,GAAG+a,SAAS,CAAA;IAEjB,IAAI,CAACL,QAAQ,CAACC,QAAQ,IAAI3a,CAAC,IAAIib,WAAW,EAAE;MACxC,OAAOjb,CAAC,GAAG+a,SAAS,CAAA;AAChC,KAAS,MAAM,IAAIL,QAAQ,CAACC,QAAQ,EAAE;MAC1B,IAAI3a,CAAC,GAAG,CAAC,EAAE;AACTA,QAAAA,CAAC,IAAI+a,SAAS,CAAA;AAC5B,OAAa,MAAM,IAAI/a,CAAC,KAAK,CAAC,CAAC,EAAE;AAAA;AACnB,QAAA,OAAO,CAAC,CAAA;AACT,OAAA;AACJ,KAAA;AAED,IAAA,OAAOA,CAAC,CAAA;GACX,CAAA;AACL,CAAA;AAEAka,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AAC9B,EAAA,OAAOvf,SAAS,CAAA;AACpB,CAAC,CAAA;AAEDuf,WAAW,CAAC,SAAS,CAAC,GAAG,UAAUsB,GAAG,EAAE;EACpC,OAAO,CAAC,CAACA,GAAG,CAAA;AAChB,CAAC,CAAA;AAEDtB,WAAW,CAAC,MAAM,CAAC,GAAGM,sBAAsB,CAAC,CAAC,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACpET,WAAW,CAAC,OAAO,CAAC,GAAGM,sBAAsB,CAAC,CAAC,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAEpET,WAAW,CAAC,OAAO,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACtET,WAAW,CAAC,gBAAgB,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAE9ET,WAAW,CAAC,MAAM,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACrET,WAAW,CAAC,eAAe,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAE7ET,WAAW,CAAC,WAAW,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAK;AAAEK,EAAAA,eAAe,EAAE,EAAA;AAAE,CAAE,CAAC,CAAA;AAC/Fd,WAAW,CAAC,oBAAoB,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAI;AAAEK,EAAAA,eAAe,EAAE,EAAA;AAAE,CAAE,CAAC,CAAA;AAEvGd,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAUgB,CAAC,EAAE;EACjC,MAAMlb,CAAC,GAAG,CAACkb,CAAC,CAAA;AAEZ,EAAA,IAAI,CAACjM,MAAM,CAACoM,QAAQ,CAACrb,CAAC,CAAC,EAAE;AACrB,IAAA,MAAM,IAAIuK,SAAS,CAAC,+CAA+C,CAAC,CAAA;AACvE,GAAA;AAED,EAAA,OAAOvK,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDka,WAAW,CAAC,qBAAqB,CAAC,GAAG,UAAUgB,CAAC,EAAE;EAC9C,MAAMlb,CAAC,GAAG,CAACkb,CAAC,CAAA;AAEZ,EAAA,IAAItC,KAAK,CAAC5Y,CAAC,CAAC,EAAE;AACV,IAAA,MAAM,IAAIuK,SAAS,CAAC,iBAAiB,CAAC,CAAA;AACzC,GAAA;AAED,EAAA,OAAOvK,CAAC,CAAA;AACZ,CAAC,CAAA;;AAED;AACAka,WAAW,CAAC,OAAO,CAAC,GAAGA,WAAW,CAAC,QAAQ,CAAC,CAAA;AAC5CA,WAAW,CAAC,oBAAoB,CAAC,GAAGA,WAAW,CAAC,qBAAqB,CAAC,CAAA;AAEtEA,WAAW,CAAC,WAAW,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AAC1C,EAAA,IAAI,CAACA,IAAI,EAAEA,IAAI,GAAG,EAAE,CAAA;AAEpB,EAAA,IAAIA,IAAI,CAACM,sBAAsB,IAAIP,CAAC,KAAK,IAAI,EAAE;AAC3C,IAAA,OAAO,EAAE,CAAA;AACZ,GAAA;EAED,OAAOlM,MAAM,CAACkM,CAAC,CAAC,CAAA;AACpB,CAAC,CAAA;AAEDhB,WAAW,CAAC,YAAY,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AAC3C,EAAA,MAAMnb,CAAC,GAAGgP,MAAM,CAACkM,CAAC,CAAC,CAAA;EACnB,IAAInY,CAAC,GAAGpI,SAAS,CAAA;AACjB,EAAA,KAAK,IAAIiD,CAAC,GAAG,CAAC,EAAE,CAACmF,CAAC,GAAG/C,CAAC,CAAC0b,WAAW,CAAC9d,CAAC,CAAC,MAAMjD,SAAS,EAAE,EAAEiD,CAAC,EAAE;IACvD,IAAImF,CAAC,GAAG,GAAG,EAAE;AACT,MAAA,MAAM,IAAIwH,SAAS,CAAC,oCAAoC,CAAC,CAAA;AAC5D,KAAA;AACJ,GAAA;AAED,EAAA,OAAOvK,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDka,WAAW,CAAC,WAAW,CAAC,GAAG,UAAUgB,CAAC,EAAE;AACpC,EAAA,MAAMS,CAAC,GAAG3M,MAAM,CAACkM,CAAC,CAAC,CAAA;AACnB,EAAA,MAAMpV,CAAC,GAAG6V,CAAC,CAACjgB,MAAM,CAAA;EAClB,MAAMkgB,CAAC,GAAG,EAAE,CAAA;EACZ,KAAK,IAAIhe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkI,CAAC,EAAE,EAAElI,CAAC,EAAE;AACxB,IAAA,MAAMmF,CAAC,GAAG4Y,CAAC,CAACE,UAAU,CAACje,CAAC,CAAC,CAAA;AACzB,IAAA,IAAImF,CAAC,GAAG,MAAM,IAAIA,CAAC,GAAG,MAAM,EAAE;MAC1B6Y,CAAC,CAAC7f,IAAI,CAACiT,MAAM,CAAC8M,aAAa,CAAC/Y,CAAC,CAAC,CAAC,CAAA;KAClC,MAAM,IAAI,MAAM,IAAIA,CAAC,IAAIA,CAAC,IAAI,MAAM,EAAE;MACnC6Y,CAAC,CAAC7f,IAAI,CAACiT,MAAM,CAAC8M,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAChD,KAAS,MAAM;AACH,MAAA,IAAIle,CAAC,KAAKkI,CAAC,GAAG,CAAC,EAAE;QACb8V,CAAC,CAAC7f,IAAI,CAACiT,MAAM,CAAC8M,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AACpD,OAAa,MAAM;QACH,MAAM/X,CAAC,GAAG4X,CAAC,CAACE,UAAU,CAACje,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7B,QAAA,IAAI,MAAM,IAAImG,CAAC,IAAIA,CAAC,IAAI,MAAM,EAAE;AAC5B,UAAA,MAAMgY,CAAC,GAAGhZ,CAAC,GAAG,KAAK,CAAA;AACnB,UAAA,MAAMiZ,CAAC,GAAGjY,CAAC,GAAG,KAAK,CAAA;UACnB6X,CAAC,CAAC7f,IAAI,CAACiT,MAAM,CAAC8M,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAIC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAA;AAC1D,UAAA,EAAEpe,CAAC,CAAA;AACvB,SAAiB,MAAM;UACHge,CAAC,CAAC7f,IAAI,CAACiT,MAAM,CAAC8M,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AACvC,SAAA;AACJ,OAAA;AACJ,KAAA;AACJ,GAAA;AAED,EAAA,OAAOF,CAAC,CAAC/d,IAAI,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC,CAAA;AAEDqc,WAAW,CAAC,MAAM,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AACrC,EAAA,IAAI,EAAED,CAAC,YAAYe,IAAI,CAAC,EAAE;AACtB,IAAA,MAAM,IAAI1R,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACvD,GAAA;AACD,EAAA,IAAIqO,KAAK,CAACsC,CAAC,CAAC,EAAE;AACV,IAAA,OAAOvgB,SAAS,CAAA;AACnB,GAAA;AAED,EAAA,OAAOugB,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDhB,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AACvC,EAAA,IAAI,EAAED,CAAC,YAAY3L,MAAM,CAAC,EAAE;AACxB2L,IAAAA,CAAC,GAAG,IAAI3L,MAAM,CAAC2L,CAAC,CAAC,CAAA;AACpB,GAAA;AAED,EAAA,OAAOA,CAAC,CAAA;AACZ,CAAC;;;;EC1LDgB,MAAA,CAAAC,OAAA,CAAAC,KAAA,GAAuB,SAASA,KAAKA,CAACpR,MAAM,EAAEzJ,MAAM,EAAE;AACpD,IAAA,MAAMhD,IAAI,GAAGD,MAAM,CAAC+d,mBAAmB,CAAC9a,MAAM,CAAC,CAAA;AAC/C,IAAA,KAAK,IAAI3D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC7C,MAAM,EAAE,EAAEkC,CAAC,EAAE;MACpCU,MAAM,CAACiQ,cAAc,CAACvD,MAAM,EAAEzM,IAAI,CAACX,CAAC,CAAC,EAAEU,MAAM,CAACuT,wBAAwB,CAACtQ,MAAM,EAAEhD,IAAI,CAACX,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,KAAA;GACF,CAAA;EAEDse,MAAA,CAAAC,OAAA,CAAAG,aAAA,GAA+BxN,MAAM,CAAC,SAAS,CAAC,CAAA;EAChDoN,MAAA,CAAAC,OAAA,CAAAI,UAAA,GAA4BzN,MAAM,CAAC,MAAM,CAAC,CAAA;AAE1CoN,EAAAA,MAAgC,CAAAC,OAAA,CAAAK,cAAA,GAAA,UAAUC,IAAI,EAAE;AAC9C,IAAA,OAAOA,IAAI,CAACP,MAAM,CAACC,OAAO,CAACG,aAAa,CAAC,CAAA;GAC1C,CAAA;AAEDJ,EAAAA,MAAgC,CAAAC,OAAA,CAAAO,cAAA,GAAA,UAAUC,OAAO,EAAE;AACjD,IAAA,OAAOA,OAAO,CAACT,MAAM,CAACC,OAAO,CAACI,UAAU,CAAC,CAAA;GAC1C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}