{ "version": 3, "sources": ["../../../../../../../../source/febe/ui/src/scripts/components/Notification.ts", "../../../../../../../../source/febe/ui/src/scripts/components/Code.ts", "../../../../../../../../source/febe/ui/src/scripts/components/HelpHandler.ts", "../../../../../../../../source/febe/ui/src/scripts/components/MitreModal.ts", "../../../../../../../../source/febe/ui/src/scripts/components/BigDropzone.ts", "../../../../../../../../source/febe/ui/src/scripts/components/Section.ts", "../../../../../../../../source/febe/ui/src/scripts/ui.common.ts"], "sourcesContent": ["// import moment from 'moment';\nimport { Hatch, Domifier, SafeString } from \"../classes/Hatch\";\nimport close from \"@icons/close.svg\";\n\nimport Utils, { wait } from \"../classes/Utils\";\nclass NotificationMessage {\n dom: Element;\n count: number;\n props: {\n time: number;\n title: string;\n message: string;\n icon: string;\n type: string;\n dismiss: string;\n timer: number;\n };\n\n constructor(n = {}) {\n this.dom = null;\n this.count = 1;\n this.props = {\n time: new Date().getTime(),\n title: \"Information\",\n message: \"\",\n icon: \"info-square\",\n type: \"\",\n dismiss: \"Dismiss\",\n timer: 15000,\n ...n,\n };\n }\n\n // generates DOM for this notification\n render() {\n this.dom = Domifier(\n Hatch`\n
\n

${this.props.title}

\n

${this.props.message}

\n \n \n
\n `.toString()\n );\n\n return this.dom;\n }\n\n bind() {\n // set click listener on dismiss button\n this.dom.querySelector(\"[data-close-toast]\").addEventListener(\"click\", (e) => {\n e.preventDefault();\n this.remove();\n });\n }\n\n insert() {\n return new Promise((resolve) => {\n wait(100).then(() => {\n this.dom.classList.add(\"in\");\n if (this.props.timer !== 0 || this.props.timer !== null) wait(this.props.timer).then(() => this.remove());\n wait(500).then(() => {\n resolve(null);\n });\n });\n });\n }\n\n increment() {\n this.count += 1;\n if (this.dom) {\n let counter = this.dom.querySelector(\"[data-box-counter]\");\n if (!counter.classList.contains(\"badge\")) counter.classList.add(\"badge\");\n counter.textContent = this.count.toString();\n }\n }\n\n remove() {\n return new Promise((resolve) => {\n if (this.dom) this.dom.classList.remove(\"in\");\n wait(500).then(() => {\n if (this.dom) this.dom.parentElement.removeChild(this.dom);\n this.dom = null;\n resolve(null);\n });\n });\n }\n\n get hash() {\n return Utils.Hash(`${this.props.title}_${this.props.message}`);\n }\n}\n\n/*\n A notification service that pops messages to the DOM.\n */\nexport default class NotificationCenter {\n props: {\n parent: Element;\n };\n notifications: any;\n\n constructor(props = {}) {\n this.props = {\n parent: null,\n ...props,\n };\n this.notifications = [];\n }\n\n notify(props = {}, silent = false) {\n let n = new NotificationMessage(props);\n // this.notifications.push(n);\n\n if (silent !== true) {\n let body = n.render();\n this.parent.appendChild(body);\n n.bind();\n n.insert();\n }\n }\n get parent() {\n return this.props.parent;\n }\n}\n\nexport { NotificationMessage };\n", "import { Hatch, HatchMap } from \"../classes/Hatch.js\";\n\nexport default class Code {\n props: {\n maxLines: number;\n content: string;\n lines: number;\n el: HTMLElement;\n };\n\n constructor(el: HTMLElement) {\n this.props = {\n maxLines: parseInt(el.getAttribute(\"data-code-lines\")),\n content: el.getAttribute(\"data-code-content\"),\n lines: el.getAttribute(\"data-code-content\").split(\"\\n\").length,\n el: el,\n };\n\n let template = `\n ${HatchMap(\n this.props.content.split(\"\\n\"),\n (line: string, index: number) => Hatch`\n
this.props.maxLines ? \"hidden\" : \"\"}\">\n
${index + 1}
\n
${Hatch`${line}`}
\n
\n `\n )}\n `;\n this.props.el.innerHTML = template;\n\n if (this.props.lines > this.props.maxLines) {\n this.initCollapser();\n }\n }\n\n initCollapser() {\n let expandEl = document.createElement(\"div\");\n expandEl.classList.add(\"code-block__expand\");\n expandEl.innerHTML = Hatch`\n \n `.toString();\n this.props.el.appendChild(expandEl);\n expandEl.addEventListener(\"click\", () => {\n this.toggleExpand();\n });\n }\n\n toggleExpand() {\n if (this.props.el.getAttribute(\"data-expanded\") === \"true\") {\n this.props.el.setAttribute(\"data-expanded\", \"false\");\n this.props.el.querySelector(\".code-block__expand button\").innerText = \"Click to expand\";\n this.props.el.querySelectorAll(\".code-block__line\").forEach((item, index) => {\n if (index + 1 > this.props.maxLines) item.classList.add(\"hidden\");\n });\n } else {\n this.props.el.setAttribute(\"data-expanded\", \"true\");\n this.props.el.querySelector(\".code-block__expand button\").innerText = \"Click to shrink\";\n this.props.el.querySelectorAll(\".code-block__line\").forEach((item) => {\n item.classList.remove(\"hidden\");\n });\n }\n }\n}\n", "import helpCenter from \"@icons/help_center.svg\";\nimport close from \"@icons/close.svg\";\n\nexport default class HelpHandler {\n text: HTMLElement;\n button: HTMLElement;\n opened = false;\n\n constructor(el: HTMLElement) {\n this.button = el;\n this.text = el.parentNode.parentNode.querySelector(\"[data-help-content]\");\n this.button.addEventListener(\"click\", () => {\n this.toggle();\n });\n }\n\n toggle() {\n if (this.opened) {\n this.opened = false;\n this.button.innerHTML = `
${helpCenter}
`;\n this.text.classList.remove(\"toggled\");\n } else {\n this.button.innerHTML = `
${close}
`;\n this.opened = true;\n this.text.classList.add(\"toggled\");\n }\n }\n}\n", "import { Modal } from \"./Modal\";\nimport { Hatch, HatchMap, SafeString } from \"../classes/Hatch\";\nimport launch from \"@icons/launch.svg\";\nimport { Signature } from \"../report_modules/interfaces\";\nimport Utils from \"../classes/Utils\";\n\nexport class MitreModal {\n constructor(ttp) {\n let sigs = globalThis.page_data.task_report?.signatures || globalThis.page_data.overview?.signatures;\n\n ttp = globalThis.ttp_lookup[ttp];\n sigs = sigs.filter((sig: Signature) => sig.ttp?.includes(ttp.id));\n\n let body = Hatch`\n
\n

${ttp.name}

\n
    \n ${HatchMap(sigs, (sig: Signature) => {\n return Hatch`\n
  • \n
    \n \n ${sig.name} ${sig.ttp?.length ? `${sig.ttp?.length} TTPs` : \"\"}\n ${sig.indicators?.length ? `${sig.indicators?.length} Indicators` : \"\"}\n \n ${sig.desc ? Hatch`

    ${sig.desc}

    ` : \"\"}\n
    \n
  • \n `;\n })}\n
\n \n
\n `;\n new Modal({\n body: body,\n });\n }\n}\n", "import { Hatch } from \"../classes/Hatch\";\nimport Utils, { isValidHttpUrl, matchImportUrl } from \"../classes/Utils\";\n\nexport class bigDropzone {\n selectedFile: File;\n progressEl: HTMLElement;\n req: XMLHttpRequest;\n private closed: boolean = true;\n private closeTimout: number;\n\n constructor() {\n document.querySelectorAll(\"#big-dropper [data-close]\").forEach((el) => {\n el.addEventListener(\"click\", (ev) => {\n this.close();\n });\n });\n\n window.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n this.close();\n }\n });\n\n document.querySelector('#big-dropper [name=\"url\"]').addEventListener(\"input\", this.validateURL);\n\n document.querySelectorAll('#big-dropper button[type=\"submit\"]').forEach((el) => {\n el.addEventListener(\"click\", (ev) => {\n this.submit(ev);\n });\n });\n\n document.querySelector(\"#big-dropper-backdrop\").addEventListener(\"click\", (ev) => {\n this.close();\n });\n\n document.body.addEventListener(\"dragover\", (ev) => {\n ev.preventDefault();\n\n if (ev.dataTransfer.types.includes(\"text/uri-list\") || ev.dataTransfer.types.includes(\"Files\")) {\n this.show();\n }\n });\n\n document.body.addEventListener(\"dragleave\", (ev) => {\n if (!ev.relatedTarget) {\n ev.preventDefault();\n this.close();\n }\n });\n\n document.body.addEventListener(\"drop\", (ev) => {\n ev.preventDefault();\n if (ev.dataTransfer.files[0]) {\n this.showFile(ev.dataTransfer.files);\n } else if (isValidHttpUrl(ev.dataTransfer.getData(\"text/plain\"))) {\n this.showURL(ev.dataTransfer.getData(\"text/plain\"));\n } else {\n this.close();\n\n globalThis.notification.notify({\n title: \"Unable to select\",\n message: \"Nothing valid was dropped, please try dropping a file or http(s) url.\",\n type: \"info\",\n });\n }\n });\n document.addEventListener(\"paste\", async (ev) => {\n if (document.activeElement.tagName === \"INPUT\" || document.activeElement.tagName === \"TEXTAREA\") {\n return;\n }\n ev.preventDefault();\n const text = ev.clipboardData.getData(\"text/plain\");\n const refang = Utils.refang(text);\n this.show();\n\n if (ev.clipboardData.files[0]) {\n this.showFile(ev.clipboardData.files);\n } else if (isValidHttpUrl(refang)) {\n this.showURL(refang);\n } else {\n this.close();\n\n globalThis.notification.notify({\n title: \"Unable to select\",\n message: \"Nothing valid was dropped or pasted, please try dropping a file or http(s) url.\",\n type: \"info\",\n });\n }\n });\n }\n\n showURL(str: string) {\n const urlInput = document.querySelector('#big-dropper-url [name=\"url\"]') as HTMLInputElement;\n urlInput.value = str;\n urlInput.focus();\n this.validateURL();\n this.showSlide(\"url\");\n }\n\n showFile(files: FileList) {\n this.selectedFile = files[0];\n\n if (files[0].size <= 4) {\n if (files[0].size <= 0) {\n globalThis.notification.notify({\n title: \"Invalid sample\",\n message: \"File submissions can not be empty. This sample's file size is 0 bytes.\",\n type: \"danger\",\n });\n return;\n } else {\n globalThis.notification.notify({\n title: \"Invalid sample\",\n message: \"This sample size is below the minimum threshold to submit.\",\n type: \"danger\",\n });\n return;\n }\n }\n\n let el = document.querySelector(\"#big-dropper\");\n el.querySelector(\"#filename\").innerHTML = Hatch`${files[0].name}`.toString();\n el.querySelector(\"#filesize\").innerHTML = Hatch`${Utils.humanByteSize(files[0].size, 1).string}`.toString();\n el.querySelector(\"#filetype\").innerHTML = Hatch`${files[0].type}`.toString();\n if (!files[0].type) {\n el.querySelector(\"#filetype\").parentElement.classList.add(\"hidden\");\n } else {\n el.querySelector(\"#filetype\").parentElement.classList.remove(\"hidden\");\n }\n\n (document.querySelector('#big-dropper-file [name=\"file\"]') as HTMLInputElement).files = files;\n this.showSlide(\"file\");\n document.querySelector(\"#big-dropper input[type=text]\")?.focus();\n }\n\n showSlide(page: string) {\n let el = document.querySelector(`#big-dropper-${page}`);\n document.querySelectorAll(\"#big-dropper .tile\").forEach((el) => el.classList.add(\"hidden\"));\n el.classList.remove(\"hidden\");\n }\n\n validateURL() {\n let url = (document.querySelector('#big-dropper [name=\"url\"]') as HTMLInputElement)?.value;\n\n if (matchImportUrl(url)) {\n (document.querySelector(\"#big-dropper-url #url-dropper\") as HTMLInputElement).disabled = true;\n (document.querySelector(\"#big-dropper-url #fetch-dropper\") as HTMLInputElement).disabled = true;\n if (document.querySelector(\"#big-dropper-url #import-dropper\")) {\n (document.querySelector(\"#big-dropper-url #import-dropper\") as HTMLInputElement).disabled = false;\n }\n } else {\n (document.querySelector(\"#big-dropper-url #url-dropper\") as HTMLInputElement).disabled = false;\n (document.querySelector(\"#big-dropper-url #fetch-dropper\") as HTMLInputElement).disabled = false;\n if (document.querySelector(\"#big-dropper-url #import-dropper\")) {\n (document.querySelector(\"#big-dropper-url #import-dropper\") as HTMLInputElement).disabled = true;\n }\n }\n }\n\n show() {\n if (!this.closed) {\n return;\n }\n this.closed = false;\n clearTimeout(this.closeTimout);\n document.querySelector(\"#big-dropper\").classList.remove(\"hidden\");\n document.querySelectorAll(\"#big-dropper .tile\").forEach((el) => el.classList.add(\"hidden\"));\n document.querySelector(`#big-dropper-dropzone`).classList.remove(\"hidden\");\n\n setTimeout(() => {\n document.querySelector(\"#big-dropper\").classList.add(\"shown\");\n }, 20);\n }\n\n close = () => {\n if (this.req) {\n this.req.abort();\n }\n if (this.closed) {\n return;\n }\n this.closed = true;\n document.querySelector(\"#big-dropper\").classList.remove(\"shown\");\n this.closeTimout = setTimeout(() => {\n document.querySelector(\"#big-dropper\").classList.add(\"hidden\");\n }, 300);\n };\n\n async submit(ev) {\n ev.preventDefault();\n this.progressEl = document.querySelector(\"#big-dropper-file .progress-bar\");\n let form = ev.srcElement.closest(\"form\");\n if (form.getAttribute(\"id\") === \"big-dropper-file\") {\n ev.preventDefault();\n this.req = new XMLHttpRequest();\n let data = new FormData(form);\n this.req.onreadystatechange = () => {\n if (this.req.readyState != 4) {\n return;\n }\n if (this.req.responseURL) {\n globalThis.location.href = this.req.responseURL;\n return;\n }\n if (this.req.status >= 200 && this.req.status < 400) {\n return;\n }\n this.progressEl.classList.add(\"hidden\");\n if (document.querySelector(\"#loader\")) document.querySelector(\"#loader\").classList.add(\"hidden\");\n if (this.req.responseText)\n globalThis.notification.notify({\n title: this.req.status,\n message: this.req.response,\n type: \"danger\",\n });\n };\n this.req.addEventListener(\n \"progress\",\n (evt) => {\n onprogress(evt);\n },\n false\n );\n this.req.upload.addEventListener(\n \"progress\",\n (evt) => {\n onprogress(evt);\n },\n false\n );\n\n let onprogress = (evt) => {\n if (evt.lengthComputable) {\n let progress = (evt.loaded / evt.total) * 100;\n this.progressEl.classList.remove(\"hidden\");\n this.progressEl.querySelector(\"progress\").value = progress;\n }\n };\n\n this.req.open(\"POST\", `${window.location.origin}/submit`);\n this.req.send(data);\n } else {\n if (ev.target.textContent === \"Fetch\") {\n form.querySelector('[name=\"url\"]').setAttribute(\"name\", \"fetch\");\n }\n if (ev.target.textContent === \"Import\") {\n form.querySelector('[name=\"url\"]').setAttribute(\"name\", \"import\");\n }\n form.submit();\n }\n }\n}\n", "export class Section {\n constructor(el: HTMLElement) {\n if (el.getAttribute(\"data-section\") === \"disabled\") {\n el.ariaDisabled = \"true\";\n }\n\n el.querySelector(\"h2\").addEventListener(\"click\", () => {\n if (el.getAttribute(\"data-section\") === \"close\") {\n el.setAttribute(\"data-section\", \"open\");\n } else {\n el.setAttribute(\"data-section\", \"close\");\n }\n });\n }\n}\n", "import { Hatch } from \"./classes/Hatch\";\nimport NotificationCenter from \"./components/Notification\";\nimport Tooltip from \"./components/Tooltip\";\nimport Code from \"./components/Code\";\nimport HelpHandler from \"./components/HelpHandler\";\nimport Utils from \"./classes/Utils\";\nimport { ToggleableElement } from \"./global/interfaces\";\nimport { MitreModal } from \"./components/MitreModal\";\nimport { bigDropzone } from \"./components/BigDropzone\";\nimport { Section } from \"./components/Section\";\n\n// polyfills\n(function () {\n // enable forEach on NodeList implementations that lack the functionality\n // (not anymore the case in the newest chromes, foxes, safaris and explorers)\n if (!NodeList.prototype.forEach)\n NodeList.prototype.forEach = function (callback, thisArg) {\n thisArg = thisArg || window;\n for (var i = 0; i < this.length; i++) {\n callback.call(thisArg, this[i], i, this);\n }\n };\n})();\n\n// DOMReady\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // intialize pre-existent tooltips\n document.querySelectorAll(\"[data-tooltip]\").forEach((el) => {\n new Tooltip({\n target: el,\n text: el.getAttribute(\"data-tooltip\"),\n position: \"bottom\",\n });\n });\n\n document.querySelectorAll(\"[data-modal-ttp]\").forEach((item) => {\n let ttp = item.getAttribute(\"data-modal-ttp\");\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n new MitreModal(ttp);\n });\n\n item.addEventListener(\"mouseenter\", () => {\n document.querySelectorAll(\"[data-modal-ttp]\").forEach((item) => {\n if (item.getAttribute(\"data-modal-ttp\") === ttp) {\n item.classList.add(\"hover\");\n }\n });\n });\n\n item.addEventListener(\"mouseleave\", () => {\n document.querySelectorAll(\"[data-modal-ttp]\").forEach((item) => {\n if (item.getAttribute(\"data-modal-ttp\") === ttp) {\n item.classList.remove(\"hover\");\n }\n });\n });\n });\n\n document.querySelectorAll(\"[data-close-toast]\").forEach((item) => {\n item.addEventListener(\"click\", (e: Event) => {\n e.preventDefault();\n let toast = item.closest(\".toast\");\n Utils.closeToast(toast as HTMLElement);\n });\n });\n\n globalThis.notification = new NotificationCenter({\n parent: document.querySelector(\"#notification-center\"),\n list: document.querySelector(\".page-header .notifications__list\"),\n });\n\n if (document.querySelector(\"[data-toggle-notifications]\")) {\n document.querySelector(\"[data-toggle-notifications]\").addEventListener(\"click\", (e) => {\n e.preventDefault();\n document.querySelector(\".page-header .notifications__list\").classList.toggle(\"open\");\n\n let menu = document.querySelector(\"nav .menu\");\n if (!document.querySelector(\".page-header .notifications__list\").classList.contains(\"hidden\")) {\n menu.classList.add(\"hidden\");\n }\n });\n }\n\n // Search field focus/blur\n let field = document.querySelector('.main-nav input[type=\"search\"]');\n let menuItems = document.querySelectorAll(\".main-nav__secondary li > *\");\n\n if (field) {\n let navWidth = document.querySelector(\".main-nav__secondary\").getBoundingClientRect().width;\n let fieldWidth = field.getBoundingClientRect().width;\n field.addEventListener(\"focus\", () => {\n menuItems.forEach((item) => {\n if (item.classList.contains(\"search\")) return;\n item.parentElement.classList.add(\"hidden\");\n });\n field.style.width = navWidth + 0 + \"px\";\n });\n\n field.addEventListener(\"blur\", () => {\n if (!field.value) {\n menuItems.forEach((item) => {\n item.parentElement.classList.remove(\"hidden\");\n });\n field.style.width = fieldWidth + \"px\";\n }\n });\n }\n // initialize code\n document.querySelectorAll(\"[data-code]\").forEach((el: HTMLElement) => new Code(el));\n\n document.querySelectorAll(\".tab-view__bar\").forEach((e) => {\n initScrollTabBar(e);\n });\n\n // initialize Collapsing Windows\n document.querySelectorAll(\"[data-section]\").forEach((el) => new Section(el as HTMLElement));\n\n if (document.querySelector(\"#toggleHeaderMenu\")) {\n document.querySelector(\"#toggleHeaderMenu\").addEventListener(\"click\", () => {\n let menu = document.querySelector(\"nav .menu\");\n if (menu.classList.contains(\"hidden\")) document.querySelector(\".notifications__list\").classList.remove(\"open\");\n menu.classList.toggle(\"hidden\");\n });\n }\n\n function initScrollTabBar(el: Element) {\n let scrollbar = el;\n if (Utils.getOverflow(scrollbar).isOverflow) {\n if (scrollbar.parentElement) {\n scrollbar.parentElement.classList.add(\"left\");\n scrollbar.classList.add(\"overflown\");\n }\n }\n\n scrollbar.addEventListener(\"scroll\", () => {\n let overflow = Utils.getOverflow(scrollbar);\n\n if (overflow.isOverflow) {\n scrollbar.classList.add(\"overflown\");\n scrollbar.parentElement.classList.remove(\"both\");\n scrollbar.parentElement.classList.remove(\"left\");\n scrollbar.parentElement.classList.remove(\"right\");\n scrollbar.parentElement.classList.add(overflow.dir);\n }\n });\n }\n\n document.querySelectorAll(\"#feedback, [data-leave-feedback]\").forEach((el) =>\n el.addEventListener(\"click\", (ev) => {\n ev.preventDefault();\n Utils.feedback();\n })\n );\n function setPrint() {\n const closePrint = () => {\n document.body.removeChild(this);\n };\n this.contentWindow.onbeforeunload = closePrint;\n this.contentWindow.onafterprint = closePrint;\n this.contentWindow.print();\n }\n document.querySelector(\".print-to-pdf[data-print-url]\")?.addEventListener(\"click\", function () {\n const hideFrame = document.createElement(\"iframe\");\n hideFrame.referrerPolicy = \"no-referrer\";\n hideFrame.setAttribute(\"sandbox\", \"allow-same-origin allow-modals\");\n hideFrame.onload = setPrint;\n hideFrame.style.display = \"none\"; // hide iframe\n hideFrame.src = this.getAttribute(\"data-print-url\");\n document.body.appendChild(hideFrame);\n });\n\n document.querySelectorAll(\"[data-clipboard]\").forEach((item) => {\n item.addEventListener(\"click\", () => {\n Utils.copyToClipboard(item);\n });\n });\n\n if (document.querySelectorAll(\"[data-show-more]\")) {\n document.querySelectorAll(\"[data-show-more]\").forEach((item) => {\n item.addEventListener(\"click\", () => {\n Utils.toggleShowMore(item as ToggleableElement);\n });\n });\n }\n\n let toggleAPI = document.querySelector(\"#toggleAPI\");\n toggleAPI?.addEventListener(\"click\", () => {\n let field = document.querySelector(\"#userapikey\");\n if (field.getAttribute(\"type\") === \"text\") {\n field.setAttribute(\"type\", \"password\");\n toggleAPI.innerHTML = \"Show API Key\";\n } else {\n field.setAttribute(\"type\", \"text\");\n toggleAPI.innerHTML = \"Hide API Key\";\n }\n });\n\n document.querySelectorAll(\"[data-help-toggle]\").forEach((item) => {\n new HelpHandler(item as HTMLElement);\n });\n\n // initialize tasksbar elements\n if (document.querySelector(\".report-tasks\")) {\n let el = document.querySelector(\".report-tasks\");\n let but = el?.querySelector(\"#toggle-tasks\");\n\n but?.addEventListener(\"click\", () => {\n if (el?.classList.contains(\"folded\")) {\n el.classList.remove(\"folded\");\n localStorage.setItem(\"tasks-folded\", \"false\");\n document.cookie = \"menu-folded=false\";\n } else {\n el?.classList.add(\"folded\");\n localStorage.setItem(\"tasks-folded\", \"true\");\n document.cookie = \"menu-folded=true\";\n }\n });\n }\n document.querySelectorAll(\".block.expandable h4\").forEach((block) => {\n block.addEventListener(\"click\", () => {\n block.parentElement.classList.toggle(\"expanded\");\n });\n });\n});\n\ndocument.querySelectorAll(\".list li.clickable .fold\").forEach((fold) => {\n fold.parentNode.querySelector(\".hbox\").addEventListener(\"click\", () => {\n fold.parentElement.classList.toggle(\"expanded\");\n });\n});\n\nif (localStorage.getItem(\"allow-cookies\") !== \"true\" && !globalThis.user && globalThis.isPublic) {\n let el = document.createElement(\"div\");\n el.classList.add(\"toast\", \"info\", \"cookie-banner\", \"article\");\n setTimeout(() => {\n el.classList.add(\"up\");\n }, 10);\n\n el.innerHTML = Hatch`\n

We care about your privacy.

\n

This website stores cookies on your computer. These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media. To find out more about the cookies we use, see our Privacy Policy.

\n
\n \n
\n `.toString();\n\n document.body.appendChild(el);\n el.querySelector(\"button\").addEventListener(\"click\", () => {\n localStorage.setItem(\"allow-cookies\", \"true\");\n // initGA();\n el.classList.remove(\"up\");\n setTimeout(() => {\n el.remove();\n }, 300);\n });\n} else {\n if (globalThis.isPublic) {\n // initGA();\n }\n}\n\nlet menuEl = document.querySelector(\"#toggle_menu\");\n\nmenuEl?.addEventListener(\"click\", () => {\n menuEl.classList.toggle(\"toggled\");\n document.querySelector(\".main-nav\").classList.toggle(\"shown\");\n});\n\n// Enable fullscreen dropper on predefined routes\nif ([\"/dashboard\", \"/submit/file\"].includes(window.location.pathname)) {\n if (globalThis.permissions.includes(\"submit_samples\")) {\n new bigDropzone();\n }\n}\n"], "mappings": "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", "names": ["NotificationMessage", "n", "__spreadValues", "Domifier", "Hatch", "SafeString", "close_default", "resolve", "wait", "counter", "Utils", "NotificationCenter", "props", "silent", "body", "Code", "el", "template", "HatchMap", "line", "index", "Hatch", "expandEl", "item", "HelpHandler", "el", "help_center_default", "close_default", "MitreModal", "ttp", "_a", "_b", "sigs", "sig", "body", "Hatch", "HatchMap", "_c", "_d", "Utils", "SafeString", "launch_default", "Modal", "bigDropzone", "el", "ev", "isValidHttpUrl", "text", "refang", "Utils", "str", "urlInput", "files", "_a", "Hatch", "page", "url", "matchImportUrl", "form", "data", "evt", "onprogress", "progress", "Section", "el", "callback", "thisArg", "i", "_a", "el", "Tooltip", "item", "ttp", "e", "MitreModal", "toast", "Utils", "NotificationCenter", "menu", "field", "menuItems", "navWidth", "fieldWidth", "Code", "initScrollTabBar", "Section", "scrollbar", "overflow", "ev", "setPrint", "closePrint", "hideFrame", "toggleAPI", "HelpHandler", "but", "block", "fold", "Hatch", "menuEl", "bigDropzone"] }