diff --git a/CHANGELOG.md b/CHANGELOG.md index acc75d1d..3859e30d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ # Changelog +2026-08-20 + + - Add request summaries: collectors can return a `summary`, the bar header shows the one + for the tab in view or the whole request and copies it, and `open.php?op=summary` serves + the same text for tooling that never renders the bar + - Fix widgets declaring a `map` without a `default` being dropped from the data map + 2025-11-25 - Add Antigravity editor link template diff --git a/build/build-icons.js b/build/build-icons.js index 90aac6e1..3e2b75b8 100644 --- a/build/build-icons.js +++ b/build/build-icons.js @@ -28,6 +28,7 @@ const icons = [ 'inbox', 'leaf', 'list', + 'list-details', 'logs', 'mobiledata', 'search', diff --git a/docs/docs/data-collectors.md b/docs/docs/data-collectors.md index a7f3846a..01d579c8 100644 --- a/docs/docs/data-collectors.md +++ b/docs/docs/data-collectors.md @@ -76,6 +76,44 @@ class MyDataCollector extends DebugBar\DataCollector\DataCollector implements De This will have the result of adding a new indicator to the debug bar. +## Summaries + +A collector can also return a `summary` from `collect()` and declare a `:summary` +widget pointing at it. The bar shows it in the summary popover in its header while that +tab is in view, and collects every summary into the whole-request text the popover copies +and the open handler serves (see [Open handler](openhandler.md)). + +```php +public function collect() +{ + return array( + 'queries' => $this->queries, + 'summary' => array( + 'queries' => count($this->queries), + 'duration' => $this->getDataFormatter()->formatDuration($this->duration), + 'slowest' => array('select * from users = 12ms'), + ), + ); +} + +public function getWidgets() +{ + return array( + 'mycollector' => array('widget' => '...', 'map' => 'mycollector.queries', 'default' => '[]'), + 'mycollector:summary' => array('map' => 'mycollector.summary'), + ); +} +``` + +A summary may be a string, which is used as-is, or an array, which is rendered as +`key = value` lines with nested arrays indented and lists rendered as `- item`. + +Summaries are meant to be copied out of the browser, so keep them small and treat them as +data that leaves the machine: report anomalies rather than volumes, quote values only when +they matter, run anything sensitive through `hideMaskedValues()`/`hideMaskedUri()`, and mark +anything you truncate (`(+12 more)`) rather than silently dropping it. Return an empty +array when the collector has nothing to report, and it contributes no section at all. + When implementing the `Renderable` interface, you may use widgets which are not provided with the default install. You can add new assets by implementing the `DebugBar\DataCollector\AssetProvider` interface. diff --git a/docs/docs/javascript-bar.md b/docs/docs/javascript-bar.md index 3cb6a3cc..5cd47b68 100644 --- a/docs/docs/javascript-bar.md +++ b/docs/docs/javascript-bar.md @@ -174,6 +174,35 @@ var LinkIndicator = PhpDebugBar.DebugBar.Indicator.extend({ debugbar.addIndicator('phpdoc', new LinkIndicator({ href: 'http://doc.php.com', title: 'PHP doc' })); ``` +## Summaries + +A tab can carry a `summary` attribute: a string, or an object rendered as `key = value` +lines. + +```js +debugbar.getControl('mytab').set('summary', { queries: 8, duration: '135us' }); +``` + +When any control has one, a summary button appears in the bar header. It opens a popover +showing the summary of the tab currently in view, with a switch below it to see the whole +request instead. **Copy** takes whatever is on screen. + +The chosen scope is remembered, so a preference for the whole request survives switching +tabs. Tabs without a summary of their own show the whole request regardless, without +changing that preference. + +Three methods back it, all reading the dataset currently shown unless given an id: + + - `debugbar.getSummarySection(name)` - one control's summary as `{name, title, text}`, or + `null` when it has nothing to report + - `debugbar.getSummarySections()` - all of them, in the order the controls were declared + - `debugbar.getSummary()` - everything as one block of text; the whole-request context you + would paste into an issue, a chat or a prompt. It matches the text + `DebugBar::getSummary()` produces server side, byte for byte. + +Collectors normally set this through the data map rather than by hand, by declaring a +`:summary` widget (see [Data collectors](data-collectors.md)). + ## OpenHandler An OpenHandler object can be provided using `setOpenHandler()`. The object is in charge diff --git a/docs/docs/openhandler.md b/docs/docs/openhandler.md index 53ccefbb..c02c8e59 100644 --- a/docs/docs/openhandler.md +++ b/docs/docs/openhandler.md @@ -23,3 +23,39 @@ $renderer->setOpenHandlerUrl('open.php'); This adds a button in the top right corner of the debug bar which allows you to browse and open previous sets of collected data. + +## Request summaries + +The open handler also serves a plain text summary of a stored dataset, for tooling that +never renders the bar - a terminal, a CI job, or an agent driving the app over HTTP. + +``` +GET open.php?op=summary&id= +``` + +Omit `id` to summarize the most recently stored dataset. The response is +`text/plain`, and contains the same text the bar's summary popover shows under "All": + +``` +# PHP DebugBar summary + +id = 01a01ecb81c6571ca7a79f91aae2ae9d +datetime = 2026-01-30 10:50:48 + +## Request +method = GET +uri = /checkout?page=2&api_token=ab***op +status = 200 + +## Database +statements = 8 +duration = 135us +duplicates = 2 +``` + +The dataset id of the current request is also sent as the `phpdebugbar-id` response +header (see [Ajax and stacked data](ajax-and-stack.md)), so a client can read the +header and fetch the matching summary. + +The same text is available in PHP through `$debugbar->getSummary()`, and in the browser +through `PhpDebugBar.instance.getSummary()`. diff --git a/resources/debugbar.css b/resources/debugbar.css index b993e41c..7c4264fa 100644 --- a/resources/debugbar.css +++ b/resources/debugbar.css @@ -10,6 +10,7 @@ div.phpdebugbar-openhandler, div.phpdebugbar-widgets-datasets-panel { --debugbar-background: #F7F7F7; --debugbar-background-alt: #EFEFEF; + --debugbar-surface-sunken: #FFFFFF; --debugbar-text: #222; --debugbar-text-muted: #888; --debugbar-border: #eee; @@ -44,6 +45,7 @@ div.phpdebugbar-openhandler[data-theme='dark'], div.phpdebugbar-widgets-datasets-panel[data-theme='dark'] { --debugbar-background: #2a2a2a; --debugbar-background-alt: #333333; + --debugbar-surface-sunken: #1c1c1c; --debugbar-text: #e0e0e0; --debugbar-text-muted: #aaaaaa; --debugbar-border: #3a3a3a; @@ -430,6 +432,7 @@ i.phpdebugbar-icon::before { a.phpdebugbar-close-btn, a.phpdebugbar-open-btn, +a.phpdebugbar-summary-btn, a.phpdebugbar-fullscreen-btn, a.phpdebugbar-minimize-btn, a.phpdebugbar-maximize-btn, @@ -442,6 +445,7 @@ a.phpdebugbar-tab.phpdebugbar-tab-settings { a.phpdebugbar-close-btn:after, a.phpdebugbar-open-btn:after, +a.phpdebugbar-summary-btn:after, a.phpdebugbar-restore-btn:after, a.phpdebugbar-fullscreen-btn:after, a.phpdebugbar-minimize-btn:after, @@ -510,6 +514,139 @@ a.phpdebugbar-open-btn:after { mask-image: var(--debugbar-icon-folder-open); } +a.phpdebugbar-summary-btn:after { + -webkit-mask-image: var(--debugbar-icon-list-details); + mask-image: var(--debugbar-icon-list-details); +} + +a.phpdebugbar-summary-btn.phpdebugbar-summary-btn-active:after { + background-color: var(--debugbar-text); +} + +/* The summary control: a header button anchoring a popover for the active tab */ +div.phpdebugbar-header-right > div.phpdebugbar-summary-float { + position: relative; +} +div.phpdebugbar-summary-float > div.phpdebugbar-summary-popover { + position: absolute; + bottom: 100%; + right: 0; + z-index: 4; + width: 420px; + max-width: min(420px, 90vw); + max-height: 50vh; + margin-bottom: 4px; + padding: 8px; + display: flex; + flex-direction: column; + gap: 6px; + line-height: normal; + text-align: left; + background-color: var(--debugbar-background); + border: 1px solid var(--debugbar-border); + border-radius: 4px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); +} +/* Open away from the page edge the bar is docked against */ +div.phpdebugbar[data-toolbarPosition="top"] div.phpdebugbar-summary-float > div.phpdebugbar-summary-popover { + bottom: auto; + top: 100%; + margin-bottom: 0; + margin-top: 4px; +} +div.phpdebugbar-summary-float div.phpdebugbar-summary-scope { + flex: 1 1 auto; + min-width: 0; + display: flex; + gap: 4px; +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn { + flex: 0 1 auto; + max-width: 60%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 2px 8px; + font-size: 11px; + font-family: inherit; + line-height: 1.4; + color: var(--debugbar-text-muted); + background-color: transparent; + border: 1px solid transparent; + border-radius: 3px; + cursor: pointer; +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn:hover { + color: var(--debugbar-text); +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn.phpdebugbar-summary-scope-active { + color: var(--debugbar-text); + background-color: var(--debugbar-background-alt); + border-color: var(--debugbar-border); + cursor: default; +} +div.phpdebugbar-summary-float div.phpdebugbar-summary-content { + flex: 1 1 auto; + overflow: auto; + white-space: pre-wrap; + word-break: break-word; + font-family: var(--debugbar-font-mono); + font-size: 11px; + line-height: 1.4; + color: var(--debugbar-text); + padding: 8px; + background-color: var(--debugbar-surface-sunken); + border: 1px solid var(--debugbar-header-border); + border-radius: 3px; +} +div.phpdebugbar-summary-float div.phpdebugbar-summary-actions { + flex: 0 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-copy { + flex: 0 0 auto; + display: inline-flex; + align-items: center; + gap: 4px; + padding: 3px 8px; + font-size: 11px; + font-family: inherit; + color: var(--debugbar-text); + background-color: var(--debugbar-background-alt); + border: 1px solid var(--debugbar-border); + border-radius: 3px; + cursor: pointer; + line-height: 1.4; +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-copy:hover { + background-color: var(--debugbar-header); +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-copy::before { + content: ""; + display: inline-block; + width: 11px; + height: 11px; + -webkit-mask-image: var(--debugbar-icon-copy); + mask-image: var(--debugbar-icon-copy); + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: currentColor; +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-copy.phpdebugbar-summary-copied { + color: var(--debugbar-success, #4caf50); +} +div.phpdebugbar-summary-float button.phpdebugbar-summary-copy.phpdebugbar-summary-copied::before { + -webkit-mask-image: var(--debugbar-icon-circle-check); + mask-image: var(--debugbar-icon-circle-check); +} + .phpdebugbar-indicator { position: relative; cursor: pointer; @@ -595,6 +732,7 @@ div.phpdebugbar-panel.phpdebugbar-active { display: block; } + /* -------------------------------------- */ div.phpdebugbar-mini-design a.phpdebugbar-tab { diff --git a/resources/debugbar.js b/resources/debugbar.js index 23919ae4..f8d718b2 100644 --- a/resources/debugbar.js +++ b/resources/debugbar.js @@ -86,6 +86,111 @@ window.PhpDebugBar = window.PhpDebugBar || {}; } }; + /** + * Formats a summary value as indented plain text. + * + * Lists become "- item" lines and objects become "key = value" lines. Mirrors + * DebugBar\SummaryFormatter::formatValue() so both sides produce the same text. + * + * @param {*} value + * @param {string} [indent] + * @returns {string} + */ + const formatSummary = PhpDebugBar.utils.formatSummary = function (value, indent = '') { + const scalar = v => (v === null || v === undefined) ? 'null' : String(v); + + if (value === null || value === undefined || typeof value !== 'object') { + return indent + scalar(value); + } + + const lines = []; + const isList = Array.isArray(value); + + for (const [key, item] of Object.entries(value)) { + const nested = item !== null && typeof item === 'object'; + + if (isList) { + if (!nested) { + lines.push(`${indent}- ${scalar(item)}`); + continue; + } + // Hoist the first line of the nested block onto the bullet, YAML style. + const block = formatSummary(item, `${indent} `); + lines.push(`${block.slice(0, indent.length)}- ${block.slice(indent.length + 2)}`); + continue; + } + + if (nested) { + lines.push(`${indent}${key}:`); + lines.push(formatSummary(item, `${indent} `)); + continue; + } + + lines.push(`${indent}${key} = ${scalar(item)}`); + } + + return lines.join('\n'); + }; + + /** + * Normalizes a collector summary to text. Strings pass through untouched so + * collectors can supply their own formatting. + * + * @param {*} summary + * @returns {string} + */ + const summaryText = PhpDebugBar.utils.summaryText = function (summary) { + if (summary === null || summary === undefined) { + return ''; + } + return typeof summary === 'string' ? summary : formatSummary(summary); + }; + + /** + * Turns a control name into a display title, matching the PHP renderer. + * + * @param {string} name + * @returns {string} + */ + const titleize = PhpDebugBar.utils.titleize = function (name) { + const label = String(name).replace(/[_-]/g, ' '); + return label.charAt(0).toUpperCase() + label.slice(1); + }; + + /** + * Copies text to the clipboard, falling back to execCommand on insecure origins + * where navigator.clipboard is unavailable. + * + * @param {string} text + * @returns {Promise} rejects when the copy did not happen + */ + PhpDebugBar.utils.copyToClipboard = function (text) { + if (!text) { + return Promise.reject(new Error('Nothing to copy')); + } + + if (navigator.clipboard?.writeText) { + return navigator.clipboard.writeText(text); + } + + const ta = document.createElement('textarea'); + ta.value = text; + ta.style.position = 'fixed'; + ta.style.opacity = '0'; + document.body.append(ta); + ta.select(); + + let copied = false; + try { + copied = document.execCommand('copy'); + } catch { + copied = false; + } + ta.remove(); + + return copied ? Promise.resolve() : Promise.reject(new Error('Copy failed')); + }; + PhpDebugBar.utils.schedule = function (cb) { if (window.requestIdleCallback) { return window.requestIdleCallback(cb, { timeout: 1000 }); @@ -234,6 +339,214 @@ window.PhpDebugBar = window.PhpDebugBar || {}; // ------------------------------------------------------------------ + /** + * SummaryPopover + * + * The summary control in the bar header: a button revealing the summary of the tab + * being viewed, with buttons to copy that section or the whole request. The text is + * meant to be pasted into an issue, a chat or a prompt. + * + * Options: + * - getSection: returns {title, text} for the tab in view, or null + * - getAll: returns the whole-request summary as text + */ + class SummaryPopover { + constructor(options = {}) { + this.section = null; + + this.el = document.createElement('div'); + this.el.classList.add(csscls('summary-float')); + this.el.hidden = true; + + this.btn = document.createElement('a'); + this.btn.classList.add(csscls('summary-btn')); + this.btn.setAttribute('title', 'Show summary'); + this.btn.setAttribute('aria-haspopup', 'dialog'); + this.btn.setAttribute('aria-expanded', 'false'); + this.btn.addEventListener('click', (e) => { + e.stopPropagation(); + this.toggle(); + }); + this.el.append(this.btn); + + this.popover = document.createElement('div'); + this.popover.classList.add(csscls('summary-popover')); + this.popover.setAttribute('role', 'dialog'); + this.popover.hidden = true; + // Clicks inside must not reach the document handler that closes the popover + this.popover.addEventListener('click', e => e.stopPropagation()); + + this.content = document.createElement('div'); + this.content.classList.add(csscls('summary-content')); + this.popover.append(this.content); + + // Footer: which summary is in view on the left, copying it on the right + this.preferAll = localStorage.getItem('phpdebugbar-summary-all') === '1'; + this.scope = document.createElement('div'); + this.scope.classList.add(csscls('summary-scope')); + this.sectionBtn = this.createScopeButton('', false); + this.allBtn = this.createScopeButton('All', true); + this.scope.append(this.sectionBtn, this.allBtn); + + this.copyBtn = this.createCopyButton('Copy', () => this.shownText); + + const actions = document.createElement('div'); + actions.classList.add(csscls('summary-actions')); + actions.append(this.scope, this.copyBtn); + this.popover.append(actions); + this.el.append(this.popover); + + this.getSection = options.getSection || (() => null); + this.getAll = options.getAll || (() => ''); + + this.onDocumentClick = () => this.close(); + this.onKeyDown = (e) => { + if (e.key === 'Escape') { + this.close(); + } + }; + } + + /** + * Builds one option of the scope switch. + * + * @param {string} label + * @param {boolean} all Whether this option shows the whole request + * @return {HTMLButtonElement} + */ + createScopeButton(label, all) { + const btn = document.createElement('button'); + btn.type = 'button'; + btn.classList.add(csscls('summary-scope-btn')); + btn.textContent = label; + btn.addEventListener('click', () => { + if (this.preferAll === all) { + return; + } + this.preferAll = all; + localStorage.setItem('phpdebugbar-summary-all', all ? '1' : '0'); + this.refresh(); + }); + + return btn; + } + + /** + * Builds the copy button, which flashes a confirmation once the text is on the + * clipboard. + * + * @param {string} label + * @param {Function} getText Called on click, so the text is always current + * @return {HTMLButtonElement} + */ + createCopyButton(label, getText) { + const btn = document.createElement('button'); + btn.type = 'button'; + btn.classList.add(csscls('summary-copy')); + this.copyLabel = document.createElement('span'); + this.copyLabel.textContent = label; + this.copyLabelText = label; + btn.append(this.copyLabel); + btn.addEventListener('click', () => { + PhpDebugBar.utils.copyToClipboard(getText()).then(() => { + this.resetCopied(); + btn.classList.add(csscls('summary-copied')); + this.copyLabel.textContent = 'Copied!'; + this.copyTimer = setTimeout(() => this.resetCopied(), 1500); + }, () => {}); + }); + + return btn; + } + + /** + * Drops the "Copied!" confirmation. + * + * Called whenever the text behind the button changes, so it never claims to have + * copied something other than what is now in view. + */ + resetCopied() { + clearTimeout(this.copyTimer); + this.copyTimer = null; + this.copyLabel.textContent = this.copyLabelText; + this.copyBtn.classList.remove(csscls('summary-copied')); + } + + /** + * Shows or hides the whole control depending on whether there is anything to show. + * + * @param {boolean} available + */ + setAvailable(available) { + this.el.hidden = !available; + if (!available) { + this.close(); + } + } + + /** + * Fills the popover with whichever scope is in view: the summary of the tab being + * viewed, or the whole request. Tabs with no summary of their own always show the + * whole request, without changing the remembered preference. + */ + refresh() { + this.resetCopied(); + this.section = this.getSection(); + this.all = this.getAll(); + this.showAll = this.preferAll || !this.section; + + this.sectionBtn.hidden = !this.section; + this.sectionBtn.textContent = this.section ? this.section.title : ''; + this.sectionBtn.classList.toggle(csscls('summary-scope-active'), !this.showAll); + this.allBtn.classList.toggle(csscls('summary-scope-active'), this.showAll); + + this.content.textContent = this.shownText; + this.content.scrollTop = 0; + } + + /** + * The text currently in view, which is also what the Copy button copies. + * + * @return {string} + */ + get shownText() { + return this.showAll ? this.all : (this.section?.text ?? ''); + } + + open() { + this.refresh(); + this.popover.hidden = false; + this.btn.setAttribute('aria-expanded', 'true'); + this.btn.classList.add(csscls('summary-btn-active')); + document.addEventListener('click', this.onDocumentClick); + document.addEventListener('keydown', this.onKeyDown); + } + + close() { + this.popover.hidden = true; + this.btn.setAttribute('aria-expanded', 'false'); + this.btn.classList.remove(csscls('summary-btn-active')); + document.removeEventListener('click', this.onDocumentClick); + document.removeEventListener('keydown', this.onKeyDown); + } + + toggle() { + if (this.popover.hidden) { + this.open(); + } else { + this.close(); + } + } + + get isOpen() { + return !this.popover.hidden; + } + } + + PhpDebugBar.SummaryPopover = SummaryPopover; + + // ------------------------------------------------------------------ + /** * Tab * @@ -247,6 +560,8 @@ window.PhpDebugBar = window.PhpDebugBar || {}; * - title * - badge * - widget + * - summary: string (shown as-is) or object (rendered as "key = value" + * per line). Shown in the bar's summary popover while this tab is active. * - data: forward data to widget data */ class Tab extends Widget { @@ -288,8 +603,13 @@ window.PhpDebugBar = window.PhpDebugBar || {}; }); this.bindAttr('widget', function (widget) { - this.el.innerHTML = ''; - this.el.append(widget.el); + this.el.replaceChildren(widget.el); + }); + + // Read back by DebugBar.getSummarySections(); the bar shows it in the header + this.summaryText = ''; + this.bindAttr('summary', function (summary) { + this.summaryText = summaryText(summary); }); this.widgetRendered = false; @@ -980,6 +1300,14 @@ window.PhpDebugBar = window.PhpDebugBar || {}; self.restore(); }); + // summary control (children of header-right float right, so this sits with + // the other controls rather than among the indicators) + this.summaryControl = new SummaryPopover({ + getSection: () => self.getSummarySection(self.activePanelName), + getAll: () => self.getSummary() + }); + this.headerRight.append(this.summaryControl.el); + // open button this.openbtn = document.createElement('a'); this.openbtn.classList.add(csscls('open-btn')); @@ -1273,6 +1601,11 @@ window.PhpDebugBar = window.PhpDebugBar || {}; this.activePanelName = name; + // The popover shows the tab in view, so follow along while it is open + if (this.summaryControl?.isOpen) { + this.summaryControl.refresh(); + } + this.el.classList.remove(csscls('minimized')); localStorage.setItem('phpdebugbar-visible', '1'); localStorage.setItem('phpdebugbar-tab', name); @@ -1601,6 +1934,13 @@ window.PhpDebugBar = window.PhpDebugBar || {}; } } + if (this.summaryControl) { + this.summaryControl.setAvailable(this.getSummary() !== ''); + if (this.summaryControl.isOpen) { + this.summaryControl.refresh(); + } + } + if (!this.isMinimized()) { this.showTab(); } @@ -1608,6 +1948,101 @@ window.PhpDebugBar = window.PhpDebugBar || {}; this.resize(); } + /** + * Returns the summary of a single control, or null when it has nothing to say. + * + * @this {DebugBar} + * @param {string} name Control name, e.g. the name of the tab being viewed + * @param {string} [datasetId] Defaults to the dataset currently shown + * @return {?{name: string, title: string, text: string}} + */ + getSummarySection(name, datasetId) { + const control = name ? this.getControl(name) : undefined; + + // Summaries set directly on a control win; the rest come from the data map, + // which also covers controls that are indicators rather than tabs. + let text = control?.summaryText || ''; + if (!text) { + const def = this.dataMap[`${name}:summary`]; + const dataset = this.datasets[datasetId ?? this.activeDatasetId]; + text = def ? summaryText(getDictValue(dataset, def[0], null)) : ''; + } + + if (!text.trim()) { + return null; + } + + return { name, title: control?.get('title') || titleize(name), text }; + } + + /** + * Returns every summary in a dataset, in the order the controls were declared. + * + * @this {DebugBar} + * @param {string} [datasetId] Defaults to the dataset currently shown + * @return {Array<{name: string, title: string, text: string}>} + */ + getSummarySections(datasetId) { + if (!this.datasets[datasetId ?? this.activeDatasetId]) { + return []; + } + + const suffix = ':summary'; + const names = Object.keys(this.dataMap) + .filter(key => key.endsWith(suffix)) + .map(key => key.slice(0, -suffix.length)); + + // Controls whose summary was set directly rather than through the data map + for (const [name, control] of Object.entries(this.controls)) { + if (control.summaryText && !names.includes(name)) { + names.push(name); + } + } + + return names.map(name => this.getSummarySection(name, datasetId)).filter(Boolean); + } + + /** + * Returns every collector summary in a dataset as one block of plain text. + * + * This is the whole-request context you would paste into an issue, a chat or a + * prompt. Mirrors DebugBar::getSummary() in PHP, which serves the same text over + * the open handler for tooling that never renders the bar. + * + * @this {DebugBar} + * @param {string} [datasetId] Defaults to the dataset currently shown + * @return {string} + */ + getSummary(datasetId) { + const sections = this.getSummarySections(datasetId); + if (!sections.length) { + return ''; + } + + const blocks = ['# PHP DebugBar summary']; + + // The raw uri in __meta is unmasked, so the request collector's masked one is + // used instead; it shows up as part of its own section. The client ip is left + // out for the same reason: summaries are made to be pasted elsewhere. + // Keep this list in sync with SummaryFormatter::format(). + const meta = this.datasets[datasetId ?? this.activeDatasetId].__meta || {}; + const header = {}; + for (const key of ['id', 'datetime', 'method']) { + if (meta[key]) { + header[key] = meta[key]; + } + } + if (Object.keys(header).length) { + blocks.push(formatSummary(header)); + } + + for (const section of sections) { + blocks.push(`## ${section.title}\n${section.text}`); + } + + return blocks.join('\n\n'); + } + /** * Sets the handler to open past dataset * diff --git a/resources/dist/debugbar.min.css b/resources/dist/debugbar.min.css index b1efa9ef..76ed25fa 100644 --- a/resources/dist/debugbar.min.css +++ b/resources/dist/debugbar.min.css @@ -1,4 +1,4 @@ -:root{--debugbar-icon-adjustments: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2010a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%204v4%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2012v8%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2016a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%204v10%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2018v2%22%20%2F%3E%20%3Cpath%20d%3D%22M16%207a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%204v1%22%20%2F%3E%20%3Cpath%20d%3D%22M18%209v11%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-adjustments-horizontal: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%206a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206l8%200%22%20%2F%3E%20%3Cpath%20d%3D%22M16%206l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2012a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012l2%200%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2012l10%200%22%20%2F%3E%20%3Cpath%20d%3D%22M15%2018a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2018l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M19%2018l1%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrow-right: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2012l14%200%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2018l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M13%206l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-left-right: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2017l-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2010l-3%20-3l3%20-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207l18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2020l3%20-3l-3%20-3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bolt: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%203l0%207l6%200l-8%2011l0%20-7l-6%200l8%20-11%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bookmark: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M18%207v14l-6%20-4l-6%204v-14a4%204%200%200%201%204%20-4h4a4%204%200%200%201%204%204%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-box: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l8%20-4.5%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l0%209%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l-8%20-4.5%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-briefcase: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%209a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v9a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-9%22%20%2F%3E%20%3Cpath%20d%3D%22M8%207v-2a2%202%200%200%201%202%20-2h4a2%202%200%200%201%202%202v2%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2013a20%2020%200%200%200%2018%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bug: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209v-1a3%203%200%200%201%206%200v1%22%20%2F%3E%20%3Cpath%20d%3D%22M8%209h8a6%206%200%200%201%201%203v3a5%205%200%200%201%20-10%200v-3a6%206%200%200%201%201%20-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2013l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2013l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2020l0%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2019l3.35%20-2%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2019l-3.35%20-2%22%20%2F%3E%20%3Cpath%20d%3D%22M4%207l3.75%202.4%22%20%2F%3E%20%3Cpath%20d%3D%22M20%207l-3.75%202.4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-calendar: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%207a2%202%200%200%201%202%20-2h12a2%202%200%200%201%202%202v12a2%202%200%200%201%20-2%202h-12a2%202%200%200%201%20-2%20-2v-12%22%20%2F%3E%20%3Cpath%20d%3D%22M16%203v4%22%20%2F%3E%20%3Cpath%20d%3D%22M8%203v4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2011h16%22%20%2F%3E%20%3Cpath%20d%3D%22M11%2015h1%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2015v3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chart-infographic: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207a4%204%200%201%200%208%200a4%204%200%201%200%20-8%200%22%20%2F%3E%20%3Cpath%20d%3D%22M7%203v4h4%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2017l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2014l0%207%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2013l0%208%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2012l0%209%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-clock: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2012a9%209%200%201%200%2018%200a9%209%200%200%200%20-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%207v5l3%203%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-code: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M7%208l-4%204l4%204%22%20%2F%3E%20%3Cpath%20d%3D%22M17%208l4%204l-4%204%22%20%2F%3E%20%3Cpath%20d%3D%22M14%204l-4%2016%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-database: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206a8%203%200%201%200%2016%200a8%203%200%201%200%20-16%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206v6a8%203%200%200%200%2016%200v-6%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012v6a8%203%200%200%200%2016%200v-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-file-code: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M14%203v4a1%201%200%200%200%201%201h4%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2021h-10a2%202%200%200%201%20-2%20-2v-14a2%202%200%200%201%202%20-2h7l5%205v11a2%202%200%200%201%20-2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2013l-1%202l1%202%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2013l1%202l-1%202%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-flag: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%205a5%205%200%200%201%207%200a5%205%200%200%200%207%200v9a5%205%200%200%201%20-7%200a5%205%200%200%200%20-7%200v-9%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2021v-7%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-history: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%208l0%204l2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M3.05%2011a9%209%200%201%201%20.5%204m-.5%205v-5h5%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-inbox: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206a2%202%200%200%201%202%20-2h12a2%202%200%200%201%202%202v12a2%202%200%200%201%20-2%202h-12a2%202%200%200%201%20-2%20-2l0%20-12%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2013h3l3%203h4l3%20-3h3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-leaf: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2021c.5%20-4.5%202.5%20-8%207%20-10%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018c6.218%200%2010.5%20-3.288%2011%20-12v-2h-4.014c-9%200%20-11.986%204%20-12%209c0%201%200%203%202%205h3l.014%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-list: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%206l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2012l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M5%206l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2012l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2018l0%20.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-logs: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2018h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2018h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2012h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%206h2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%206h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2012h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2018h6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-mobiledata: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2012v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2020v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%207l3%20-3l3%203%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2017l3%203l3%20-3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-search: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010a7%207%200%201%200%2014%200a7%207%200%201%200%20-14%200%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2021l-6%20-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-server-cog: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-2%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2020h-6a3%203%200%200%201%20-3%20-3v-2a3%203%200%200%201%203%20-3h10.5%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2018a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2014.5v1.5%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2020v1.5%22%20%2F%3E%20%3Cpath%20d%3D%22M21.032%2016.25l-1.299%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M16.27%2019l-1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M14.97%2016.25l1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M19.733%2019l1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M7%208v.01%22%20%2F%3E%20%3Cpath%20d%3D%22M7%2016v.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-share-3: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%204v4c-6.575%201.028%20-9.02%206.788%20-10%2012c-.037%20.206%205.384%20-5.962%2010%20-6v4l8%20-7l-8%20-7%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-tags: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%208v4.172a2%202%200%200%200%20.586%201.414l5.71%205.71a2.41%202.41%200%200%200%203.408%200l3.592%20-3.592a2.41%202.41%200%200%200%200%20-3.408l-5.71%20-5.71a2%202%200%200%200%20-1.414%20-.586h-4.172a2%202%200%200%200%20-2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2019l1.592%20-1.592a4.82%204.82%200%200%200%200%20-6.816l-4.592%20-4.592%22%20%2F%3E%20%3Cpath%20d%3D%22M7%2010h-.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-x: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M18%206l-12%2012%22%20%2F%3E%20%3Cpath%20d%3D%22M6%206l12%2012%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-maximize: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M16%204l4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2010l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2020l-4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2020l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2020l4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2014l6%206%22%20%2F%3E%20%3Cpath%20d%3D%22M8%204l-4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M4%204l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-minimize: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%209l4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M3%203l6%206%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2015l4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2021l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M19%209l-4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M15%209l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M19%2015l-4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M15%2015l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chevron-down: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M6%209l6%206l6%20-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chevron-up: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2015l6%20-6l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-folder-open: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2019l2.757%20-7.351a1%201%200%200%201%20.936%20-.649h12.307a1%201%200%200%201%20.986%201.164l-.996%205.211a2%202%200%200%201%20-1.964%201.625h-14.026a2%202%200%200%201%20-2%20-2v-11a2%202%200%200%201%202%20-2h4l3%203h7a2%202%200%200%201%202%202v2%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-brand-php: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2012a10%209%200%201%200%2020%200a10%209%200%201%200%20-20%200%22%20%2F%3E%20%3Cpath%20d%3D%22M5.5%2015l.395%20-1.974l.605%20-3.026h1.32a1%201%200%200%201%20.986%201.164l-.167%201a1%201%200%200%201%20-.986%20.836h-1.653%22%20%2F%3E%20%3Cpath%20d%3D%22M15.5%2015l.395%20-1.974l.605%20-3.026h1.32a1%201%200%200%201%20.986%201.164l-.167%201a1%201%200%200%201%20-.986%20.836h-1.653%22%20%2F%3E%20%3Cpath%20d%3D%22M12%207.5l-1%205.5%22%20%2F%3E%20%3Cpath%20d%3D%22M11.6%2010h2.4l-.5%203%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-refresh: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2011a8.1%208.1%200%200%200%20-15.5%20-2m-.5%20-4v4h4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2013a8.1%208.1%200%200%200%2015.5%202m.5%204v-4h-4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-cpu: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209h6v6h-6l0%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010h2%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2014h2%22%20%2F%3E%20%3Cpath%20d%3D%22M10%203v2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%203v2%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2010h-2%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2014h-2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2021v-2%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2021v-2%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-table: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%205a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v14a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2v-14%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010h18%22%20%2F%3E%20%3Cpath%20d%3D%22M10%203v18%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-link: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2015l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M11%206l.463%20-.536a5%205%200%200%201%207.071%207.072l-.534%20.464%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2018l-.397%20.534a5.068%205.068%200%200%201%20-7.127%200a4.972%204.972%200%200%201%200%20-7.071l.524%20-.463%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-copy: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M7%209.667a2.667%202.667%200%200%201%202.667%20-2.667h8.666a2.667%202.667%200%200%201%202.667%202.667v8.666a2.667%202.667%200%200%201%20-2.667%202.667h-8.666a2.667%202.667%200%200%201%20-2.667%20-2.667l0%20-8.666%22%20%2F%3E%20%3Cpath%20d%3D%22M4.012%2016.737a2.005%202.005%200%200%201%20-1.012%20-1.737v-10c0%20-1.1%20.9%20-2%202%20-2h10c.75%200%201.158%20.385%201.5%201%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-circle-check: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2012a9%209%200%201%200%2018%200a9%209%200%201%200%20-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2012l2%202l4%20-4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-external-link: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%206h-6a2%202%200%200%200%20-2%202v10a2%202%200%200%200%202%202h10a2%202%200%200%200%202%20-2v-6%22%20%2F%3E%20%3Cpath%20d%3D%22M11%2013l9%20-9%22%20%2F%3E%20%3Cpath%20d%3D%22M15%204h5v5%22%20%2F%3E%20%3C%2Fsvg%3E)}.phpdebugbar-icon-adjustments:before{-webkit-mask-image:var(--debugbar-icon-adjustments);mask-image:var(--debugbar-icon-adjustments)}.phpdebugbar-icon-adjustments-horizontal:before{-webkit-mask-image:var(--debugbar-icon-adjustments-horizontal);mask-image:var(--debugbar-icon-adjustments-horizontal)}.phpdebugbar-icon-arrow-right:before{-webkit-mask-image:var(--debugbar-icon-arrow-right);mask-image:var(--debugbar-icon-arrow-right)}.phpdebugbar-icon-arrows-left-right:before{-webkit-mask-image:var(--debugbar-icon-arrows-left-right);mask-image:var(--debugbar-icon-arrows-left-right)}.phpdebugbar-icon-bolt:before{-webkit-mask-image:var(--debugbar-icon-bolt);mask-image:var(--debugbar-icon-bolt)}.phpdebugbar-icon-bookmark:before{-webkit-mask-image:var(--debugbar-icon-bookmark);mask-image:var(--debugbar-icon-bookmark)}.phpdebugbar-icon-box:before{-webkit-mask-image:var(--debugbar-icon-box);mask-image:var(--debugbar-icon-box)}.phpdebugbar-icon-briefcase:before{-webkit-mask-image:var(--debugbar-icon-briefcase);mask-image:var(--debugbar-icon-briefcase)}.phpdebugbar-icon-bug:before{-webkit-mask-image:var(--debugbar-icon-bug);mask-image:var(--debugbar-icon-bug)}.phpdebugbar-icon-calendar:before{-webkit-mask-image:var(--debugbar-icon-calendar);mask-image:var(--debugbar-icon-calendar)}.phpdebugbar-icon-chart-infographic:before{-webkit-mask-image:var(--debugbar-icon-chart-infographic);mask-image:var(--debugbar-icon-chart-infographic)}.phpdebugbar-icon-clock:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}.phpdebugbar-icon-code:before{-webkit-mask-image:var(--debugbar-icon-code);mask-image:var(--debugbar-icon-code)}.phpdebugbar-icon-database:before{-webkit-mask-image:var(--debugbar-icon-database);mask-image:var(--debugbar-icon-database)}.phpdebugbar-icon-file-code:before{-webkit-mask-image:var(--debugbar-icon-file-code);mask-image:var(--debugbar-icon-file-code)}.phpdebugbar-icon-flag:before{-webkit-mask-image:var(--debugbar-icon-flag);mask-image:var(--debugbar-icon-flag)}.phpdebugbar-icon-history:before{-webkit-mask-image:var(--debugbar-icon-history);mask-image:var(--debugbar-icon-history)}.phpdebugbar-icon-inbox:before{-webkit-mask-image:var(--debugbar-icon-inbox);mask-image:var(--debugbar-icon-inbox)}.phpdebugbar-icon-leaf:before{-webkit-mask-image:var(--debugbar-icon-leaf);mask-image:var(--debugbar-icon-leaf)}.phpdebugbar-icon-list:before{-webkit-mask-image:var(--debugbar-icon-list);mask-image:var(--debugbar-icon-list)}.phpdebugbar-icon-logs:before{-webkit-mask-image:var(--debugbar-icon-logs);mask-image:var(--debugbar-icon-logs)}.phpdebugbar-icon-mobiledata:before{-webkit-mask-image:var(--debugbar-icon-mobiledata);mask-image:var(--debugbar-icon-mobiledata)}.phpdebugbar-icon-search:before{-webkit-mask-image:var(--debugbar-icon-search);mask-image:var(--debugbar-icon-search)}.phpdebugbar-icon-server-cog:before{-webkit-mask-image:var(--debugbar-icon-server-cog);mask-image:var(--debugbar-icon-server-cog)}.phpdebugbar-icon-share-3:before{-webkit-mask-image:var(--debugbar-icon-share-3);mask-image:var(--debugbar-icon-share-3)}.phpdebugbar-icon-tags:before{-webkit-mask-image:var(--debugbar-icon-tags);mask-image:var(--debugbar-icon-tags)}.phpdebugbar-icon-x:before{-webkit-mask-image:var(--debugbar-icon-x);mask-image:var(--debugbar-icon-x)}.phpdebugbar-icon-arrows-maximize:before{-webkit-mask-image:var(--debugbar-icon-arrows-maximize);mask-image:var(--debugbar-icon-arrows-maximize)}.phpdebugbar-icon-arrows-minimize:before{-webkit-mask-image:var(--debugbar-icon-arrows-minimize);mask-image:var(--debugbar-icon-arrows-minimize)}.phpdebugbar-icon-chevron-down:before{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}.phpdebugbar-icon-chevron-up:before{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}.phpdebugbar-icon-folder-open:before{-webkit-mask-image:var(--debugbar-icon-folder-open);mask-image:var(--debugbar-icon-folder-open)}.phpdebugbar-icon-brand-php:before{-webkit-mask-image:var(--debugbar-icon-brand-php);mask-image:var(--debugbar-icon-brand-php)}.phpdebugbar-icon-refresh:before{-webkit-mask-image:var(--debugbar-icon-refresh);mask-image:var(--debugbar-icon-refresh)}.phpdebugbar-icon-cpu:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}.phpdebugbar-icon-table:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}.phpdebugbar-icon-link:before{-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link)}.phpdebugbar-icon-copy:before{-webkit-mask-image:var(--debugbar-icon-copy);mask-image:var(--debugbar-icon-copy)}.phpdebugbar-icon-circle-check:before{-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}.phpdebugbar-icon-external-link:before{-webkit-mask-image:var(--debugbar-icon-external-link);mask-image:var(--debugbar-icon-external-link)}@media print{div.phpdebugbar{display:none}}div.phpdebugbar,div.phpdebugbar-openhandler,div.phpdebugbar-widgets-datasets-panel{--debugbar-background: #F7F7F7;--debugbar-background-alt: #EFEFEF;--debugbar-text: #222;--debugbar-text-muted: #888;--debugbar-border: #eee;--debugbar-header: #efefef;--debugbar-header-text: #555;--debugbar-header-border: #ddd;--debugbar-active: #ccc;--debugbar-active-text: #666;--debugbar-icons: #555;--debugbar-badge: #ccc;--debugbar-badge-text: #555;--debugbar-badge-active: #477e96;--debugbar-badge-active-text: #fff;--debugbar-link: #888;--debugbar-hover: #aaa;--debugbar-accent: #6BB7D8;--debugbar-accent-border: #477e96;--debugbar-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--debugbar-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--debugbar-icon-brand: var(--debugbar-icon-brand-php)}div.phpdebugbar[data-theme=dark],div.phpdebugbar-openhandler[data-theme=dark],div.phpdebugbar-widgets-datasets-panel[data-theme=dark]{--debugbar-background: #2a2a2a;--debugbar-background-alt: #333333;--debugbar-text: #e0e0e0;--debugbar-text-muted: #aaaaaa;--debugbar-border: #3a3a3a;--debugbar-header: #1e1e1e;--debugbar-header-text: #cccccc;--debugbar-header-border: #444;--debugbar-active: #444;--debugbar-active-text: #e0e0e0;--debugbar-icons: #cccccc;--debugbar-badge: #444;--debugbar-badge-text: #cccccc;--debugbar-badge-active: #4F8FB3;--debugbar-badge-active-text: #1e1e1e;--debugbar-accent: #4F8FB3;--debugbar-accent-border: #3F7A94;--debugbar-link: #aaaaaa;--debugbar-hover: #888888}div.phpdebugbar{position:fixed;bottom:0;left:0;width:100%;border-top:0;font-family:var(--debugbar-font-sans);background:var(--debugbar-background);z-index:100000000;font-size:13px;color:var(--debugbar-text);text-align:left;line-height:1.2em;letter-spacing:normal;direction:ltr}div.phpdebugbar.phpdebugbar-fullscreen,div.phpdebugbar.phpdebugbar-fullscreen[data-toolbarPosition=top]{top:0;bottom:0;display:flex;flex-direction:column}div.phpdebugbar.phpdebugbar-fullscreen .phpdebugbar-body{flex:1;height:calc(100% - 32px)!important}div.phpdebugbar.phpdebugbar-fullscreen .phpdebugbar-resize-handle{display:none}.phpdebugbar [hidden]{display:none!important}div.phpdebugbar[data-openBtnPosition=bottomRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=topRight].phpdebugbar-closed{left:auto;right:0}div.phpdebugbar[data-openBtnPosition=topRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=topLeft].phpdebugbar-closed{bottom:auto;top:0;border-bottom:1px solid var(--debugbar-header-border)}div.phpdebugbar[data-openBtnPosition=bottomRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=bottomLeft].phpdebugbar-closed{border-top:1px solid var(--debugbar-header-border)}.phpdebugbar-closed[data-openBtnPosition=bottomLeft],.phpdebugbar-closed[data-openBtnPosition=topLeft]{border-right:1px solid var(--debugbar-header-border)}.phpdebugbar-closed[data-openBtnPosition=bottomRight],.phpdebugbar-closed[data-openBtnPosition=topRight]{border-left:1px solid var(--debugbar-header-border)}div.phpdebugbar a,div.phpdebugbar-openhandler{cursor:pointer}div.phpdebugbar-drag-capture{position:fixed;inset:0;z-index:100000001;background:none;display:none;cursor:row-resize}div.phpdebugbar-closed{width:auto}div.phpdebugbar *{margin:0;padding:0;border:0;font-weight:400;text-decoration:none;clear:initial;width:auto;direction:ltr;text-align:left;-moz-box-sizing:content-box;box-sizing:content-box}div.phpdebugbar select,div.phpdebugbar input{appearance:auto}div.phpdebugbar ol,div.phpdebugbar ul{list-style:none}div.phpdebugbar ul li,div.phpdebugbar ol li,div.phpdebugbar dl li{line-height:normal}div.phpdebugbar table,.phpdebugbar-openhandler table{border-collapse:collapse;border-spacing:0;color:inherit}div.phpdebugbar input[type=text],div.phpdebugbar input[type=password],div.phpdebugbar select{font-family:var(--debugbar-font-sans);background:var(--debugbar-background);font-size:14px;color:var(--debugbar-text);padding:0;border:1px solid var(--debugbar-border);border-radius:.25rem;margin:0}div.phpdebugbar code,div.phpdebugbar pre,div.phpdebugbar samp{background:none;font-family:var(--debugbar-font-mono);font-size:1em;border:0!important;padding:0;margin:0}div.phpdebugbar code,div.phpdebugbar pre{color:var(--debugbar-text)}div.phpdebugbar pre.sf-dump{background:none!important;z-index:0!important;display:block!important;color:#a0a000;outline:0}div.phpdebugbar pre.sf-dump .sf-dump-private{color:gray}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-public{color:#fc0}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-protected{color:#a0a000}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-private{color:#9d9266}a.phpdebugbar-restore-btn{float:left;padding:4px;font-size:14px;color:var(--debugbar-icons);text-decoration:none;width:24px;height:24px}div.phpdebugbar-resize-handle{height:4px;margin-top:-4px;width:100%;background:none;border-bottom:1px solid var(--debugbar-header-border);cursor:row-resize}div.phpdebugbar-minimized div.phpdebugbar-resize-handle{cursor:auto}div.phpdebugbar-resize-handle.phpdebugbar-resize-handle-bottom{margin-top:4px}div.phpdebugbar-minimized{border-top:1px solid var(--debugbar-header-border)}div.phpdebugbar-minimized[data-toolbarPosition=top]{border-top:0;border-bottom:1px solid var(--debugbar-header-border)}div.phpdebugbar[data-toolbarPosition=top]{bottom:auto;top:0}div.phpdebugbar[data-toolbarPosition=top] div.phpdebugbar-resize-handle-top{height:0;display:none}div.phpdebugbar[data-toolbarPosition=top] div.phpdebugbar-resize-handle-bottom{margin-top:0}div.phpdebugbar[data-toolbarPosition=bottom] div.phpdebugbar-resize-handle-bottom{height:0;margin-top:0}a.phpdebugbar-restore-btn:after{-webkit-mask-image:var(--debugbar-icon-brand);mask-image:var(--debugbar-icon-brand);-webkit-mask-size:20px 20px;mask-size:20px 20px;background-color:var(--debugbar-icons)}div.phpdebugbar-header{background-color:var(--debugbar-header);min-height:32px;line-height:16px}div.phpdebugbar-header:before,div.phpdebugbar-header:after{display:table;line-height:0;content:""}div.phpdebugbar-header:after{clear:both}div.phpdebugbar-header-left{float:left}div.phpdebugbar-header-right{float:right}div.phpdebugbar-header>div>*{padding:5px;font-size:13px;height:22px;color:var(--debugbar-header-text);text-decoration:none}div.phpdebugbar-header-left>*,div.phpdebugbar-header-right>*{line-height:0;display:flex;align-items:center}div.phpdebugbar-header-left>*{float:left}div.phpdebugbar-header-right>*{float:right}div.phpdebugbar-header-right select{padding:0;line-height:1em;background-color:var(--debugbar-header);color:var(--debugbar-header-text)}span.phpdebugbar-indicator,a.phpdebugbar-indicator{border-right:1px solid var(--debugbar-header-border)}.phpdebugbar[data-hideEmptyTabs=true] .phpdebugbar-tab[data-empty=true]:not(.phpdebugbar-active){display:none}a.phpdebugbar-tab.phpdebugbar-active{background:var(--debugbar-active);color:var(--debugbar-active-text)}a.phpdebugbar-tab .phpdebugbar-text{font-size:14px}a.phpdebugbar-tab span.phpdebugbar-badge{display:none;margin-left:5px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge);border-radius:4px;color:var(--debugbar-badge-text);font-weight:400;text-shadow:none}a.phpdebugbar-tab.phpdebugbar-active span.phpdebugbar-badge{background:var(--debugbar-badge-active);color:var(--debugbar-badge-active-text)}a.phpdebugbar-tab i{display:none;vertical-align:middle}.phpdebugbar-icon,i.phpdebugbar-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.phpdebugbar-icon:before,i.phpdebugbar-icon:before{content:"";display:block;justify-content:center;flex-shrink:0;width:1.3em;height:1.3em;background-size:contain;background-repeat:no-repeat;background-position:center;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}.phpdebugbar-icon-brand:before{-webkit-mask-image:var(--debugbar-icon-brand);mask-image:var(--debugbar-icon-brand)}a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-visible{display:inline}a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-important{background:#ed6868;color:#fff}a.phpdebugbar-close-btn,a.phpdebugbar-open-btn,a.phpdebugbar-fullscreen-btn,a.phpdebugbar-minimize-btn,a.phpdebugbar-maximize-btn,a.phpdebugbar-tab.phpdebugbar-tab-history,a.phpdebugbar-tab.phpdebugbar-tab-settings{width:16px;height:22px;position:relative}a.phpdebugbar-close-btn:after,a.phpdebugbar-open-btn:after,a.phpdebugbar-restore-btn:after,a.phpdebugbar-fullscreen-btn:after,a.phpdebugbar-minimize-btn:after,a.phpdebugbar-maximize-btn:after{content:" ";display:block;left:0;position:absolute;top:0;width:100%;height:100%;background-color:var(--debugbar-icons);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:18px 18px;mask-size:18px 18px}a.phpdebugbar-restore-btn:after{-webkit-mask-size:24px 24px;mask-size:24px 24px;mask-repeat:no-repeat;mask-position:center;position:relative}a.phpdebugbar-minimize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}a.phpdebugbar-maximize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}div.phpdebugbar[data-toolbarPosition=top] a.phpdebugbar-minimize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}div.phpdebugbar[data-toolbarPosition=top] a.phpdebugbar-maximize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}a.phpdebugbar-close-btn:after{-webkit-mask-image:var(--debugbar-icon-x);mask-image:var(--debugbar-icon-x)}a.phpdebugbar-fullscreen-btn:after{-webkit-mask-image:var(--debugbar-icon-arrows-maximize);mask-image:var(--debugbar-icon-arrows-maximize)}div.phpdebugbar.phpdebugbar-fullscreen a.phpdebugbar-fullscreen-btn:after{-webkit-mask-image:var(--debugbar-icon-arrows-minimize);mask-image:var(--debugbar-icon-arrows-minimize)}a.phpdebugbar-open-btn:after{-webkit-mask-image:var(--debugbar-icon-folder-open);mask-image:var(--debugbar-icon-folder-open)}.phpdebugbar-indicator{position:relative;cursor:pointer}.phpdebugbar-indicator span.phpdebugbar-text{margin-left:5px}.phpdebugbar-indicator span.phpdebugbar-tooltip{display:none;position:absolute;bottom:38px;background:var(--debugbar-header);border:1px solid var(--debugbar-header-border);color:var(--debugbar-header-text);font-size:11px;padding:2px 6px;z-index:100000001;text-align:center;white-space:nowrap;right:0;line-height:1.5;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.phpdebugbar-indicator:hover span.phpdebugbar-tooltip:not(.phpdebugbar-disabled){display:block}.phpdebugbar-indicator span.phpdebugbar-tooltip dl{display:grid;grid-gap:4px 10px;grid-template-columns:max-content}.phpdebugbar-indicator span.phpdebugbar-tooltip dl dt{font-weight:700;text-align:left}.phpdebugbar-indicator span.phpdebugbar-tooltip dl dd{margin:0;grid-column-start:2;text-align:left}.phpdebugbar .phpdebugbar-datasets-switcher{float:right}.phpdebugbar .phpdebugbar-datasets-switcher select{max-width:200px;height:22px;padding:4px 0;border:none}.phpdebugbar button,.phpdebugbar-openhandler button{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;margin:0 5px;padding:0 12px;height:20px;line-height:normal;cursor:pointer}div.phpdebugbar-body{border-top:1px solid var(--debugbar-header-border);position:relative;height:300px}div.phpdebugbar-panel{height:100%;overflow:auto;width:100%}div.phpdebugbar-panel.phpdebugbar-active{display:block}div.phpdebugbar-mini-design a.phpdebugbar-tab{position:relative;border-right:1px solid var(--debugbar-header-border)}div.phpdebugbar-mini-design a.phpdebugbar-tab span.phpdebugbar-text{display:none}div.phpdebugbar-mini-design a.phpdebugbar-tab:hover span.phpdebugbar-text{display:block;position:absolute;top:-30px;background:var(--debugbar-background);opacity:1;border:1px solid var(--debugbar-header-border);color:var(--debugbar-header-text);font-size:11px;padding:2px 6px;z-index:100000001;text-align:center;right:0;line-height:1.5;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}div.phpdebugbar-mini-design a.phpdebugbar-tab i{display:inline-block}a.phpdebugbar-tab.phpdebugbar-tab-history{width:auto;min-width:22px}a.phpdebugbar-tab.phpdebugbar-tab-history,a.phpdebugbar-tab.phpdebugbar-tab-settings{display:flex;justify-content:center;align-items:center}a.phpdebugbar-tab.phpdebugbar-tab-history .phpdebugbar-text,a.phpdebugbar-tab.phpdebugbar-tab-settings .phpdebugbar-text{display:none;white-space:nowrap}a.phpdebugbar-tab.phpdebugbar-tab-history i,a.phpdebugbar-tab.phpdebugbar-tab-settings i{display:inline-block}.phpdebugbar-widgets-dataset-history table{width:100%;table-layout:fixed}.phpdebugbar-widgets-dataset-history table th{font-weight:700}.phpdebugbar-widgets-dataset-history table td,.phpdebugbar-widgets-dataset-history table th{padding:6px 3px;border-bottom:1px solid var(--debugbar-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phpdebugbar-widgets-dataset-history table td a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phpdebugbar-widgets-dataset-history table tr.phpdebugbar-widgets-active{background:var(--debugbar-active);color:var(--debugbar-active-text)}.phpdebugbar-widgets-dataset-history span.phpdebugbar-badge{margin:0 5px 0 2px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge);border-radius:4px;color:var(--debugbar-badge-text);font-weight:400;text-shadow:none;vertical-align:middle}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions{text-align:center;padding:7px 0;position:sticky;top:0;background:var(--debugbar-background)}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions a{margin:0 10px}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions input{margin:5px}.phpdebugbar-settings .phpdebugbar-form-row{display:block;border-top:1px solid var(--debugbar-border);min-height:17px;padding:5px 10px}.phpdebugbar-settings .phpdebugbar-form-label{width:200px;font-weight:700;display:inline-block;clear:none}.phpdebugbar-settings .phpdebugbar-form-input{font-weight:700;display:inline-block;clear:none}.phpdebugbar-settings input[type=text],.phpdebugbar-settings select{margin:0 5px;min-width:200px}.phpdebugbar-settings input[type=checkbox]{margin:0 5px}pre.phpdebugbar-widgets-code-block{white-space:pre;word-wrap:normal;overflow:hidden}pre.phpdebugbar-widgets-code-block code{display:block;overflow-x:auto;overflow-y:hidden}pre.phpdebugbar-widgets-code-block code.phpdebugbar-widgets-numbered-code{padding:5px;line-height:normal}pre.phpdebugbar-widgets-code-block ul li.phpdebugbar-widgets-highlighted-line{font-weight:bolder;text-decoration:underline}pre.phpdebugbar-widgets-code-block ul li.phpdebugbar-widgets-highlighted-line span{position:absolute;background:var(--debugbar-text);min-width:calc(100% - 85px);margin-left:10px;opacity:.15}pre.phpdebugbar-widgets-code-block ul{position:static;float:left;padding:5px;border-right:1px solid var(--debugbar-header-border);text-align:right}.phpdebugbar-widgets-kvlist span.phpdebugbar-widgets-filename,li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename,table.phpdebugbar-widgets-tablevar span.phpdebugbar-widgets-filename{display:block;font-style:italic;float:right;margin-left:8px;color:var(--debugbar-link)}a.phpdebugbar-widgets-editor-link,a.phpdebugbar-widgets-external-link{color:var(--debugbar-link)}.phpdebugbar-widgets-kvlist span.phpdebugbar-widgets-filename:hover,li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename:hover,a.phpdebugbar-widgets-editor-link:hover,a.phpdebugbar-widgets-external-link:hover{color:var(--debugbar-hover)}a.phpdebugbar-widgets-editor-link:before,a.phpdebugbar-widgets-copy-clipboard-check:before,a.phpdebugbar-widgets-external-link:after{content:"";display:inline-block;width:1em;height:1em;margin-left:4px;vertical-align:middle;-webkit-mask-image:var(--debugbar-icon-external-link);mask-image:var(--debugbar-icon-external-link);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}a.phpdebugbar-widgets-copy-clipboard-check:before{margin-left:0;margin-right:4px;-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}table.phpdebugbar-widgets-params{width:70%;margin:10px;border:1px solid var(--debugbar-border);font-family:var(--debugbar-font-mono);font-size:13px;border-collapse:collapse}table.phpdebugbar-widgets-params th{font-weight:700}table.phpdebugbar-widgets-params td{border:1px solid var(--debugbar-border);border-left:none;border-right:none;padding:0 5px}table.phpdebugbar-widgets-params .phpdebugbar-widgets-name{width:20%;font-weight:700;vertical-align:top}.phpdebugbar-widgets-truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.phpdebugbar-widgets-list{margin:0;padding:0;list-style:none;font-family:var(--debugbar-font-mono)}ul.phpdebugbar-widgets-list li.phpdebugbar-widgets-list-item{padding:7px 10px;border-bottom:1px solid var(--debugbar-border);position:relative;overflow:hidden}div.phpdebugbar-widgets-messages{position:relative;height:100%;overflow:hidden;display:flex;flex-direction:column}div.phpdebugbar-widgets-messages ul.phpdebugbar-widgets-list{padding-bottom:45px;flex:1;overflow-y:auto}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value{display:flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value:before{margin-right:8px;font-family:system-ui,sans-serif;font-size:1.25em;line-height:1;display:inline-flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success{color:#28a745}.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success{color:#56db3a}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success:before{content:"\2713"}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-alert:before{content:"\2139";color:#cbcf38}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-debug:before{color:#78d79a}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-warning:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-emergency:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-notice:before{content:"\26a0";color:#ecb03d}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-error,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-critical{color:red}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-error:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-critical:before{content:"\2716"}.phpdebugbar-widgets-params .phpdebugbar-widgets-value pre.sf-dump,dl.phpdebugbar-widgets-kvlist dd.phpdebugbar-widgets-value pre.sf-dump,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item pre.sf-dump{display:inline-block!important;padding-top:0;padding-left:0;padding-bottom:0}dl.phpdebugbar-widgets-kvlist dd.phpdebugbar-widgets-value pre.sf-dump{max-width:calc(100% - 5px)}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-collector,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-label{float:right;font-size:12px;padding:2px 4px;color:#888;margin:0 2px;text-decoration:none;text-shadow:none;background:none;font-weight:400}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-context-count{float:right;font-size:12px;padding:2px 4px;color:#888;margin:0 2px;text-decoration:none;text-shadow:none;background:none;font-weight:400;display:inline-flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-context-count:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-collector{color:#555;font-style:italic}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar{position:relative;flex-shrink:0;width:100%;background:var(--debugbar-header);color:var(--debugbar-text);border-top:1px solid var(--debugbar-border);border-bottom:0px;height:20px;padding:4px 0}div.phpdebugbar-widgets-messages li .phpdebugbar-widgets-label-called-from{float:right;color:var(--debugbar-text-muted);padding-left:5px;border-bottom:1px dotted var(--debugbar-border)}div.phpdebugbar-widgets-messages li .phpdebugbar-widgets-label-called-from:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar input{border:0;margin:0 0 0 7px;width:30%;box-shadow:none;border-radius:3px;padding:2px 6px;height:15px}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar input:focus{outline:none}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter{float:right;font-size:12px;padding:2px 4px;background:#7cacd5;margin:0 2px;border-radius:4px;color:var(--debugbar-background);text-decoration:none}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter.phpdebugbar-widgets-excluded{background:var(--debugbar-active);color:var(--debugbar-text-muted)}dl.phpdebugbar-widgets-kvlist{margin:0;display:grid;grid-template-columns:minmax(160px,15%) minmax(0,1fr)}dl.phpdebugbar-widgets-kvlist dt{grid-column:1;min-width:0;padding:5px 10px;border-top:1px solid var(--debugbar-border);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}dl.phpdebugbar-widgets-kvlist dd{grid-column:2;margin:0;padding:5px 10px;border-top:1px solid var(--debugbar-border);cursor:pointer;min-height:17px;overflow-wrap:anywhere;overflow-x:auto}dl.phpdebugbar-widgets-varlist,dl.phpdebugbar-widgets-jsonvarlist,dl.phpdebugbar-widgets-htmlvarlist{font-family:var(--debugbar-font-mono)}dl.phpdebugbar-widgets-jsonvarlist dd,dl.phpdebugbar-widgets-htmlvarlist dd{cursor:initial}ul.phpdebugbar-widgets-timeline{margin:0;padding:0;list-style:none}ul.phpdebugbar-widgets-timeline .phpdebugbar-widgets-measure{height:20px;position:relative;border:none;display:block}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label,ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-collector{position:absolute;font-size:12px;font-family:var(--debugbar-font-mono);color:var(--debugbar-text);top:4px;left:5px;background:none;text-shadow:none;font-weight:400;white-space:pre}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-collector{left:initial;right:5px}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-value{display:block;position:absolute;height:calc(100% - 4px);background-color:var(--debugbar-accent);border-bottom:2px solid var(--debugbar-accent-border);top:2px;border-radius:3px;min-width:2px}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item{cursor:pointer}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-message{display:block;color:red}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-type{display:block;position:absolute;right:4px;top:4px;font-weight:700}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item pre.phpdebugbar-widgets-file{margin:10px;padding:5px;border:1px solid var(--debugbar-border);font-family:var(--debugbar-font-mono)}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename{float:none}div.phpdebugbar[data-theme=dark] code.phpdebugbar-widgets-sql,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-name,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-key,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-success>pre.sf-dump>.sf-dump-note{color:#fdfd96}table.phpdebugbar-widgets-tablevar{width:100%;table-layout:auto;font-size:1em}table.phpdebugbar-widgets-tablevar td:first-child{width:150px;white-space:nowrap;font-family:var(--debugbar-font-mono)}table.phpdebugbar-widgets-tablevar td.phpdebugbar-widgets-editor{width:5%;white-space:nowrap;text-align:right}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td{font-weight:700}table.phpdebugbar-widgets-tablevar td{padding:2px 4px;border-bottom:1px solid var(--debugbar-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td{position:sticky;inset-inline-start:0px;background:var(--debugbar-background);border-bottom:none;z-index:1;top:0;bottom:0}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td:after,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--debugbar-border)}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td:after{bottom:auto;top:0}div.phpdebugbar span.phpdebugbar-widgets-badge{margin:0 5px 0 8px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge-active);border-radius:4px;color:var(--debugbar-badge-active-text);font-weight:400;text-shadow:none;vertical-align:middle}.phpdebugbar .phpdebugbar-widgets-datasets-switcher-widget{position:relative;float:right;display:flex;padding:0!important;margin:0!important;height:32px;align-items:center}.phpdebugbar .phpdebugbar-widgets-datasets-badge{position:relative;display:flex;align-items:center;gap:6px;padding:0 10px;height:32px;background:var(--debugbar-header);color:var(--debugbar-header-text);cursor:pointer;font-size:12px;line-height:normal;transition:background-color .15s;font-family:var(--debugbar-font-sans);border-right:1px solid var(--debugbar-header-border)}.phpdebugbar .phpdebugbar-widgets-datasets-badge:hover{background:var(--debugbar-active)}.phpdebugbar .phpdebugbar-widgets-datasets-badge-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:9px;font-weight:600;font-size:11px}.phpdebugbar .phpdebugbar-widgets-datasets-badge-count[hidden]{display:none}.phpdebugbar .phpdebugbar-widgets-datasets-badge-url{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-panel{position:fixed;width:600px;background:var(--debugbar-background);border:1px solid var(--debugbar-border);box-shadow:0 2px 8px #0000001a;overflow:hidden;z-index:100000001}.phpdebugbar-widgets-datasets-panel-toolbar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--debugbar-background-alt);border-bottom:1px solid var(--debugbar-border);font-size:12px;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-autoshow{display:flex;align-items:center;gap:4px;cursor:pointer;color:var(--debugbar-text);white-space:nowrap;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-autoshow input[type=checkbox]{cursor:pointer;margin:0}.phpdebugbar-widgets-datasets-clear-btn,.phpdebugbar-widgets-datasets-showall-btn{color:var(--debugbar-link);text-decoration:none;cursor:pointer;white-space:nowrap;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-clear-btn:hover,.phpdebugbar-widgets-datasets-showall-btn:hover{color:var(--debugbar-hover);text-decoration:underline}.phpdebugbar-widgets-datasets-refresh-btn{color:var(--debugbar-text-muted);text-decoration:none;cursor:pointer;white-space:nowrap;font-size:14px;display:inline-flex;align-items:center}.phpdebugbar-widgets-datasets-refresh-btn[hidden]{display:none}.phpdebugbar-widgets-datasets-refresh-btn:hover,.phpdebugbar-widgets-datasets-refresh-btn.phpdebugbar-widgets-active{color:var(--debugbar-text)}.phpdebugbar-widgets-datasets-refresh-btn.phpdebugbar-widgets-active i{animation:phpdebugbar-spin 2s linear infinite}@keyframes phpdebugbar-spin{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.phpdebugbar-widgets-datasets-search{flex:1;padding:3px 8px;font-size:11px;min-width:120px;border:1px solid var(--debugbar-border);background:var(--debugbar-background);color:var(--debugbar-text);border-radius:2px;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-list{max-height:300px;overflow-y:auto}.phpdebugbar-widgets-datasets-list-item{display:grid;grid-template-columns:45px 50px 1fr auto auto auto;gap:6px;padding:5px 10px;border-bottom:1px solid var(--debugbar-border);cursor:pointer;transition:background-color .1s;align-items:center;font-size:11px}.phpdebugbar-widgets-datasets-list-item[hidden]{display:none}.phpdebugbar-widgets-datasets-list-item:hover{background:var(--debugbar-background-alt)}.phpdebugbar-widgets-datasets-list-item.phpdebugbar-widgets-active{background:var(--debugbar-active);font-weight:500}.phpdebugbar-widgets-datasets-item-nb{color:var(--debugbar-text-muted);font-weight:600;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-copy-id{cursor:pointer;color:var(--debugbar-text-muted);display:inline-flex;align-items:center;margin-right:-4px;position:relative}.phpdebugbar-widgets-datasets-item-copy-id i{font-size:12px}.phpdebugbar-widgets-datasets-item-copy-id:hover{color:var(--debugbar-text)}.phpdebugbar-widgets-datasets-item-copy-id.phpdebugbar-widgets-copied{color:var(--debugbar-success, #28a745)}.phpdebugbar-widgets-datasets-item-time{color:var(--debugbar-text-muted);font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-request{display:flex;gap:6px;align-items:center;overflow:hidden}.phpdebugbar-widgets-datasets-item-method{padding:1px 5px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:2px;font-weight:600;font-family:var(--debugbar-font-mono);flex-shrink:0}.phpdebugbar-widgets-datasets-item-url{color:var(--debugbar-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-suffix{color:var(--debugbar-text-muted);font-family:var(--debugbar-font-mono);flex-shrink:0}.phpdebugbar-widgets-datasets-item-badges{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.phpdebugbar-widgets-datasets-item-badge{display:inline-flex;align-items:center;gap:2px;padding:1px 4px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:2px;font-size:10px;font-weight:600;cursor:pointer;transition:background-color .1s}.phpdebugbar-widgets-datasets-item-badge:hover{background:var(--debugbar-badge-active);color:var(--debugbar-badge-active-text)}.phpdebugbar-widgets-datasets-item-badge i{width:12px;height:12px}div.phpdebugbar-openhandler-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background:#000;opacity:.3;z-index:100000002}div.phpdebugbar-openhandler{position:fixed;margin:auto;inset:0;width:80%;height:70%;background:var(--debugbar-background);color:var(--debugbar-text);border:2px solid var(--debugbar-header-border);overflow:auto;z-index:100000003;font-family:var(--debugbar-font-sans);font-size:14px;padding:0}div.phpdebugbar-openhandler select,div.phpdebugbar-openhandler input{appearance:auto}div.phpdebugbar-openhandler input,div.phpdebugbar-openhandler select{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;height:20px;margin:0 5px;padding:0}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions input[name=uri]{width:200px}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions input[name=ip]{width:90px}div.phpdebugbar-openhandler a{color:var(--debugbar-header-text)}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header{background:var(--debugbar-header) no-repeat 5px 4px;color:var(--debugbar-header-text);margin-bottom:10px;display:flex;align-items:center;padding:5px 8px}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-closebtn,div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-brand{font-size:14px;color:var(--debugbar-header-text);text-decoration:none;padding-right:5px;line-height:1;align-items:center}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-closebtn{margin-left:auto}div.phpdebugbar-openhandler table{width:100%;table-layout:fixed;font-size:14px}div.phpdebugbar-openhandler table td,div.phpdebugbar-openhandler table th{border:0px solid var(--debugbar-border);padding:2px 8px}div.phpdebugbar-openhandler table th,div.phpdebugbar-openhandler table tr:nth-child(2n){background-color:var(--debugbar-background-alt)}div.phpdebugbar-openhandler table th:nth-child(3),div.phpdebugbar-openhandler table td:nth-child(3),div.phpdebugbar-openhandler table th:nth-child(5),div.phpdebugbar-openhandler table td:nth-child(5),div.phpdebugbar-openhandler table th:nth-child(6),div.phpdebugbar-openhandler table td:nth-child(6){text-align:center}div.phpdebugbar-openhandler table td{padding:6px 3px;border-bottom:1px solid var(--debugbar-border)}div.phpdebugbar-openhandler table td a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phpdebugbar-openhandler-id-cell{display:flex;align-items:center;gap:4px}.phpdebugbar-openhandler-id-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:55px;display:inline-block;font-family:var(--debugbar-font-mono);font-size:12px}.phpdebugbar-openhandler-copy-id{cursor:pointer;color:var(--debugbar-text-muted);display:inline-flex;align-items:center;position:relative;flex-shrink:0}.phpdebugbar-openhandler-copy-id i{font-size:12px}.phpdebugbar-openhandler-copy-id:hover{color:var(--debugbar-text)}.phpdebugbar-openhandler-copy-id.phpdebugbar-openhandler-copied{color:var(--debugbar-success, #28a745)}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions{text-align:center;padding:7px 0}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions a{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;margin:5px;padding:4px 12px}div.phpdebugbar-widgets-mails span.phpdebugbar-widgets-subject{display:block}div.phpdebugbar-widgets-mails li.phpdebugbar-widgets-list-item pre.phpdebugbar-widgets-headers{margin:10px;padding:5px;border:1px solid var(--debugbar-border);font-family:var(--debugbar-font-mono)}div.phpdebugbar-widgets-sqlqueries{position:relative;height:100%;overflow:hidden;display:flex;flex-direction:column}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-status{font-family:var(--debugbar-font-mono);padding:6px;border-bottom:1px solid var(--debugbar-border);font-weight:700;color:var(--debugbar-text);background-color:var(--debugbar-background-alt);flex-shrink:0;order:1}div.phpdebugbar-widgets-sqlqueries ul.phpdebugbar-widgets-list{flex:1;overflow-y:auto;order:2}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-error{color:red}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id{float:right;margin-left:8px;color:var(--debugbar-text-muted)}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-database,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-duration,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-row-count,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-copy-clipboard,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-stmt-id{color:var(--debugbar-text)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard-check:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database:before{-webkit-mask-image:var(--debugbar-icon-database);mask-image:var(--debugbar-icon-database)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id:before{-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard:before{-webkit-mask-image:var(--debugbar-icon-copy);mask-image:var(--debugbar-icon-copy)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard-check:before{-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-error{display:block;font-weight:700}code.phpdebugbar-widgets-sql{white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow{background-color:#ffe4e4}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate{background-color:#fdfdcd}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow{background-color:#623100}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate{background-color:#565602}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar{position:relative;flex-shrink:0;width:100%;z-index:1;order:3}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter{float:right;font-size:12px;padding:2px 4px;background:#7cacd5;margin:0 2px;border-radius:4px;color:#fff;text-decoration:none}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter.phpdebugbar-widgets-excluded{background:var(--debugbar-background);color:var(--debugbar-text)}div.phpdebugbar-widgets-sqlqueries a.phpdebugbar-widgets-duplicates{font-weight:700;text-decoration:underline}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item div.phpdebugbar-widgets-bg-measure{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-bg-measure div.phpdebugbar-widgets-value{position:absolute;bottom:0;height:1px;opacity:1;background:var(--debugbar-accent-border)}div.phpdebugbar-widgets-sqlqueries td.phpdebugbar-widgets-value li.phpdebugbar-widgets-table-list-item{text-align:left;padding-left:6px}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-text-muted{color:var(--debugbar-text-muted)}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction,div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-message,div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-info{font-weight:bolder}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction{color:#d73a49}[data-theme=dark] div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction{color:#ff7b72}div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status{font-family:var(--debugbar-font-mono);padding:6px;border-bottom:1px solid var(--debugbar-border);font-weight:700;color:var(--debugbar-text);background-color:var(--debugbar-background-alt)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type{float:right;margin-left:8px;color:var(--debugbar-text)}div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-render-time,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-param-count,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status a.phpdebugbar-widgets-editor-link,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-type{color:var(--debugbar-text)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type:before{-webkit-mask-image:var(--debugbar-icon-code);mask-image:var(--debugbar-icon-code)}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-callgraph>pre *{background-color:inherit!important}pre code.phpdebugbar-hljs{display:block;overflow-x:auto;padding:1em}code.phpdebugbar-hljs{padding:3px 5px}/*! +:root{--debugbar-icon-adjustments: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2010a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%204v4%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2012v8%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2016a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%204v10%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2018v2%22%20%2F%3E%20%3Cpath%20d%3D%22M16%207a2%202%200%201%200%204%200a2%202%200%200%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%204v1%22%20%2F%3E%20%3Cpath%20d%3D%22M18%209v11%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-adjustments-horizontal: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%206a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206l8%200%22%20%2F%3E%20%3Cpath%20d%3D%22M16%206l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2012a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012l2%200%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2012l10%200%22%20%2F%3E%20%3Cpath%20d%3D%22M15%2018a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2018l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M19%2018l1%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrow-right: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2012l14%200%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2018l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M13%206l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-left-right: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2017l-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2010l-3%20-3l3%20-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207l18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2020l3%20-3l-3%20-3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bolt: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%203l0%207l6%200l-8%2011l0%20-7l-6%200l8%20-11%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bookmark: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M18%207v14l-6%20-4l-6%204v-14a4%204%200%200%201%204%20-4h4a4%204%200%200%201%204%204%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-box: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%203l8%204.5l0%209l-8%204.5l-8%20-4.5l0%20-9l8%20-4.5%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l8%20-4.5%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l0%209%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l-8%20-4.5%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-briefcase: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%209a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v9a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2l0%20-9%22%20%2F%3E%20%3Cpath%20d%3D%22M8%207v-2a2%202%200%200%201%202%20-2h4a2%202%200%200%201%202%202v2%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2012l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2013a20%2020%200%200%200%2018%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-bug: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209v-1a3%203%200%200%201%206%200v1%22%20%2F%3E%20%3Cpath%20d%3D%22M8%209h8a6%206%200%200%201%201%203v3a5%205%200%200%201%20-10%200v-3a6%206%200%200%201%201%20-3%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2013l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2013l4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2020l0%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2019l3.35%20-2%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2019l-3.35%20-2%22%20%2F%3E%20%3Cpath%20d%3D%22M4%207l3.75%202.4%22%20%2F%3E%20%3Cpath%20d%3D%22M20%207l-3.75%202.4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-calendar: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%207a2%202%200%200%201%202%20-2h12a2%202%200%200%201%202%202v12a2%202%200%200%201%20-2%202h-12a2%202%200%200%201%20-2%20-2v-12%22%20%2F%3E%20%3Cpath%20d%3D%22M16%203v4%22%20%2F%3E%20%3Cpath%20d%3D%22M8%203v4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2011h16%22%20%2F%3E%20%3Cpath%20d%3D%22M11%2015h1%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2015v3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chart-infographic: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207a4%204%200%201%200%208%200a4%204%200%201%200%20-8%200%22%20%2F%3E%20%3Cpath%20d%3D%22M7%203v4h4%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2017l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2014l0%207%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2013l0%208%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2012l0%209%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-clock: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2012a9%209%200%201%200%2018%200a9%209%200%200%200%20-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M12%207v5l3%203%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-code: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M7%208l-4%204l4%204%22%20%2F%3E%20%3Cpath%20d%3D%22M17%208l4%204l-4%204%22%20%2F%3E%20%3Cpath%20d%3D%22M14%204l-4%2016%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-database: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206a8%203%200%201%200%2016%200a8%203%200%201%200%20-16%200%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206v6a8%203%200%200%200%2016%200v-6%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012v6a8%203%200%200%200%2016%200v-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-file-code: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M14%203v4a1%201%200%200%200%201%201h4%22%20%2F%3E%20%3Cpath%20d%3D%22M17%2021h-10a2%202%200%200%201%20-2%20-2v-14a2%202%200%200%201%202%20-2h7l5%205v11a2%202%200%200%201%20-2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2013l-1%202l1%202%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2013l1%202l-1%202%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-flag: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%205a5%205%200%200%201%207%200a5%205%200%200%200%207%200v9a5%205%200%200%201%20-7%200a5%205%200%200%200%20-7%200v-9%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2021v-7%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-history: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%208l0%204l2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M3.05%2011a9%209%200%201%201%20.5%204m-.5%205v-5h5%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-inbox: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206a2%202%200%200%201%202%20-2h12a2%202%200%200%201%202%202v12a2%202%200%200%201%20-2%202h-12a2%202%200%200%201%20-2%20-2l0%20-12%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2013h3l3%203h4l3%20-3h3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-leaf: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2021c.5%20-4.5%202.5%20-8%207%20-10%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018c6.218%200%2010.5%20-3.288%2011%20-12v-2h-4.014c-9%200%20-11.986%204%20-12%209c0%201%200%203%202%205h3l.014%200%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-list: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%206l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2012l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M5%206l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2012l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2018l0%20.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-list-details: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%205h8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%209h5%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2015h8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2019h5%22%20%2F%3E%20%3Cpath%20d%3D%22M3%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-logs: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2018h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2018h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2012h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%206h2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%206h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2012h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2018h6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-mobiledata: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2012v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2020v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%207l3%20-3l3%203%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2017l3%203l3%20-3%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-search: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010a7%207%200%201%200%2014%200a7%207%200%201%200%20-14%200%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2021l-6%20-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-server-cog: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%207a3%203%200%200%201%203%20-3h12a3%203%200%200%201%203%203v2a3%203%200%200%201%20-3%203h-12a3%203%200%200%201%20-3%20-3v-2%22%20%2F%3E%20%3Cpath%20d%3D%22M12%2020h-6a3%203%200%200%201%20-3%20-3v-2a3%203%200%200%201%203%20-3h10.5%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2018a2%202%200%201%200%204%200a2%202%200%201%200%20-4%200%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2014.5v1.5%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2020v1.5%22%20%2F%3E%20%3Cpath%20d%3D%22M21.032%2016.25l-1.299%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M16.27%2019l-1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M14.97%2016.25l1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M19.733%2019l1.3%20.75%22%20%2F%3E%20%3Cpath%20d%3D%22M7%208v.01%22%20%2F%3E%20%3Cpath%20d%3D%22M7%2016v.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-share-3: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%204v4c-6.575%201.028%20-9.02%206.788%20-10%2012c-.037%20.206%205.384%20-5.962%2010%20-6v4l8%20-7l-8%20-7%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-tags: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%208v4.172a2%202%200%200%200%20.586%201.414l5.71%205.71a2.41%202.41%200%200%200%203.408%200l3.592%20-3.592a2.41%202.41%200%200%200%200%20-3.408l-5.71%20-5.71a2%202%200%200%200%20-1.414%20-.586h-4.172a2%202%200%200%200%20-2%202%22%20%2F%3E%20%3Cpath%20d%3D%22M18%2019l1.592%20-1.592a4.82%204.82%200%200%200%200%20-6.816l-4.592%20-4.592%22%20%2F%3E%20%3Cpath%20d%3D%22M7%2010h-.01%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-x: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M18%206l-12%2012%22%20%2F%3E%20%3Cpath%20d%3D%22M6%206l12%2012%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-maximize: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M16%204l4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2010l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2020l-4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2020l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2020l4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2014l6%206%22%20%2F%3E%20%3Cpath%20d%3D%22M8%204l-4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M4%204l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-arrows-minimize: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%209l4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M3%203l6%206%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2015l4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2021l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M19%209l-4%200l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M15%209l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M19%2015l-4%200l0%204%22%20%2F%3E%20%3Cpath%20d%3D%22M15%2015l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chevron-down: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M6%209l6%206l6%20-6%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-chevron-up: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M6%2015l6%20-6l6%206%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-folder-open: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2019l2.757%20-7.351a1%201%200%200%201%20.936%20-.649h12.307a1%201%200%200%201%20.986%201.164l-.996%205.211a2%202%200%200%201%20-1.964%201.625h-14.026a2%202%200%200%201%20-2%20-2v-11a2%202%200%200%201%202%20-2h4l3%203h7a2%202%200%200%201%202%202v2%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-brand-php: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%221.5%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M2%2012a10%209%200%201%200%2020%200a10%209%200%201%200%20-20%200%22%20%2F%3E%20%3Cpath%20d%3D%22M5.5%2015l.395%20-1.974l.605%20-3.026h1.32a1%201%200%200%201%20.986%201.164l-.167%201a1%201%200%200%201%20-.986%20.836h-1.653%22%20%2F%3E%20%3Cpath%20d%3D%22M15.5%2015l.395%20-1.974l.605%20-3.026h1.32a1%201%200%200%201%20.986%201.164l-.167%201a1%201%200%200%201%20-.986%20.836h-1.653%22%20%2F%3E%20%3Cpath%20d%3D%22M12%207.5l-1%205.5%22%20%2F%3E%20%3Cpath%20d%3D%22M11.6%2010h2.4l-.5%203%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-refresh: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M20%2011a8.1%208.1%200%200%200%20-15.5%20-2m-.5%20-4v4h4%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2013a8.1%208.1%200%200%200%2015.5%202m.5%204v-4h-4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-cpu: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%206a1%201%200%200%201%201%20-1h12a1%201%200%200%201%201%201v12a1%201%200%200%201%20-1%201h-12a1%201%200%200%201%20-1%20-1l0%20-12%22%20%2F%3E%20%3Cpath%20d%3D%22M9%209h6v6h-6l0%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010h2%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2014h2%22%20%2F%3E%20%3Cpath%20d%3D%22M10%203v2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%203v2%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2010h-2%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2014h-2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2021v-2%22%20%2F%3E%20%3Cpath%20d%3D%22M10%2021v-2%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-table: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%205a2%202%200%200%201%202%20-2h14a2%202%200%200%201%202%202v14a2%202%200%200%201%20-2%202h-14a2%202%200%200%201%20-2%20-2v-14%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010h18%22%20%2F%3E%20%3Cpath%20d%3D%22M10%203v18%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-link: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2015l6%20-6%22%20%2F%3E%20%3Cpath%20d%3D%22M11%206l.463%20-.536a5%205%200%200%201%207.071%207.072l-.534%20.464%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2018l-.397%20.534a5.068%205.068%200%200%201%20-7.127%200a4.972%204.972%200%200%201%200%20-7.071l.524%20-.463%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-copy: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M7%209.667a2.667%202.667%200%200%201%202.667%20-2.667h8.666a2.667%202.667%200%200%201%202.667%202.667v8.666a2.667%202.667%200%200%201%20-2.667%202.667h-8.666a2.667%202.667%200%200%201%20-2.667%20-2.667l0%20-8.666%22%20%2F%3E%20%3Cpath%20d%3D%22M4.012%2016.737a2.005%202.005%200%200%201%20-1.012%20-1.737v-10c0%20-1.1%20.9%20-2%202%20-2h10c.75%200%201.158%20.385%201.5%201%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-circle-check: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2012a9%209%200%201%200%2018%200a9%209%200%201%200%20-18%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2012l2%202l4%20-4%22%20%2F%3E%20%3C%2Fsvg%3E);--debugbar-icon-external-link: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M12%206h-6a2%202%200%200%200%20-2%202v10a2%202%200%200%200%202%202h10a2%202%200%200%200%202%20-2v-6%22%20%2F%3E%20%3Cpath%20d%3D%22M11%2013l9%20-9%22%20%2F%3E%20%3Cpath%20d%3D%22M15%204h5v5%22%20%2F%3E%20%3C%2Fsvg%3E)}.phpdebugbar-icon-adjustments:before{-webkit-mask-image:var(--debugbar-icon-adjustments);mask-image:var(--debugbar-icon-adjustments)}.phpdebugbar-icon-adjustments-horizontal:before{-webkit-mask-image:var(--debugbar-icon-adjustments-horizontal);mask-image:var(--debugbar-icon-adjustments-horizontal)}.phpdebugbar-icon-arrow-right:before{-webkit-mask-image:var(--debugbar-icon-arrow-right);mask-image:var(--debugbar-icon-arrow-right)}.phpdebugbar-icon-arrows-left-right:before{-webkit-mask-image:var(--debugbar-icon-arrows-left-right);mask-image:var(--debugbar-icon-arrows-left-right)}.phpdebugbar-icon-bolt:before{-webkit-mask-image:var(--debugbar-icon-bolt);mask-image:var(--debugbar-icon-bolt)}.phpdebugbar-icon-bookmark:before{-webkit-mask-image:var(--debugbar-icon-bookmark);mask-image:var(--debugbar-icon-bookmark)}.phpdebugbar-icon-box:before{-webkit-mask-image:var(--debugbar-icon-box);mask-image:var(--debugbar-icon-box)}.phpdebugbar-icon-briefcase:before{-webkit-mask-image:var(--debugbar-icon-briefcase);mask-image:var(--debugbar-icon-briefcase)}.phpdebugbar-icon-bug:before{-webkit-mask-image:var(--debugbar-icon-bug);mask-image:var(--debugbar-icon-bug)}.phpdebugbar-icon-calendar:before{-webkit-mask-image:var(--debugbar-icon-calendar);mask-image:var(--debugbar-icon-calendar)}.phpdebugbar-icon-chart-infographic:before{-webkit-mask-image:var(--debugbar-icon-chart-infographic);mask-image:var(--debugbar-icon-chart-infographic)}.phpdebugbar-icon-clock:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}.phpdebugbar-icon-code:before{-webkit-mask-image:var(--debugbar-icon-code);mask-image:var(--debugbar-icon-code)}.phpdebugbar-icon-database:before{-webkit-mask-image:var(--debugbar-icon-database);mask-image:var(--debugbar-icon-database)}.phpdebugbar-icon-file-code:before{-webkit-mask-image:var(--debugbar-icon-file-code);mask-image:var(--debugbar-icon-file-code)}.phpdebugbar-icon-flag:before{-webkit-mask-image:var(--debugbar-icon-flag);mask-image:var(--debugbar-icon-flag)}.phpdebugbar-icon-history:before{-webkit-mask-image:var(--debugbar-icon-history);mask-image:var(--debugbar-icon-history)}.phpdebugbar-icon-inbox:before{-webkit-mask-image:var(--debugbar-icon-inbox);mask-image:var(--debugbar-icon-inbox)}.phpdebugbar-icon-leaf:before{-webkit-mask-image:var(--debugbar-icon-leaf);mask-image:var(--debugbar-icon-leaf)}.phpdebugbar-icon-list:before{-webkit-mask-image:var(--debugbar-icon-list);mask-image:var(--debugbar-icon-list)}.phpdebugbar-icon-list-details:before{-webkit-mask-image:var(--debugbar-icon-list-details);mask-image:var(--debugbar-icon-list-details)}.phpdebugbar-icon-logs:before{-webkit-mask-image:var(--debugbar-icon-logs);mask-image:var(--debugbar-icon-logs)}.phpdebugbar-icon-mobiledata:before{-webkit-mask-image:var(--debugbar-icon-mobiledata);mask-image:var(--debugbar-icon-mobiledata)}.phpdebugbar-icon-search:before{-webkit-mask-image:var(--debugbar-icon-search);mask-image:var(--debugbar-icon-search)}.phpdebugbar-icon-server-cog:before{-webkit-mask-image:var(--debugbar-icon-server-cog);mask-image:var(--debugbar-icon-server-cog)}.phpdebugbar-icon-share-3:before{-webkit-mask-image:var(--debugbar-icon-share-3);mask-image:var(--debugbar-icon-share-3)}.phpdebugbar-icon-tags:before{-webkit-mask-image:var(--debugbar-icon-tags);mask-image:var(--debugbar-icon-tags)}.phpdebugbar-icon-x:before{-webkit-mask-image:var(--debugbar-icon-x);mask-image:var(--debugbar-icon-x)}.phpdebugbar-icon-arrows-maximize:before{-webkit-mask-image:var(--debugbar-icon-arrows-maximize);mask-image:var(--debugbar-icon-arrows-maximize)}.phpdebugbar-icon-arrows-minimize:before{-webkit-mask-image:var(--debugbar-icon-arrows-minimize);mask-image:var(--debugbar-icon-arrows-minimize)}.phpdebugbar-icon-chevron-down:before{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}.phpdebugbar-icon-chevron-up:before{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}.phpdebugbar-icon-folder-open:before{-webkit-mask-image:var(--debugbar-icon-folder-open);mask-image:var(--debugbar-icon-folder-open)}.phpdebugbar-icon-brand-php:before{-webkit-mask-image:var(--debugbar-icon-brand-php);mask-image:var(--debugbar-icon-brand-php)}.phpdebugbar-icon-refresh:before{-webkit-mask-image:var(--debugbar-icon-refresh);mask-image:var(--debugbar-icon-refresh)}.phpdebugbar-icon-cpu:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}.phpdebugbar-icon-table:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}.phpdebugbar-icon-link:before{-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link)}.phpdebugbar-icon-copy:before{-webkit-mask-image:var(--debugbar-icon-copy);mask-image:var(--debugbar-icon-copy)}.phpdebugbar-icon-circle-check:before{-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}.phpdebugbar-icon-external-link:before{-webkit-mask-image:var(--debugbar-icon-external-link);mask-image:var(--debugbar-icon-external-link)}@media print{div.phpdebugbar{display:none}}div.phpdebugbar,div.phpdebugbar-openhandler,div.phpdebugbar-widgets-datasets-panel{--debugbar-background: #F7F7F7;--debugbar-background-alt: #EFEFEF;--debugbar-surface-sunken: #FFFFFF;--debugbar-text: #222;--debugbar-text-muted: #888;--debugbar-border: #eee;--debugbar-header: #efefef;--debugbar-header-text: #555;--debugbar-header-border: #ddd;--debugbar-active: #ccc;--debugbar-active-text: #666;--debugbar-icons: #555;--debugbar-badge: #ccc;--debugbar-badge-text: #555;--debugbar-badge-active: #477e96;--debugbar-badge-active-text: #fff;--debugbar-link: #888;--debugbar-hover: #aaa;--debugbar-accent: #6BB7D8;--debugbar-accent-border: #477e96;--debugbar-font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--debugbar-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--debugbar-icon-brand: var(--debugbar-icon-brand-php)}div.phpdebugbar[data-theme=dark],div.phpdebugbar-openhandler[data-theme=dark],div.phpdebugbar-widgets-datasets-panel[data-theme=dark]{--debugbar-background: #2a2a2a;--debugbar-background-alt: #333333;--debugbar-surface-sunken: #1c1c1c;--debugbar-text: #e0e0e0;--debugbar-text-muted: #aaaaaa;--debugbar-border: #3a3a3a;--debugbar-header: #1e1e1e;--debugbar-header-text: #cccccc;--debugbar-header-border: #444;--debugbar-active: #444;--debugbar-active-text: #e0e0e0;--debugbar-icons: #cccccc;--debugbar-badge: #444;--debugbar-badge-text: #cccccc;--debugbar-badge-active: #4F8FB3;--debugbar-badge-active-text: #1e1e1e;--debugbar-accent: #4F8FB3;--debugbar-accent-border: #3F7A94;--debugbar-link: #aaaaaa;--debugbar-hover: #888888}div.phpdebugbar{position:fixed;bottom:0;left:0;width:100%;border-top:0;font-family:var(--debugbar-font-sans);background:var(--debugbar-background);z-index:100000000;font-size:13px;color:var(--debugbar-text);text-align:left;line-height:1.2em;letter-spacing:normal;direction:ltr}div.phpdebugbar.phpdebugbar-fullscreen,div.phpdebugbar.phpdebugbar-fullscreen[data-toolbarPosition=top]{top:0;bottom:0;display:flex;flex-direction:column}div.phpdebugbar.phpdebugbar-fullscreen .phpdebugbar-body{flex:1;height:calc(100% - 32px)!important}div.phpdebugbar.phpdebugbar-fullscreen .phpdebugbar-resize-handle{display:none}.phpdebugbar [hidden]{display:none!important}div.phpdebugbar[data-openBtnPosition=bottomRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=topRight].phpdebugbar-closed{left:auto;right:0}div.phpdebugbar[data-openBtnPosition=topRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=topLeft].phpdebugbar-closed{bottom:auto;top:0;border-bottom:1px solid var(--debugbar-header-border)}div.phpdebugbar[data-openBtnPosition=bottomRight].phpdebugbar-closed,div.phpdebugbar[data-openBtnPosition=bottomLeft].phpdebugbar-closed{border-top:1px solid var(--debugbar-header-border)}.phpdebugbar-closed[data-openBtnPosition=bottomLeft],.phpdebugbar-closed[data-openBtnPosition=topLeft]{border-right:1px solid var(--debugbar-header-border)}.phpdebugbar-closed[data-openBtnPosition=bottomRight],.phpdebugbar-closed[data-openBtnPosition=topRight]{border-left:1px solid var(--debugbar-header-border)}div.phpdebugbar a,div.phpdebugbar-openhandler{cursor:pointer}div.phpdebugbar-drag-capture{position:fixed;inset:0;z-index:100000001;background:none;display:none;cursor:row-resize}div.phpdebugbar-closed{width:auto}div.phpdebugbar *{margin:0;padding:0;border:0;font-weight:400;text-decoration:none;clear:initial;width:auto;direction:ltr;text-align:left;-moz-box-sizing:content-box;box-sizing:content-box}div.phpdebugbar select,div.phpdebugbar input{appearance:auto}div.phpdebugbar ol,div.phpdebugbar ul{list-style:none}div.phpdebugbar ul li,div.phpdebugbar ol li,div.phpdebugbar dl li{line-height:normal}div.phpdebugbar table,.phpdebugbar-openhandler table{border-collapse:collapse;border-spacing:0;color:inherit}div.phpdebugbar input[type=text],div.phpdebugbar input[type=password],div.phpdebugbar select{font-family:var(--debugbar-font-sans);background:var(--debugbar-background);font-size:14px;color:var(--debugbar-text);padding:0;border:1px solid var(--debugbar-border);border-radius:.25rem;margin:0}div.phpdebugbar code,div.phpdebugbar pre,div.phpdebugbar samp{background:none;font-family:var(--debugbar-font-mono);font-size:1em;border:0!important;padding:0;margin:0}div.phpdebugbar code,div.phpdebugbar pre{color:var(--debugbar-text)}div.phpdebugbar pre.sf-dump{background:none!important;z-index:0!important;display:block!important;color:#a0a000;outline:0}div.phpdebugbar pre.sf-dump .sf-dump-private{color:gray}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-public{color:#fc0}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-protected{color:#a0a000}div.phpdebugbar[data-theme=dark] pre.sf-dump .sf-dump-private{color:#9d9266}a.phpdebugbar-restore-btn{float:left;padding:4px;font-size:14px;color:var(--debugbar-icons);text-decoration:none;width:24px;height:24px}div.phpdebugbar-resize-handle{height:4px;margin-top:-4px;width:100%;background:none;border-bottom:1px solid var(--debugbar-header-border);cursor:row-resize}div.phpdebugbar-minimized div.phpdebugbar-resize-handle{cursor:auto}div.phpdebugbar-resize-handle.phpdebugbar-resize-handle-bottom{margin-top:4px}div.phpdebugbar-minimized{border-top:1px solid var(--debugbar-header-border)}div.phpdebugbar-minimized[data-toolbarPosition=top]{border-top:0;border-bottom:1px solid var(--debugbar-header-border)}div.phpdebugbar[data-toolbarPosition=top]{bottom:auto;top:0}div.phpdebugbar[data-toolbarPosition=top] div.phpdebugbar-resize-handle-top{height:0;display:none}div.phpdebugbar[data-toolbarPosition=top] div.phpdebugbar-resize-handle-bottom{margin-top:0}div.phpdebugbar[data-toolbarPosition=bottom] div.phpdebugbar-resize-handle-bottom{height:0;margin-top:0}a.phpdebugbar-restore-btn:after{-webkit-mask-image:var(--debugbar-icon-brand);mask-image:var(--debugbar-icon-brand);-webkit-mask-size:20px 20px;mask-size:20px 20px;background-color:var(--debugbar-icons)}div.phpdebugbar-header{background-color:var(--debugbar-header);min-height:32px;line-height:16px}div.phpdebugbar-header:before,div.phpdebugbar-header:after{display:table;line-height:0;content:""}div.phpdebugbar-header:after{clear:both}div.phpdebugbar-header-left{float:left}div.phpdebugbar-header-right{float:right}div.phpdebugbar-header>div>*{padding:5px;font-size:13px;height:22px;color:var(--debugbar-header-text);text-decoration:none}div.phpdebugbar-header-left>*,div.phpdebugbar-header-right>*{line-height:0;display:flex;align-items:center}div.phpdebugbar-header-left>*{float:left}div.phpdebugbar-header-right>*{float:right}div.phpdebugbar-header-right select{padding:0;line-height:1em;background-color:var(--debugbar-header);color:var(--debugbar-header-text)}span.phpdebugbar-indicator,a.phpdebugbar-indicator{border-right:1px solid var(--debugbar-header-border)}.phpdebugbar[data-hideEmptyTabs=true] .phpdebugbar-tab[data-empty=true]:not(.phpdebugbar-active){display:none}a.phpdebugbar-tab.phpdebugbar-active{background:var(--debugbar-active);color:var(--debugbar-active-text)}a.phpdebugbar-tab .phpdebugbar-text{font-size:14px}a.phpdebugbar-tab span.phpdebugbar-badge{display:none;margin-left:5px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge);border-radius:4px;color:var(--debugbar-badge-text);font-weight:400;text-shadow:none}a.phpdebugbar-tab.phpdebugbar-active span.phpdebugbar-badge{background:var(--debugbar-badge-active);color:var(--debugbar-badge-active-text)}a.phpdebugbar-tab i{display:none;vertical-align:middle}.phpdebugbar-icon,i.phpdebugbar-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.phpdebugbar-icon:before,i.phpdebugbar-icon:before{content:"";display:block;justify-content:center;flex-shrink:0;width:1.3em;height:1.3em;background-size:contain;background-repeat:no-repeat;background-position:center;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}.phpdebugbar-icon-brand:before{-webkit-mask-image:var(--debugbar-icon-brand);mask-image:var(--debugbar-icon-brand)}a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-visible{display:inline}a.phpdebugbar-tab span.phpdebugbar-badge.phpdebugbar-important{background:#ed6868;color:#fff}a.phpdebugbar-close-btn,a.phpdebugbar-open-btn,a.phpdebugbar-summary-btn,a.phpdebugbar-fullscreen-btn,a.phpdebugbar-minimize-btn,a.phpdebugbar-maximize-btn,a.phpdebugbar-tab.phpdebugbar-tab-history,a.phpdebugbar-tab.phpdebugbar-tab-settings{width:16px;height:22px;position:relative}a.phpdebugbar-close-btn:after,a.phpdebugbar-open-btn:after,a.phpdebugbar-summary-btn:after,a.phpdebugbar-restore-btn:after,a.phpdebugbar-fullscreen-btn:after,a.phpdebugbar-minimize-btn:after,a.phpdebugbar-maximize-btn:after{content:" ";display:block;left:0;position:absolute;top:0;width:100%;height:100%;background-color:var(--debugbar-icons);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:18px 18px;mask-size:18px 18px}a.phpdebugbar-restore-btn:after{-webkit-mask-size:24px 24px;mask-size:24px 24px;mask-repeat:no-repeat;mask-position:center;position:relative}a.phpdebugbar-minimize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}a.phpdebugbar-maximize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}div.phpdebugbar[data-toolbarPosition=top] a.phpdebugbar-minimize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-up);mask-image:var(--debugbar-icon-chevron-up)}div.phpdebugbar[data-toolbarPosition=top] a.phpdebugbar-maximize-btn:after{-webkit-mask-image:var(--debugbar-icon-chevron-down);mask-image:var(--debugbar-icon-chevron-down)}a.phpdebugbar-close-btn:after{-webkit-mask-image:var(--debugbar-icon-x);mask-image:var(--debugbar-icon-x)}a.phpdebugbar-fullscreen-btn:after{-webkit-mask-image:var(--debugbar-icon-arrows-maximize);mask-image:var(--debugbar-icon-arrows-maximize)}div.phpdebugbar.phpdebugbar-fullscreen a.phpdebugbar-fullscreen-btn:after{-webkit-mask-image:var(--debugbar-icon-arrows-minimize);mask-image:var(--debugbar-icon-arrows-minimize)}a.phpdebugbar-open-btn:after{-webkit-mask-image:var(--debugbar-icon-folder-open);mask-image:var(--debugbar-icon-folder-open)}a.phpdebugbar-summary-btn:after{-webkit-mask-image:var(--debugbar-icon-list-details);mask-image:var(--debugbar-icon-list-details)}a.phpdebugbar-summary-btn.phpdebugbar-summary-btn-active:after{background-color:var(--debugbar-text)}div.phpdebugbar-header-right>div.phpdebugbar-summary-float{position:relative}div.phpdebugbar-summary-float>div.phpdebugbar-summary-popover{position:absolute;bottom:100%;right:0;z-index:4;width:420px;max-width:min(420px,90vw);max-height:50vh;margin-bottom:4px;padding:8px;display:flex;flex-direction:column;gap:6px;line-height:normal;text-align:left;background-color:var(--debugbar-background);border:1px solid var(--debugbar-border);border-radius:4px;box-shadow:0 4px 12px #00000040}div.phpdebugbar[data-toolbarPosition=top] div.phpdebugbar-summary-float>div.phpdebugbar-summary-popover{bottom:auto;top:100%;margin-bottom:0;margin-top:4px}div.phpdebugbar-summary-float div.phpdebugbar-summary-scope{flex:1 1 auto;min-width:0;display:flex;gap:4px}div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn{flex:0 1 auto;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 8px;font-size:11px;font-family:inherit;line-height:1.4;color:var(--debugbar-text-muted);background-color:transparent;border:1px solid transparent;border-radius:3px;cursor:pointer}div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn:hover{color:var(--debugbar-text)}div.phpdebugbar-summary-float button.phpdebugbar-summary-scope-btn.phpdebugbar-summary-scope-active{color:var(--debugbar-text);background-color:var(--debugbar-background-alt);border-color:var(--debugbar-border);cursor:default}div.phpdebugbar-summary-float div.phpdebugbar-summary-content{flex:1 1 auto;overflow:auto;white-space:pre-wrap;word-break:break-word;font-family:var(--debugbar-font-mono);font-size:11px;line-height:1.4;color:var(--debugbar-text);padding:8px;background-color:var(--debugbar-surface-sunken);border:1px solid var(--debugbar-header-border);border-radius:3px}div.phpdebugbar-summary-float div.phpdebugbar-summary-actions{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:8px}div.phpdebugbar-summary-float button.phpdebugbar-summary-copy{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-family:inherit;color:var(--debugbar-text);background-color:var(--debugbar-background-alt);border:1px solid var(--debugbar-border);border-radius:3px;cursor:pointer;line-height:1.4}div.phpdebugbar-summary-float button.phpdebugbar-summary-copy:hover{background-color:var(--debugbar-header)}div.phpdebugbar-summary-float button.phpdebugbar-summary-copy:before{content:"";display:inline-block;width:11px;height:11px;-webkit-mask-image:var(--debugbar-icon-copy);mask-image:var(--debugbar-icon-copy);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:currentColor}div.phpdebugbar-summary-float button.phpdebugbar-summary-copy.phpdebugbar-summary-copied{color:var(--debugbar-success, #4caf50)}div.phpdebugbar-summary-float button.phpdebugbar-summary-copy.phpdebugbar-summary-copied:before{-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}.phpdebugbar-indicator{position:relative;cursor:pointer}.phpdebugbar-indicator span.phpdebugbar-text{margin-left:5px}.phpdebugbar-indicator span.phpdebugbar-tooltip{display:none;position:absolute;bottom:38px;background:var(--debugbar-header);border:1px solid var(--debugbar-header-border);color:var(--debugbar-header-text);font-size:11px;padding:2px 6px;z-index:100000001;text-align:center;white-space:nowrap;right:0;line-height:1.5;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.phpdebugbar-indicator:hover span.phpdebugbar-tooltip:not(.phpdebugbar-disabled){display:block}.phpdebugbar-indicator span.phpdebugbar-tooltip dl{display:grid;grid-gap:4px 10px;grid-template-columns:max-content}.phpdebugbar-indicator span.phpdebugbar-tooltip dl dt{font-weight:700;text-align:left}.phpdebugbar-indicator span.phpdebugbar-tooltip dl dd{margin:0;grid-column-start:2;text-align:left}.phpdebugbar .phpdebugbar-datasets-switcher{float:right}.phpdebugbar .phpdebugbar-datasets-switcher select{max-width:200px;height:22px;padding:4px 0;border:none}.phpdebugbar button,.phpdebugbar-openhandler button{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;margin:0 5px;padding:0 12px;height:20px;line-height:normal;cursor:pointer}div.phpdebugbar-body{border-top:1px solid var(--debugbar-header-border);position:relative;height:300px}div.phpdebugbar-panel{height:100%;overflow:auto;width:100%}div.phpdebugbar-panel.phpdebugbar-active{display:block}div.phpdebugbar-mini-design a.phpdebugbar-tab{position:relative;border-right:1px solid var(--debugbar-header-border)}div.phpdebugbar-mini-design a.phpdebugbar-tab span.phpdebugbar-text{display:none}div.phpdebugbar-mini-design a.phpdebugbar-tab:hover span.phpdebugbar-text{display:block;position:absolute;top:-30px;background:var(--debugbar-background);opacity:1;border:1px solid var(--debugbar-header-border);color:var(--debugbar-header-text);font-size:11px;padding:2px 6px;z-index:100000001;text-align:center;right:0;line-height:1.5;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}div.phpdebugbar-mini-design a.phpdebugbar-tab i{display:inline-block}a.phpdebugbar-tab.phpdebugbar-tab-history{width:auto;min-width:22px}a.phpdebugbar-tab.phpdebugbar-tab-history,a.phpdebugbar-tab.phpdebugbar-tab-settings{display:flex;justify-content:center;align-items:center}a.phpdebugbar-tab.phpdebugbar-tab-history .phpdebugbar-text,a.phpdebugbar-tab.phpdebugbar-tab-settings .phpdebugbar-text{display:none;white-space:nowrap}a.phpdebugbar-tab.phpdebugbar-tab-history i,a.phpdebugbar-tab.phpdebugbar-tab-settings i{display:inline-block}.phpdebugbar-widgets-dataset-history table{width:100%;table-layout:fixed}.phpdebugbar-widgets-dataset-history table th{font-weight:700}.phpdebugbar-widgets-dataset-history table td,.phpdebugbar-widgets-dataset-history table th{padding:6px 3px;border-bottom:1px solid var(--debugbar-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phpdebugbar-widgets-dataset-history table td a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phpdebugbar-widgets-dataset-history table tr.phpdebugbar-widgets-active{background:var(--debugbar-active);color:var(--debugbar-active-text)}.phpdebugbar-widgets-dataset-history span.phpdebugbar-badge{margin:0 5px 0 2px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge);border-radius:4px;color:var(--debugbar-badge-text);font-weight:400;text-shadow:none;vertical-align:middle}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions{text-align:center;padding:7px 0;position:sticky;top:0;background:var(--debugbar-background)}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions a{margin:0 10px}.phpdebugbar-widgets-dataset-history .phpdebugbar-widgets-dataset-actions input{margin:5px}.phpdebugbar-settings .phpdebugbar-form-row{display:block;border-top:1px solid var(--debugbar-border);min-height:17px;padding:5px 10px}.phpdebugbar-settings .phpdebugbar-form-label{width:200px;font-weight:700;display:inline-block;clear:none}.phpdebugbar-settings .phpdebugbar-form-input{font-weight:700;display:inline-block;clear:none}.phpdebugbar-settings input[type=text],.phpdebugbar-settings select{margin:0 5px;min-width:200px}.phpdebugbar-settings input[type=checkbox]{margin:0 5px}pre.phpdebugbar-widgets-code-block{white-space:pre;word-wrap:normal;overflow:hidden}pre.phpdebugbar-widgets-code-block code{display:block;overflow-x:auto;overflow-y:hidden}pre.phpdebugbar-widgets-code-block code.phpdebugbar-widgets-numbered-code{padding:5px;line-height:normal}pre.phpdebugbar-widgets-code-block ul li.phpdebugbar-widgets-highlighted-line{font-weight:bolder;text-decoration:underline}pre.phpdebugbar-widgets-code-block ul li.phpdebugbar-widgets-highlighted-line span{position:absolute;background:var(--debugbar-text);min-width:calc(100% - 85px);margin-left:10px;opacity:.15}pre.phpdebugbar-widgets-code-block ul{position:static;float:left;padding:5px;border-right:1px solid var(--debugbar-header-border);text-align:right}.phpdebugbar-widgets-kvlist span.phpdebugbar-widgets-filename,li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename,table.phpdebugbar-widgets-tablevar span.phpdebugbar-widgets-filename{display:block;font-style:italic;float:right;margin-left:8px;color:var(--debugbar-link)}a.phpdebugbar-widgets-editor-link,a.phpdebugbar-widgets-external-link{color:var(--debugbar-link)}.phpdebugbar-widgets-kvlist span.phpdebugbar-widgets-filename:hover,li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename:hover,a.phpdebugbar-widgets-editor-link:hover,a.phpdebugbar-widgets-external-link:hover{color:var(--debugbar-hover)}a.phpdebugbar-widgets-editor-link:before,a.phpdebugbar-widgets-copy-clipboard-check:before,a.phpdebugbar-widgets-external-link:after{content:"";display:inline-block;width:1em;height:1em;margin-left:4px;vertical-align:middle;-webkit-mask-image:var(--debugbar-icon-external-link);mask-image:var(--debugbar-icon-external-link);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}a.phpdebugbar-widgets-copy-clipboard-check:before{margin-left:0;margin-right:4px;-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}table.phpdebugbar-widgets-params{width:70%;margin:10px;border:1px solid var(--debugbar-border);font-family:var(--debugbar-font-mono);font-size:13px;border-collapse:collapse}table.phpdebugbar-widgets-params th{font-weight:700}table.phpdebugbar-widgets-params td{border:1px solid var(--debugbar-border);border-left:none;border-right:none;padding:0 5px}table.phpdebugbar-widgets-params .phpdebugbar-widgets-name{width:20%;font-weight:700;vertical-align:top}.phpdebugbar-widgets-truncated{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ul.phpdebugbar-widgets-list{margin:0;padding:0;list-style:none;font-family:var(--debugbar-font-mono)}ul.phpdebugbar-widgets-list li.phpdebugbar-widgets-list-item{padding:7px 10px;border-bottom:1px solid var(--debugbar-border);position:relative;overflow:hidden}div.phpdebugbar-widgets-messages{position:relative;height:100%;overflow:hidden;display:flex;flex-direction:column}div.phpdebugbar-widgets-messages ul.phpdebugbar-widgets-list{padding-bottom:45px;flex:1;overflow-y:auto}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value{display:flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value:before{margin-right:8px;font-family:system-ui,sans-serif;font-size:1.25em;line-height:1;display:inline-flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success{color:#28a745}.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success{color:#56db3a}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-success:before{content:"\2713"}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-alert:before{content:"\2139";color:#cbcf38}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-debug:before{color:#78d79a}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-warning:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-emergency:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-notice:before{content:"\26a0";color:#ecb03d}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-error,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-critical{color:red}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-error:before,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-value.phpdebugbar-widgets-critical:before{content:"\2716"}.phpdebugbar-widgets-params .phpdebugbar-widgets-value pre.sf-dump,dl.phpdebugbar-widgets-kvlist dd.phpdebugbar-widgets-value pre.sf-dump,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item pre.sf-dump{display:inline-block!important;padding-top:0;padding-left:0;padding-bottom:0}dl.phpdebugbar-widgets-kvlist dd.phpdebugbar-widgets-value pre.sf-dump{max-width:calc(100% - 5px)}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-collector,div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-label{float:right;font-size:12px;padding:2px 4px;color:#888;margin:0 2px;text-decoration:none;text-shadow:none;background:none;font-weight:400}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-context-count{float:right;font-size:12px;padding:2px 4px;color:#888;margin:0 2px;text-decoration:none;text-shadow:none;background:none;font-weight:400;display:inline-flex;align-items:center}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-context-count:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-messages li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-collector{color:#555;font-style:italic}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar{position:relative;flex-shrink:0;width:100%;background:var(--debugbar-header);color:var(--debugbar-text);border-top:1px solid var(--debugbar-border);border-bottom:0px;height:20px;padding:4px 0}div.phpdebugbar-widgets-messages li .phpdebugbar-widgets-label-called-from{float:right;color:var(--debugbar-text-muted);padding-left:5px;border-bottom:1px dotted var(--debugbar-border)}div.phpdebugbar-widgets-messages li .phpdebugbar-widgets-label-called-from:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar input{border:0;margin:0 0 0 7px;width:30%;box-shadow:none;border-radius:3px;padding:2px 6px;height:15px}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar input:focus{outline:none}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter{float:right;font-size:12px;padding:2px 4px;background:#7cacd5;margin:0 2px;border-radius:4px;color:var(--debugbar-background);text-decoration:none}div.phpdebugbar-widgets-messages div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter.phpdebugbar-widgets-excluded{background:var(--debugbar-active);color:var(--debugbar-text-muted)}dl.phpdebugbar-widgets-kvlist{margin:0;display:grid;grid-template-columns:minmax(160px,15%) minmax(0,1fr)}dl.phpdebugbar-widgets-kvlist dt{grid-column:1;min-width:0;padding:5px 10px;border-top:1px solid var(--debugbar-border);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}dl.phpdebugbar-widgets-kvlist dd{grid-column:2;margin:0;padding:5px 10px;border-top:1px solid var(--debugbar-border);cursor:pointer;min-height:17px;overflow-wrap:anywhere;overflow-x:auto}dl.phpdebugbar-widgets-varlist,dl.phpdebugbar-widgets-jsonvarlist,dl.phpdebugbar-widgets-htmlvarlist{font-family:var(--debugbar-font-mono)}dl.phpdebugbar-widgets-jsonvarlist dd,dl.phpdebugbar-widgets-htmlvarlist dd{cursor:initial}ul.phpdebugbar-widgets-timeline{margin:0;padding:0;list-style:none}ul.phpdebugbar-widgets-timeline .phpdebugbar-widgets-measure{height:20px;position:relative;border:none;display:block}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-label,ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-collector{position:absolute;font-size:12px;font-family:var(--debugbar-font-mono);color:var(--debugbar-text);top:4px;left:5px;background:none;text-shadow:none;font-weight:400;white-space:pre}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-collector{left:initial;right:5px}ul.phpdebugbar-widgets-timeline li span.phpdebugbar-widgets-value{display:block;position:absolute;height:calc(100% - 4px);background-color:var(--debugbar-accent);border-bottom:2px solid var(--debugbar-accent-border);top:2px;border-radius:3px;min-width:2px}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item{cursor:pointer}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-message{display:block;color:red}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-type{display:block;position:absolute;right:4px;top:4px;font-weight:700}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item pre.phpdebugbar-widgets-file{margin:10px;padding:5px;border:1px solid var(--debugbar-border);font-family:var(--debugbar-font-mono)}div.phpdebugbar-widgets-exceptions li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-filename{float:none}div.phpdebugbar[data-theme=dark] code.phpdebugbar-widgets-sql,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-name,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-key,div.phpdebugbar[data-theme=dark] .phpdebugbar-widgets-success>pre.sf-dump>.sf-dump-note{color:#fdfd96}table.phpdebugbar-widgets-tablevar{width:100%;table-layout:auto;font-size:1em}table.phpdebugbar-widgets-tablevar td:first-child{width:150px;white-space:nowrap;font-family:var(--debugbar-font-mono)}table.phpdebugbar-widgets-tablevar td.phpdebugbar-widgets-editor{width:5%;white-space:nowrap;text-align:right}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td{font-weight:700}table.phpdebugbar-widgets-tablevar td{padding:2px 4px;border-bottom:1px solid var(--debugbar-border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td{position:sticky;inset-inline-start:0px;background:var(--debugbar-background);border-bottom:none;z-index:1;top:0;bottom:0}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-header td:after,table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:var(--debugbar-border)}table.phpdebugbar-widgets-tablevar tr.phpdebugbar-widgets-summary td:after{bottom:auto;top:0}div.phpdebugbar span.phpdebugbar-widgets-badge{margin:0 5px 0 8px;font-size:11px;line-height:14px;padding:0 6px;background:var(--debugbar-badge-active);border-radius:4px;color:var(--debugbar-badge-active-text);font-weight:400;text-shadow:none;vertical-align:middle}.phpdebugbar .phpdebugbar-widgets-datasets-switcher-widget{position:relative;float:right;display:flex;padding:0!important;margin:0!important;height:32px;align-items:center}.phpdebugbar .phpdebugbar-widgets-datasets-badge{position:relative;display:flex;align-items:center;gap:6px;padding:0 10px;height:32px;background:var(--debugbar-header);color:var(--debugbar-header-text);cursor:pointer;font-size:12px;line-height:normal;transition:background-color .15s;font-family:var(--debugbar-font-sans);border-right:1px solid var(--debugbar-header-border)}.phpdebugbar .phpdebugbar-widgets-datasets-badge:hover{background:var(--debugbar-active)}.phpdebugbar .phpdebugbar-widgets-datasets-badge-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:9px;font-weight:600;font-size:11px}.phpdebugbar .phpdebugbar-widgets-datasets-badge-count[hidden]{display:none}.phpdebugbar .phpdebugbar-widgets-datasets-badge-url{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-panel{position:fixed;width:600px;background:var(--debugbar-background);border:1px solid var(--debugbar-border);box-shadow:0 2px 8px #0000001a;overflow:hidden;z-index:100000001}.phpdebugbar-widgets-datasets-panel-toolbar{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--debugbar-background-alt);border-bottom:1px solid var(--debugbar-border);font-size:12px;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-autoshow{display:flex;align-items:center;gap:4px;cursor:pointer;color:var(--debugbar-text);white-space:nowrap;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-autoshow input[type=checkbox]{cursor:pointer;margin:0}.phpdebugbar-widgets-datasets-clear-btn,.phpdebugbar-widgets-datasets-showall-btn{color:var(--debugbar-link);text-decoration:none;cursor:pointer;white-space:nowrap;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-clear-btn:hover,.phpdebugbar-widgets-datasets-showall-btn:hover{color:var(--debugbar-hover);text-decoration:underline}.phpdebugbar-widgets-datasets-refresh-btn{color:var(--debugbar-text-muted);text-decoration:none;cursor:pointer;white-space:nowrap;font-size:14px;display:inline-flex;align-items:center}.phpdebugbar-widgets-datasets-refresh-btn[hidden]{display:none}.phpdebugbar-widgets-datasets-refresh-btn:hover,.phpdebugbar-widgets-datasets-refresh-btn.phpdebugbar-widgets-active{color:var(--debugbar-text)}.phpdebugbar-widgets-datasets-refresh-btn.phpdebugbar-widgets-active i{animation:phpdebugbar-spin 2s linear infinite}@keyframes phpdebugbar-spin{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.phpdebugbar-widgets-datasets-search{flex:1;padding:3px 8px;font-size:11px;min-width:120px;border:1px solid var(--debugbar-border);background:var(--debugbar-background);color:var(--debugbar-text);border-radius:2px;font-family:var(--debugbar-font-sans)}.phpdebugbar-widgets-datasets-list{max-height:300px;overflow-y:auto}.phpdebugbar-widgets-datasets-list-item{display:grid;grid-template-columns:45px 50px 1fr auto auto auto;gap:6px;padding:5px 10px;border-bottom:1px solid var(--debugbar-border);cursor:pointer;transition:background-color .1s;align-items:center;font-size:11px}.phpdebugbar-widgets-datasets-list-item[hidden]{display:none}.phpdebugbar-widgets-datasets-list-item:hover{background:var(--debugbar-background-alt)}.phpdebugbar-widgets-datasets-list-item.phpdebugbar-widgets-active{background:var(--debugbar-active);font-weight:500}.phpdebugbar-widgets-datasets-item-nb{color:var(--debugbar-text-muted);font-weight:600;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-copy-id{cursor:pointer;color:var(--debugbar-text-muted);display:inline-flex;align-items:center;margin-right:-4px;position:relative}.phpdebugbar-widgets-datasets-item-copy-id i{font-size:12px}.phpdebugbar-widgets-datasets-item-copy-id:hover{color:var(--debugbar-text)}.phpdebugbar-widgets-datasets-item-copy-id.phpdebugbar-widgets-copied{color:var(--debugbar-success, #28a745)}.phpdebugbar-widgets-datasets-item-time{color:var(--debugbar-text-muted);font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-request{display:flex;gap:6px;align-items:center;overflow:hidden}.phpdebugbar-widgets-datasets-item-method{padding:1px 5px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:2px;font-weight:600;font-family:var(--debugbar-font-mono);flex-shrink:0}.phpdebugbar-widgets-datasets-item-url{color:var(--debugbar-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--debugbar-font-mono)}.phpdebugbar-widgets-datasets-item-suffix{color:var(--debugbar-text-muted);font-family:var(--debugbar-font-mono);flex-shrink:0}.phpdebugbar-widgets-datasets-item-badges{display:inline-flex;gap:4px;align-items:center;flex-wrap:wrap}.phpdebugbar-widgets-datasets-item-badge{display:inline-flex;align-items:center;gap:2px;padding:1px 4px;background:var(--debugbar-badge);color:var(--debugbar-badge-text);border-radius:2px;font-size:10px;font-weight:600;cursor:pointer;transition:background-color .1s}.phpdebugbar-widgets-datasets-item-badge:hover{background:var(--debugbar-badge-active);color:var(--debugbar-badge-active-text)}.phpdebugbar-widgets-datasets-item-badge i{width:12px;height:12px}div.phpdebugbar-openhandler-overlay{position:fixed;left:0;top:0;width:100%;height:100%;background:#000;opacity:.3;z-index:100000002}div.phpdebugbar-openhandler{position:fixed;margin:auto;inset:0;width:80%;height:70%;background:var(--debugbar-background);color:var(--debugbar-text);border:2px solid var(--debugbar-header-border);overflow:auto;z-index:100000003;font-family:var(--debugbar-font-sans);font-size:14px;padding:0}div.phpdebugbar-openhandler select,div.phpdebugbar-openhandler input{appearance:auto}div.phpdebugbar-openhandler input,div.phpdebugbar-openhandler select{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;height:20px;margin:0 5px;padding:0}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions input[name=uri]{width:200px}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions input[name=ip]{width:90px}div.phpdebugbar-openhandler a{color:var(--debugbar-header-text)}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header{background:var(--debugbar-header) no-repeat 5px 4px;color:var(--debugbar-header-text);margin-bottom:10px;display:flex;align-items:center;padding:5px 8px}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-closebtn,div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-brand{font-size:14px;color:var(--debugbar-header-text);text-decoration:none;padding-right:5px;line-height:1;align-items:center}div.phpdebugbar-openhandler .phpdebugbar-openhandler-header .phpdebugbar-openhandler-closebtn{margin-left:auto}div.phpdebugbar-openhandler table{width:100%;table-layout:fixed;font-size:14px}div.phpdebugbar-openhandler table td,div.phpdebugbar-openhandler table th{border:0px solid var(--debugbar-border);padding:2px 8px}div.phpdebugbar-openhandler table th,div.phpdebugbar-openhandler table tr:nth-child(2n){background-color:var(--debugbar-background-alt)}div.phpdebugbar-openhandler table th:nth-child(3),div.phpdebugbar-openhandler table td:nth-child(3),div.phpdebugbar-openhandler table th:nth-child(5),div.phpdebugbar-openhandler table td:nth-child(5),div.phpdebugbar-openhandler table th:nth-child(6),div.phpdebugbar-openhandler table td:nth-child(6){text-align:center}div.phpdebugbar-openhandler table td{padding:6px 3px;border-bottom:1px solid var(--debugbar-border)}div.phpdebugbar-openhandler table td a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phpdebugbar-openhandler-id-cell{display:flex;align-items:center;gap:4px}.phpdebugbar-openhandler-id-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:55px;display:inline-block;font-family:var(--debugbar-font-mono);font-size:12px}.phpdebugbar-openhandler-copy-id{cursor:pointer;color:var(--debugbar-text-muted);display:inline-flex;align-items:center;position:relative;flex-shrink:0}.phpdebugbar-openhandler-copy-id i{font-size:12px}.phpdebugbar-openhandler-copy-id:hover{color:var(--debugbar-text)}.phpdebugbar-openhandler-copy-id.phpdebugbar-openhandler-copied{color:var(--debugbar-success, #28a745)}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions{text-align:center;padding:7px 0}div.phpdebugbar-openhandler .phpdebugbar-openhandler-actions a{color:var(--debugbar-header-text);background-color:var(--debugbar-header);border:1px solid var(--debugbar-header-border);border-radius:.25rem;margin:5px;padding:4px 12px}div.phpdebugbar-widgets-mails span.phpdebugbar-widgets-subject{display:block}div.phpdebugbar-widgets-mails li.phpdebugbar-widgets-list-item pre.phpdebugbar-widgets-headers{margin:10px;padding:5px;border:1px solid var(--debugbar-border)!important;font-family:var(--debugbar-font-mono)}div.phpdebugbar-widgets-sqlqueries{position:relative;height:100%;overflow:hidden;display:flex;flex-direction:column}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-status{font-family:var(--debugbar-font-mono);padding:6px;border-bottom:1px solid var(--debugbar-border);font-weight:700;color:var(--debugbar-text);background-color:var(--debugbar-background-alt);flex-shrink:0;order:1}div.phpdebugbar-widgets-sqlqueries ul.phpdebugbar-widgets-list{flex:1;overflow-y:auto;order:2}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-error{color:red}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id{float:right;margin-left:8px;color:var(--debugbar-text-muted)}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-database,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-duration,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-row-count,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-copy-clipboard,div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-status span.phpdebugbar-widgets-stmt-id{color:var(--debugbar-text)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard-check:before,div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-database:before{-webkit-mask-image:var(--debugbar-icon-database);mask-image:var(--debugbar-icon-database)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-duration:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-memory:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-row-count:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-stmt-id:before{-webkit-mask-image:var(--debugbar-icon-link);mask-image:var(--debugbar-icon-link)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard:before{-webkit-mask-image:var(--debugbar-icon-copy);mask-image:var(--debugbar-icon-copy)}div.phpdebugbar-widgets-sqlqueries span.phpdebugbar-widgets-copy-clipboard-check:before{-webkit-mask-image:var(--debugbar-icon-circle-check);mask-image:var(--debugbar-icon-circle-check)}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item span.phpdebugbar-widgets-error{display:block;font-weight:700}code.phpdebugbar-widgets-sql{white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow{background-color:#ffe4e4}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate{background-color:#fdfdcd}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow{background-color:#623100}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate{background-color:#565602}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar{position:relative;flex-shrink:0;width:100%;z-index:1;order:3}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter{float:right;font-size:12px;padding:2px 4px;background:#7cacd5;margin:0 2px;border-radius:4px;color:#fff;text-decoration:none}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar a.phpdebugbar-widgets-filter.phpdebugbar-widgets-excluded{background:var(--debugbar-background);color:var(--debugbar-text)}div.phpdebugbar-widgets-sqlqueries a.phpdebugbar-widgets-duplicates{font-weight:700;text-decoration:underline}div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item div.phpdebugbar-widgets-bg-measure{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none}div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-bg-measure div.phpdebugbar-widgets-value{position:absolute;bottom:0;height:1px;opacity:1;background:var(--debugbar-accent-border)}div.phpdebugbar-widgets-sqlqueries td.phpdebugbar-widgets-value li.phpdebugbar-widgets-table-list-item{text-align:left;padding-left:6px}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-text-muted{color:var(--debugbar-text-muted)}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction,div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-message,div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-info{font-weight:bolder}div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction{color:#d73a49}[data-theme=dark] div.phpdebugbar-widgets-sqlqueries .phpdebugbar-widgets-transaction{color:#ff7b72}div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status{font-family:var(--debugbar-font-mono);padding:6px;border-bottom:1px solid var(--debugbar-border);font-weight:700;color:var(--debugbar-text);background-color:var(--debugbar-background-alt)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type{float:right;margin-left:8px;color:var(--debugbar-text)}div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-render-time,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-memory,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-param-count,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status a.phpdebugbar-widgets-editor-link,div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-status span.phpdebugbar-widgets-type{color:var(--debugbar-text)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count:before,div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type:before{content:"";display:inline-block;width:1em;height:1em;margin-right:4px;vertical-align:middle;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;mask-size:contain;mask-repeat:no-repeat;mask-position:center;background-color:currentColor}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-render-time:before{-webkit-mask-image:var(--debugbar-icon-clock);mask-image:var(--debugbar-icon-clock)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-memory:before{-webkit-mask-image:var(--debugbar-icon-cpu);mask-image:var(--debugbar-icon-cpu)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-param-count:before{-webkit-mask-image:var(--debugbar-icon-table);mask-image:var(--debugbar-icon-table)}div.phpdebugbar-widgets-templates span.phpdebugbar-widgets-type:before{-webkit-mask-image:var(--debugbar-icon-code);mask-image:var(--debugbar-icon-code)}div.phpdebugbar[data-theme=dark] div.phpdebugbar-widgets-templates div.phpdebugbar-widgets-callgraph>pre *{background-color:inherit!important}pre code.phpdebugbar-hljs{display:block;overflow-x:auto;padding:1em}code.phpdebugbar-hljs{padding:3px 5px}/*! Theme: GitHub Description: Light theme as seen on github.com Author: github.com diff --git a/resources/dist/debugbar.min.js b/resources/dist/debugbar.min.js index 5078e188..d04030ba 100644 --- a/resources/dist/debugbar.min.js +++ b/resources/dist/debugbar.min.js @@ -1,22 +1,26 @@ -(()=>{var Pn=Object.defineProperty,Un=Object.defineProperties;var Bn=Object.getOwnPropertyDescriptors;var Pt=Object.getOwnPropertySymbols;var Hn=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable;var Bt=Math.pow,Ut=(s,W,S)=>W in s?Pn(s,W,{enumerable:!0,configurable:!0,writable:!0,value:S}):s[W]=S,et=(s,W)=>{for(var S in W||(W={}))Hn.call(W,S)&&Ut(s,S,W[S]);if(Pt)for(var S of Pt(W))Wn.call(W,S)&&Ut(s,S,W[S]);return s},Ht=(s,W)=>Un(s,Bn(W));var Wt=(s,W,S)=>new Promise((g,d)=>{var w=M=>{try{B(S.next(M))}catch(U){d(U)}},c=M=>{try{B(S.throw(M))}catch(U){d(U)}},B=M=>M.done?g(M.value):Promise.resolve(M.value).then(w,c);B((S=S.apply(s,W)).next())});(()=>{var s=Object.create,W=Object.defineProperty,S=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,d=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,c=(L,k)=>()=>(k||L((k={exports:{}}).exports,k),k.exports),B=(L,k,q,ee)=>{if(k&&typeof k=="object"||typeof k=="function")for(let ne of g(k))!w.call(L,ne)&&ne!==q&&W(L,ne,{get:()=>k[ne],enumerable:!(ee=S(k,ne))||ee.enumerable});return L},M=(L,k,q)=>(q=L!=null?s(d(L)):{},B(k||!L||!L.__esModule?W(q,"default",{value:L,enumerable:!0}):q,L)),U=c((L,k)=>{function q(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(x=>{let j=n[x],Z=typeof j;(Z==="object"||Z==="function")&&!Object.isFrozen(j)&&q(j)}),n}var ee=class{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function ne(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function le(n,...x){let j=Object.create(null);for(let Z in n)j[Z]=n[Z];return x.forEach(function(Z){for(let de in Z)j[de]=Z[de]}),j}var ae="",se=n=>!!n.scope,ge=(n,{prefix:x})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){let j=n.split(".");return[`${x}${j.shift()}`,...j.map((Z,de)=>`${Z}${"_".repeat(de+1)}`)].join(" ")}return`${x}${n}`},ce=class{constructor(n,x){this.buffer="",this.classPrefix=x.classPrefix,n.walk(this)}addText(n){this.buffer+=ne(n)}openNode(n){if(!se(n))return;let x=ge(n.scope,{prefix:this.classPrefix});this.span(x)}closeNode(n){se(n)&&(this.buffer+=ae)}value(){return this.buffer}span(n){this.buffer+=``}},Ie=(n={})=>{let x={children:[]};return Object.assign(x,n),x},Me=class Ft{constructor(){this.rootNode=Ie(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(x){this.top.children.push(x)}openNode(x){let j=Ie({scope:x});this.add(j),this.stack.push(j)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(x){return this.constructor._walk(x,this.rootNode)}static _walk(x,j){return typeof j=="string"?x.addText(j):j.children&&(x.openNode(j),j.children.forEach(Z=>this._walk(x,Z)),x.closeNode(j)),x}static _collapse(x){typeof x!="string"&&x.children&&(x.children.every(j=>typeof j=="string")?x.children=[x.children.join("")]:x.children.forEach(j=>{Ft._collapse(j)}))}},Le=class extends Me{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,x){let j=n.root;x&&(j.scope=`language:${x}`),this.add(j)}toHTML(){return new ce(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function me(n){return n?typeof n=="string"?n:n.source:null}function Ce(n){return Te("(?=",n,")")}function De(n){return Te("(?:",n,")*")}function Pe(n){return Te("(?:",n,")?")}function Te(...n){return n.map(x=>me(x)).join("")}function ke(n){let x=n[n.length-1];return typeof x=="object"&&x.constructor===Object?(n.splice(n.length-1,1),x):{}}function ve(...n){return"("+(ke(n).capture?"":"?:")+n.map(x=>me(x)).join("|")+")"}function xe(n){return new RegExp(n.toString()+"|").exec("").length-1}function he(n,x){let j=n&&n.exec(x);return j&&j.index===0}var we=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ye(n,{joinWith:x}){let j=0;return n.map(Z=>{j+=1;let de=j,ue=me(Z),$="";for(;ue.length>0;){let V=we.exec(ue);if(!V){$+=ue;break}$+=ue.substring(0,V.index),ue=ue.substring(V.index+V[0].length),V[0][0]==="\\"&&V[1]?$+="\\"+String(Number(V[1])+de):($+=V[0],V[0]==="("&&j++)}return $}).map(Z=>`(${Z})`).join(x)}var Ge=/\b\B/,_e="[a-zA-Z]\\w*",je="[a-zA-Z_]\\w*",Xe="\\b\\d+(\\.\\d+)?",Ke="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ae="\\b(0b[01]+)",Ne="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Ue=(n={})=>{let x=/^#![ ]*\//;return n.binary&&(n.begin=Te(x,/.*\b/,n.binary,/\b.*/)),le({scope:"meta",begin:x,end:/$/,relevance:0,"on:begin":(j,Z)=>{j.index!==0&&Z.ignoreMatch()}},n)},qe={begin:"\\\\[\\s\\S]",relevance:0},Se={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[qe]},Ve={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[qe]},Qe={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},$e=function(n,x,j={}){let Z=le({scope:"comment",begin:n,end:x,contains:[]},j);Z.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let de=ve("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return Z.contains.push({begin:Te(/[ ]+/,"(",de,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),Z},st=$e("//","$"),at=$e("/\\*","\\*/"),Gt=$e("#","$"),jt={scope:"number",begin:Xe,relevance:0},Vt={scope:"number",begin:Ke,relevance:0},$t={scope:"number",begin:Ae,relevance:0},zt={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[qe,{begin:/\[/,end:/\]/,relevance:0,contains:[qe]}]},Yt={scope:"title",begin:_e,relevance:0},Xt={scope:"title",begin:je,relevance:0},Kt={begin:"\\.\\s*"+je,relevance:0},qt=function(n){return Object.assign(n,{"on:begin":(x,j)=>{j.data._beginMatch=x[1]},"on:end":(x,j)=>{j.data._beginMatch!==x[1]&&j.ignoreMatch()}})},rt=Object.freeze({__proto__:null,APOS_STRING_MODE:Se,BACKSLASH_ESCAPE:qe,BINARY_NUMBER_MODE:$t,BINARY_NUMBER_RE:Ae,COMMENT:$e,C_BLOCK_COMMENT_MODE:at,C_LINE_COMMENT_MODE:st,C_NUMBER_MODE:Vt,C_NUMBER_RE:Ke,END_SAME_AS_BEGIN:qt,HASH_COMMENT_MODE:Gt,IDENT_RE:_e,MATCH_NOTHING_RE:Ge,METHOD_GUARD:Kt,NUMBER_MODE:jt,NUMBER_RE:Xe,PHRASAL_WORDS_MODE:Qe,QUOTE_STRING_MODE:Ve,REGEXP_MODE:zt,RE_STARTERS_RE:Ne,SHEBANG:Ue,TITLE_MODE:Yt,UNDERSCORE_IDENT_RE:je,UNDERSCORE_TITLE_MODE:Xt});function Qt(n,x){n.input[n.index-1]==="."&&x.ignoreMatch()}function Zt(n,x){n.className!==void 0&&(n.scope=n.className,delete n.className)}function Jt(n,x){x&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=Qt,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function en(n,x){Array.isArray(n.illegal)&&(n.illegal=ve(...n.illegal))}function tn(n,x){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function nn(n,x){n.relevance===void 0&&(n.relevance=1)}var sn=(n,x)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");let j=Object.assign({},n);Object.keys(n).forEach(Z=>{delete n[Z]}),n.keywords=j.keywords,n.begin=Te(j.beforeMatch,Ce(j.begin)),n.starts={relevance:0,contains:[Object.assign(j,{endsParent:!0})]},n.relevance=0,delete j.beforeMatch},an=["of","and","for","in","not","or","if","then","parent","list","value"],rn="keyword";function Rt(n,x,j=rn){let Z=Object.create(null);return typeof n=="string"?de(j,n.split(" ")):Array.isArray(n)?de(j,n):Object.keys(n).forEach(function(ue){Object.assign(Z,Rt(n[ue],x,ue))}),Z;function de(ue,$){x&&($=$.map(V=>V.toLowerCase())),$.forEach(function(V){let K=V.split("|");Z[K[0]]=[ue,on(K[0],K[1])]})}}function on(n,x){return x?Number(x):ln(n)?0:1}function ln(n){return an.includes(n.toLowerCase())}var Lt={},Ze=n=>{console.error(n)},Nt=(n,...x)=>{console.log(`WARN: ${n}`,...x)},tt=(n,x)=>{Lt[`${n}/${x}`]||(console.log(`Deprecated as of ${n}. ${x}`),Lt[`${n}/${x}`]=!0)},ot=new Error;function _t(n,x,{key:j}){let Z=0,de=n[j],ue={},$={};for(let V=1;V<=x.length;V++)$[V+Z]=de[V],ue[V+Z]=!0,Z+=xe(x[V-1]);n[j]=$,n[j]._emit=ue,n[j]._multi=!0}function cn(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw Ze("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ot;if(typeof n.beginScope!="object"||n.beginScope===null)throw Ze("beginScope must be object"),ot;_t(n,n.begin,{key:"beginScope"}),n.begin=ye(n.begin,{joinWith:""})}}function dn(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw Ze("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ot;if(typeof n.endScope!="object"||n.endScope===null)throw Ze("endScope must be object"),ot;_t(n,n.end,{key:"endScope"}),n.end=ye(n.end,{joinWith:""})}}function un(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function pn(n){un(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),cn(n),dn(n)}function hn(n){function x($,V){return new RegExp(me($),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(V?"g":""))}class j{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(V,K){K.position=this.position++,this.matchIndexes[this.matchAt]=K,this.regexes.push([K,V]),this.matchAt+=xe(V)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let V=this.regexes.map(K=>K[1]);this.matcherRe=x(ye(V,{joinWith:"|"}),!0),this.lastIndex=0}exec(V){this.matcherRe.lastIndex=this.lastIndex;let K=this.matcherRe.exec(V);if(!K)return null;let fe=K.findIndex((it,Et)=>Et>0&&it!==void 0),pe=this.matchIndexes[fe];return K.splice(0,fe),Object.assign(K,pe)}}class Z{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(V){if(this.multiRegexes[V])return this.multiRegexes[V];let K=new j;return this.rules.slice(V).forEach(([fe,pe])=>K.addRule(fe,pe)),K.compile(),this.multiRegexes[V]=K,K}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(V,K){this.rules.push([V,K]),K.type==="begin"&&this.count++}exec(V){let K=this.getMatcher(this.regexIndex);K.lastIndex=this.lastIndex;let fe=K.exec(V);if(this.resumingScanAtSamePosition()&&!(fe&&fe.index===this.lastIndex)){let pe=this.getMatcher(0);pe.lastIndex=this.lastIndex+1,fe=pe.exec(V)}return fe&&(this.regexIndex+=fe.position+1,this.regexIndex===this.count&&this.considerAll()),fe}}function de($){let V=new Z;return $.contains.forEach(K=>V.addRule(K.begin,{rule:K,type:"begin"})),$.terminatorEnd&&V.addRule($.terminatorEnd,{type:"end"}),$.illegal&&V.addRule($.illegal,{type:"illegal"}),V}function ue($,V){let K=$;if($.isCompiled)return K;[Zt,tn,pn,sn].forEach(pe=>pe($,V)),n.compilerExtensions.forEach(pe=>pe($,V)),$.__beforeBegin=null,[Jt,en,nn].forEach(pe=>pe($,V)),$.isCompiled=!0;let fe=null;return typeof $.keywords=="object"&&$.keywords.$pattern&&($.keywords=Object.assign({},$.keywords),fe=$.keywords.$pattern,delete $.keywords.$pattern),fe=fe||/\w+/,$.keywords&&($.keywords=Rt($.keywords,n.case_insensitive)),K.keywordPatternRe=x(fe,!0),V&&($.begin||($.begin=/\B|\b/),K.beginRe=x(K.begin),!$.end&&!$.endsWithParent&&($.end=/\B|\b/),$.end&&(K.endRe=x(K.end)),K.terminatorEnd=me(K.end)||"",$.endsWithParent&&V.terminatorEnd&&(K.terminatorEnd+=($.end?"|":"")+V.terminatorEnd)),$.illegal&&(K.illegalRe=x($.illegal)),$.contains||($.contains=[]),$.contains=[].concat(...$.contains.map(function(pe){return En(pe==="self"?$:pe)})),$.contains.forEach(function(pe){ue(pe,K)}),$.starts&&ue($.starts,V),K.matcher=de(K),K}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=le(n.classNameAliases||{}),ue(n)}function St(n){return n?n.endsWithParent||St(n.starts):!1}function En(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(x){return le(n,{variants:null},x)})),n.cachedVariants?n.cachedVariants:St(n)?le(n,{starts:n.starts?le(n.starts):null}):Object.isFrozen(n)?le(n):n}var gn="11.11.1",mn=class extends Error{constructor(n,x){super(n),this.name="HTMLInjectionError",this.html=x}},ht=ne,yt=le,At=Symbol("nomatch"),fn=7,Ot=function(n){let x=Object.create(null),j=Object.create(null),Z=[],de=!0,ue="Could not find the language '{}', did you forget to load/include a language module?",$={disableAutodetect:!0,name:"Plain text",contains:[]},V={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Le};function K(D){return V.noHighlightRe.test(D)}function fe(D){let Y=D.className+" ";Y+=D.parentNode?D.parentNode.className:"";let te=V.languageDetectRe.exec(Y);if(te){let re=ze(te[1]);return re||(Nt(ue.replace("{}",te[1])),Nt("Falling back to no-highlight mode for this block.",D)),re?te[1]:"no-highlight"}return Y.split(/\s+/).find(re=>K(re)||ze(re))}function pe(D,Y,te){let re="",Ee="";typeof Y=="object"?(re=D,te=Y.ignoreIllegals,Ee=Y.language):(tt("10.7.0","highlight(lang, code, ...args) has been deprecated."),tt("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),Ee=D,re=Y),te===void 0&&(te=!0);let Be={code:re,language:Ee};ct("before:highlight",Be);let Ye=Be.result?Be.result:it(Be.language,Be.code,te);return Ye.code=Be.code,ct("after:highlight",Ye),Ye}function it(D,Y,te,re){let Ee=Object.create(null);function Be(F,z){return F.keywords[z]}function Ye(){if(!Q.keywords){be.addText(oe);return}let F=0;Q.keywordPatternRe.lastIndex=0;let z=Q.keywordPatternRe.exec(oe),J="";for(;z;){J+=oe.substring(F,z.index);let ie=We.case_insensitive?z[0].toLowerCase():z[0],Re=Be(Q,ie);if(Re){let[Fe,kn]=Re;if(be.addText(J),J="",Ee[ie]=(Ee[ie]||0)+1,Ee[ie]<=fn&&(pt+=kn),Fe.startsWith("_"))J+=z[0];else{let Mn=We.classNameAliases[Fe]||Fe;He(z[0],Mn)}}else J+=z[0];F=Q.keywordPatternRe.lastIndex,z=Q.keywordPatternRe.exec(oe)}J+=oe.substring(F),be.addText(J)}function dt(){if(oe==="")return;let F=null;if(typeof Q.subLanguage=="string"){if(!x[Q.subLanguage]){be.addText(oe);return}F=it(Q.subLanguage,oe,!0,Mt[Q.subLanguage]),Mt[Q.subLanguage]=F._top}else F=gt(oe,Q.subLanguage.length?Q.subLanguage:null);Q.relevance>0&&(pt+=F.relevance),be.__addSublanguage(F._emitter,F.language)}function Oe(){Q.subLanguage!=null?dt():Ye(),oe=""}function He(F,z){F!==""&&(be.startScope(z),be.addText(F),be.endScope())}function xt(F,z){let J=1,ie=z.length-1;for(;J<=ie;){if(!F._emit[J]){J++;continue}let Re=We.classNameAliases[F[J]]||F[J],Fe=z[J];Re?He(Fe,Re):(oe=Fe,Ye(),oe=""),J++}}function wt(F,z){return F.scope&&typeof F.scope=="string"&&be.openNode(We.classNameAliases[F.scope]||F.scope),F.beginScope&&(F.beginScope._wrap?(He(oe,We.classNameAliases[F.beginScope._wrap]||F.beginScope._wrap),oe=""):F.beginScope._multi&&(xt(F.beginScope,z),oe="")),Q=Object.create(F,{parent:{value:Q}}),Q}function Dt(F,z,J){let ie=he(F.endRe,J);if(ie){if(F["on:end"]){let Re=new ee(F);F["on:end"](z,Re),Re.isMatchIgnored&&(ie=!1)}if(ie){for(;F.endsParent&&F.parent;)F=F.parent;return F}}if(F.endsWithParent)return Dt(F.parent,z,J)}function Cn(F){return Q.matcher.regexIndex===0?(oe+=F[0],1):(Tt=!0,0)}function vn(F){let z=F[0],J=F.rule,ie=new ee(J),Re=[J.__beforeBegin,J["on:begin"]];for(let Fe of Re)if(Fe&&(Fe(F,ie),ie.isMatchIgnored))return Cn(z);return J.skip?oe+=z:(J.excludeBegin&&(oe+=z),Oe(),!J.returnBegin&&!J.excludeBegin&&(oe=z)),wt(J,F),J.returnBegin?0:z.length}function xn(F){let z=F[0],J=Y.substring(F.index),ie=Dt(Q,F,J);if(!ie)return At;let Re=Q;Q.endScope&&Q.endScope._wrap?(Oe(),He(z,Q.endScope._wrap)):Q.endScope&&Q.endScope._multi?(Oe(),xt(Q.endScope,F)):Re.skip?oe+=z:(Re.returnEnd||Re.excludeEnd||(oe+=z),Oe(),Re.excludeEnd&&(oe=z));do Q.scope&&be.closeNode(),!Q.skip&&!Q.subLanguage&&(pt+=Q.relevance),Q=Q.parent;while(Q!==ie.parent);return ie.starts&&wt(ie.starts,F),Re.returnEnd?0:z.length}function wn(){let F=[];for(let z=Q;z!==We;z=z.parent)z.scope&&F.unshift(z.scope);F.forEach(z=>be.openNode(z))}let ut={};function kt(F,z){let J=z&&z[0];if(oe+=F,J==null)return Oe(),0;if(ut.type==="begin"&&z.type==="end"&&ut.index===z.index&&J===""){if(oe+=Y.slice(z.index,z.index+1),!de){let ie=new Error(`0 width match regex (${D})`);throw ie.languageName=D,ie.badRule=ut.rule,ie}return 1}if(ut=z,z.type==="begin")return vn(z);if(z.type==="illegal"&&!te){let ie=new Error('Illegal lexeme "'+J+'" for mode "'+(Q.scope||"")+'"');throw ie.mode=Q,ie}else if(z.type==="end"){let ie=xn(z);if(ie!==At)return ie}if(z.type==="illegal"&&J==="")return oe+=` -`,1;if(bt>1e5&&bt>z.index*3)throw new Error("potential infinite loop, way more iterations than matches");return oe+=J,J.length}let We=ze(D);if(!We)throw Ze(ue.replace("{}",D)),new Error('Unknown language: "'+D+'"');let Dn=hn(We),ft="",Q=re||Dn,Mt={},be=new V.__emitter(V);wn();let oe="",pt=0,Je=0,bt=0,Tt=!1;try{if(We.__emitTokens)We.__emitTokens(Y,be);else{for(Q.matcher.considerAll();;){bt++,Tt?Tt=!1:Q.matcher.considerAll(),Q.matcher.lastIndex=Je;let F=Q.matcher.exec(Y);if(!F)break;let z=Y.substring(Je,F.index),J=kt(z,F);Je=F.index+J}kt(Y.substring(Je))}return be.finalize(),ft=be.toHTML(),{language:D,value:ft,relevance:pt,illegal:!1,_emitter:be,_top:Q}}catch(F){if(F.message&&F.message.includes("Illegal"))return{language:D,value:ht(Y),illegal:!0,relevance:0,_illegalBy:{message:F.message,index:Je,context:Y.slice(Je-100,Je+100),mode:F.mode,resultSoFar:ft},_emitter:be};if(de)return{language:D,value:ht(Y),illegal:!1,relevance:0,errorRaised:F,_emitter:be,_top:Q};throw F}}function Et(D){let Y={value:ht(D),illegal:!1,relevance:0,_top:$,_emitter:new V.__emitter(V)};return Y._emitter.addText(D),Y}function gt(D,Y){Y=Y||V.languages||Object.keys(x);let te=Et(D),re=Y.filter(ze).filter(vt).map(Oe=>it(Oe,D,!1));re.unshift(te);let Ee=re.sort((Oe,He)=>{if(Oe.relevance!==He.relevance)return He.relevance-Oe.relevance;if(Oe.language&&He.language){if(ze(Oe.language).supersetOf===He.language)return 1;if(ze(He.language).supersetOf===Oe.language)return-1}return 0}),[Be,Ye]=Ee,dt=Be;return dt.secondBest=Ye,dt}function bn(D,Y,te){let re=Y&&j[Y]||te;D.classList.add("hljs"),D.classList.add(`language-${re}`)}function mt(D){let Y=null,te=fe(D);if(K(te))return;if(ct("before:highlightElement",{el:D,language:te}),D.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",D);return}if(D.children.length>0&&(V.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(D)),V.throwUnescapedHTML))throw new mn("One of your code blocks includes unescaped HTML.",D.innerHTML);Y=D;let re=Y.textContent,Ee=te?pe(re,{language:te,ignoreIllegals:!0}):gt(re);D.innerHTML=Ee.value,D.dataset.highlighted="yes",bn(D,te,Ee.language),D.result={language:Ee.language,re:Ee.relevance,relevance:Ee.relevance},Ee.secondBest&&(D.secondBest={language:Ee.secondBest.language,relevance:Ee.secondBest.relevance}),ct("after:highlightElement",{el:D,result:Ee,text:re})}function Tn(D){V=yt(V,D)}let Rn=()=>{lt(),tt("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Ln(){lt(),tt("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let It=!1;function lt(){function D(){lt()}if(document.readyState==="loading"){It||window.addEventListener("DOMContentLoaded",D,!1),It=!0;return}document.querySelectorAll(V.cssSelector).forEach(mt)}function Nn(D,Y){let te=null;try{te=Y(n)}catch(re){if(Ze("Language definition for '{}' could not be registered.".replace("{}",D)),de)Ze(re);else throw re;te=$}te.name||(te.name=D),x[D]=te,te.rawDefinition=Y.bind(null,n),te.aliases&&Ct(te.aliases,{languageName:D})}function _n(D){delete x[D];for(let Y of Object.keys(j))j[Y]===D&&delete j[Y]}function Sn(){return Object.keys(x)}function ze(D){return D=(D||"").toLowerCase(),x[D]||x[j[D]]}function Ct(D,{languageName:Y}){typeof D=="string"&&(D=[D]),D.forEach(te=>{j[te.toLowerCase()]=Y})}function vt(D){let Y=ze(D);return Y&&!Y.disableAutodetect}function yn(D){D["before:highlightBlock"]&&!D["before:highlightElement"]&&(D["before:highlightElement"]=Y=>{D["before:highlightBlock"](Object.assign({block:Y.el},Y))}),D["after:highlightBlock"]&&!D["after:highlightElement"]&&(D["after:highlightElement"]=Y=>{D["after:highlightBlock"](Object.assign({block:Y.el},Y))})}function An(D){yn(D),Z.push(D)}function On(D){let Y=Z.indexOf(D);Y!==-1&&Z.splice(Y,1)}function ct(D,Y){let te=D;Z.forEach(function(re){re[te]&&re[te](Y)})}function In(D){return tt("10.7.0","highlightBlock will be removed entirely in v12.0"),tt("10.7.0","Please use highlightElement now."),mt(D)}Object.assign(n,{highlight:pe,highlightAuto:gt,highlightAll:lt,highlightElement:mt,highlightBlock:In,configure:Tn,initHighlighting:Rn,initHighlightingOnLoad:Ln,registerLanguage:Nn,unregisterLanguage:_n,listLanguages:Sn,getLanguage:ze,registerAliases:Ct,autoDetection:vt,inherit:yt,addPlugin:An,removePlugin:On}),n.debugMode=function(){de=!1},n.safeMode=function(){de=!0},n.versionString=gn,n.regex={concat:Te,lookahead:Ce,either:ve,optional:Pe,anyNumberOfTimes:De};for(let D in rt)typeof rt[D]=="object"&&q(rt[D]);return Object.assign(n,rt),n},nt=Ot({});nt.newInstance=()=>Ot({}),k.exports=nt,nt.HighlightJS=nt,nt.default=nt}),p=M(U(),1),e=p.default;function t(L){let k=L.regex,q=/(?![A-Za-z0-9])(?![$])/,ee=k.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,q),ne=k.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,q),le=k.concat(/[A-Z]+/,q),ae={scope:"variable",match:"\\$+"+ee},se={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},ge={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},ce=L.inherit(L.APOS_STRING_MODE,{illegal:null}),Ie=L.inherit(L.QUOTE_STRING_MODE,{illegal:null,contains:L.QUOTE_STRING_MODE.contains.concat(ge)}),Me={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:L.QUOTE_STRING_MODE.contains.concat(ge),"on:begin":(Ae,Ne)=>{Ne.data._beginMatch=Ae[1]||Ae[2]},"on:end":(Ae,Ne)=>{Ne.data._beginMatch!==Ae[1]&&Ne.ignoreMatch()}},Le=L.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),me=`[ -]`,Ce={scope:"string",variants:[Ie,ce,Me,Le]},De={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},Pe=["false","null","true"],Te=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],ke=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],ve={keyword:Te,literal:(Ae=>{let Ne=[];return Ae.forEach(Ue=>{Ne.push(Ue),Ue.toLowerCase()===Ue?Ne.push(Ue.toUpperCase()):Ne.push(Ue.toLowerCase())}),Ne})(Pe),built_in:ke},xe=Ae=>Ae.map(Ne=>Ne.replace(/\|\d+$/,"")),he={variants:[{match:[/new/,k.concat(me,"+"),k.concat("(?!",xe(ke).join("\\b|"),"\\b)"),ne],scope:{1:"keyword",4:"title.class"}}]},we=k.concat(ee,"\\b(?!\\()"),ye={variants:[{match:[k.concat(/::/,k.lookahead(/(?!class\b)/)),we],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[ne,k.concat(/::/,k.lookahead(/(?!class\b)/)),we],scope:{1:"title.class",3:"variable.constant"}},{match:[ne,k.concat("::",k.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[ne,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Ge={scope:"attr",match:k.concat(ee,k.lookahead(":"),k.lookahead(/(?!::)/))},_e={relevance:0,begin:/\(/,end:/\)/,keywords:ve,contains:[Ge,ae,ye,L.C_BLOCK_COMMENT_MODE,Ce,De,he]},je={relevance:0,match:[/\b/,k.concat("(?!fn\\b|function\\b|",xe(Te).join("\\b|"),"|",xe(ke).join("\\b|"),"\\b)"),ee,k.concat(me,"*"),k.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[_e]};_e.contains.push(je);let Xe=[Ge,ye,L.C_BLOCK_COMMENT_MODE,Ce,De,he],Ke={begin:k.concat(/#\[\s*\\?/,k.either(ne,le)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:Pe,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:Pe,keyword:["new","array"]},contains:["self",...Xe]},...Xe,{scope:"meta",variants:[{match:ne},{match:le}]}]};return{case_insensitive:!1,keywords:ve,contains:[Ke,L.HASH_COMMENT_MODE,L.COMMENT("//","$"),L.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:L.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},se,{scope:"variable.language",match:/\$this\b/},ae,je,ye,{match:[/const/,/\s/,ee],scope:{1:"keyword",3:"variable.constant"}},he,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},L.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:ve,contains:["self",Ke,ae,ye,L.C_BLOCK_COMMENT_MODE,Ce,De]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},L.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[L.inherit(L.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},L.UNDERSCORE_TITLE_MODE]},Ce,De]}}function r(L){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},L.inherit(L.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),L.inherit(L.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}var y="[A-Za-z$_][0-9A-Za-z$_]*",_=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],O=["true","false","null","undefined","NaN","Infinity"],v=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],G=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],P=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],A=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],f=[].concat(P,v,G);function R(L){let k=L.regex,q=(Se,{after:Ve})=>{let Qe="",end:""},le=/<[A-Za-z0-9\\._:-]+\s*\/>/,ae={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Se,Ve)=>{let Qe=Se[0].length+Se.index,$e=Se.input[Qe];if($e==="<"||$e===","){Ve.ignoreMatch();return}$e===">"&&(q(Se,{after:Qe})||Ve.ignoreMatch());let st,at=Se.input.substring(Qe);if(st=at.match(/^\s*=/)){Ve.ignoreMatch();return}if((st=at.match(/^\s+extends\s+/))&&st.index===0){Ve.ignoreMatch();return}}},se={$pattern:y,keyword:_,literal:O,built_in:f,"variable.language":A},ge="[0-9](_?[0-9])*",ce=`\\.(${ge})`,Ie="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",Me={className:"number",variants:[{begin:`(\\b(${Ie})((${ce})|\\.)?|(${ce}))[eE][+-]?(${ge})\\b`},{begin:`\\b(${Ie})\\b((${ce})\\b|\\.)?|(${ce})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},Le={className:"subst",begin:"\\$\\{",end:"\\}",keywords:se,contains:[]},me={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[L.BACKSLASH_ESCAPE,Le],subLanguage:"xml"}},Ce={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[L.BACKSLASH_ESCAPE,Le],subLanguage:"css"}},De={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[L.BACKSLASH_ESCAPE,Le],subLanguage:"graphql"}},Pe={className:"string",begin:"`",end:"`",contains:[L.BACKSLASH_ESCAPE,Le]},Te={className:"comment",variants:[L.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:ee+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),L.C_BLOCK_COMMENT_MODE,L.C_LINE_COMMENT_MODE]},ke=[L.APOS_STRING_MODE,L.QUOTE_STRING_MODE,me,Ce,De,Pe,{match:/\$\d+/},Me];Le.contains=ke.concat({begin:/\{/,end:/\}/,keywords:se,contains:["self"].concat(ke)});let ve=[].concat(Te,Le.contains),xe=ve.concat([{begin:/(\s*)\(/,end:/\)/,keywords:se,contains:["self"].concat(ve)}]),he={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:se,contains:xe},we={variants:[{match:[/class/,/\s+/,ee,/\s+/,/extends/,/\s+/,k.concat(ee,"(",k.concat(/\./,ee),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,ee],scope:{1:"keyword",3:"title.class"}}]},ye={relevance:0,match:k.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...v,...G]}},Ge={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},_e={variants:[{match:[/function/,/\s+/,ee,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[he],illegal:/%/},je={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Xe(Se){return k.concat("(?!",Se.join("|"),")")}let Ke={match:k.concat(/\b/,Xe([...P,"super","import"].map(Se=>`${Se}\\s*\\(`)),ee,k.lookahead(/\s*\(/)),className:"title.function",relevance:0},Ae={begin:k.concat(/\./,k.lookahead(k.concat(ee,/(?![0-9A-Za-z$_(])/))),end:ee,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Ne={match:[/get|set/,/\s+/,ee,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},he]},Ue="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+L.UNDERSCORE_IDENT_RE+")\\s*=>",qe={match:[/const|var|let/,/\s+/,ee,/\s*/,/=\s*/,/(async\s*)?/,k.lookahead(Ue)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[he]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:se,exports:{PARAMS_CONTAINS:xe,CLASS_REFERENCE:ye},illegal:/#(?![$_A-z])/,contains:[L.SHEBANG({label:"shebang",binary:"node",relevance:5}),Ge,L.APOS_STRING_MODE,L.QUOTE_STRING_MODE,me,Ce,De,Pe,Te,{match:/\$\d+/},Me,ye,{scope:"attr",match:ee+k.lookahead(":"),relevance:0},qe,{begin:"("+L.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[Te,L.REGEXP_MODE,{className:"function",begin:Ue,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:L.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:se,contains:xe}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:ne.begin,end:ne.end},{match:le},{begin:ae.begin,"on:begin":ae.isTrulyOpeningTag,end:ae.end}],subLanguage:"xml",contains:[{begin:ae.begin,end:ae.end,skip:!0,contains:["self"]}]}]},_e,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+L.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[he,L.inherit(L.TITLE_MODE,{begin:ee,className:"title.function"})]},{match:/\.\.\./,relevance:0},Ae,{match:"\\$"+ee,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[he]},Ke,je,we,Ne,{match:/\$[(.]/}]}}function E(L){let k=L.regex,q=L.COMMENT("--","$"),ee={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},ne={begin:/"/,end:/"/,contains:[{match:/""/}]},le=["true","false","unknown"],ae=["double precision","large object","with timezone","without timezone"],se=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],ge=["add","asc","collation","desc","final","first","last","view"],ce=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],Ie=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],Me=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],Le=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],me=Ie,Ce=[...ce,...ge].filter(he=>!Ie.includes(he)),De={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},Pe={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},Te={match:k.concat(/\b/,k.either(...me),/\s*\(/),relevance:0,keywords:{built_in:me}};function ke(he){return k.concat(/\b/,k.either(...he.map(we=>we.replace(/\s+/,"\\s+"))),/\b/)}let ve={scope:"keyword",match:ke(Le),relevance:0};function xe(he,{exceptions:we,when:ye}={}){let Ge=ye;return we=we||[],he.map(_e=>_e.match(/\|\d+$/)||we.includes(_e)?_e:Ge(_e)?`${_e}|0`:_e)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:xe(Ce,{when:he=>he.length<3}),literal:le,type:se,built_in:Me},contains:[{scope:"type",match:ke(ae)},ve,Te,De,ee,ne,L.C_NUMBER_MODE,L.C_BLOCK_COMMENT_MODE,q,Pe]}}function i(L){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var h=L=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:L.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[L.APOS_STRING_MODE,L.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:L.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),l=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],N=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],T=[...l,...N],b=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),a=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),I=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),H=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function m(L){let k=L.regex,q=h(L),ee={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},ne="and or not only",le=/@-?\w[\w]*(-\w+)*/,ae="[a-zA-Z-][a-zA-Z0-9_-]*",se=[L.APOS_STRING_MODE,L.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[q.BLOCK_COMMENT,ee,q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+ae,relevance:0},q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+a.join("|")+")"},{begin:":(:)?("+I.join("|")+")"}]},q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+H.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[q.BLOCK_COMMENT,q.HEXCOLOR,q.IMPORTANT,q.CSS_NUMBER_MODE,...se,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...se,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},q.FUNCTION_DISPATCH]},{begin:k.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:le},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:ne,attribute:b.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...se,q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+T.join("|")+")\\b"}]}}function o(L){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}function u(L){let k=L.regex,q=k.concat(/[\p{L}_]/u,k.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),ee=/[\p{L}0-9._:-]+/u,ne={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},le={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},ae=L.inherit(le,{begin:/\(/,end:/\)/}),se=L.inherit(L.APOS_STRING_MODE,{className:"string"}),ge=L.inherit(L.QUOTE_STRING_MODE,{className:"string"}),ce={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[le,ge,se,ae,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[le,ae,ge,se]}]}]},L.COMMENT(//,{relevance:10}),{begin://,relevance:10},ne,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[ge]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[ce],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[ce],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:k.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:q,relevance:0,starts:ce}]},{className:"tag",begin:k.concat(/<\//,k.lookahead(k.concat(q,/>/))),contains:[{className:"name",begin:q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function C(L){let k="true false yes no null",q="[\\w#;/?:@&=+$,.~*'()[\\]]+",ee={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},ne={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},le={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},ae={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[L.BACKSLASH_ESCAPE,ne]},se=L.inherit(ae,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),ge={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},ce={end:",",endsWithParent:!0,excludeEnd:!0,keywords:k,relevance:0},Ie={begin:/\{/,end:/\}/,contains:[ce],illegal:"\\n",relevance:0},Me={begin:"\\[",end:"\\]",contains:[ce],illegal:"\\n",relevance:0},Le=[ee,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+q},{className:"type",begin:"!<"+q+">"},{className:"type",begin:"!"+q},{className:"type",begin:"!!"+q},{className:"meta",begin:"&"+L.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+L.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},L.HASH_COMMENT_MODE,{beginKeywords:k,keywords:{literal:k}},ge,{className:"number",begin:L.C_NUMBER_RE+"\\b",relevance:0},Ie,Me,le,ae],me=[...Le];return me.pop(),me.push(se),ce.contains=me,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:Le}}e.registerLanguage("php",t),e.registerLanguage("php-template",r),e.registerLanguage("javascript",R),e.registerLanguage("sql",E),e.registerLanguage("shell",i),e.registerLanguage("css",m),e.registerLanguage("plaintext",o),e.registerLanguage("xml",u),e.registerLanguage("yaml",C);var X=e.getLanguage("sql");X.keywords.keyword=Array.from(new Set([...X.keywords.keyword,"if","ifnull","limit","aes_decrypt","aes_encrypt","ascii","bin","bit_and","bit_count","bit_length","bit_or","bit_xor","coercibility","concat","group_concat","concat_ws","connection_id","conv","curdate","curtime","database","date_add","date_format","date_sub","dayname","dayofmonth","dayofweek","dayofyear","elt","export_set","field","find_in_set","format","from_base64","from_days","from_unixtime","get_lock","greatest","hex","ifnull","inet_aton","inet_ntoa","instr","isnull","last_insert_id","least","lpad","ltrim","make_set","md5","monthname","now","oct","ord","password","quote","release_lock","repeat","replace","reverse","rpad","rtrim","sec_to_time","sha1","sha2","sleep","soundex","space","straight_join","strcmp","str_to_date","substr","sysdate","time_format","time_to_sec","to_base64","to_days","unix_timestamp","updatexml","version","week","weekday","yearweek","length","substring_index","json_unquote","json_extract","json_contains"])),X.keywords.type=Array.from(new Set([...X.keywords.type,"longtext"])),e.configure({classPrefix:"phpdebugbar-hljs-"}),globalThis.phpdebugbar_hljs=e.default})();(()=>{var s=Object.create,W=Object.defineProperty,S=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyNames,d=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,c=(i,h)=>()=>(h||i((h={exports:{}}).exports,h),h.exports),B=(i,h,l,N)=>{if(h&&typeof h=="object"||typeof h=="function")for(let T of g(h))!w.call(i,T)&&T!==l&&W(i,T,{get:()=>h[T],enumerable:!(N=S(h,T))||N.enumerable});return i},M=(i,h,l)=>(l=i!=null?s(d(i)):{},B(h||!i||!i.__esModule?W(l,"default",{value:i,enumerable:!0}):l,i)),U=c(i=>{"use strict";i.__esModule=!0;var h=/[\\^$.*+?()[\]{}|]/g,l=RegExp(h.source);function N(T){return T&&l.test(T)?T.replace(h,"\\$&"):T||""}i.default=N}),p=c(i=>{"use strict";i.__esModule=!0,i.TokenTypes=void 0;var h;(function(l){l.WHITESPACE="whitespace",l.WORD="word",l.STRING="string",l.RESERVED="reserved",l.RESERVED_TOP_LEVEL="reserved-top-level",l.RESERVED_TOP_LEVEL_NO_INDENT="reserved-top-level-no-indent",l.RESERVED_NEWLINE="reserved-newline",l.OPERATOR="operator",l.NO_SPACE_OPERATOR="no-space-operator",l.OPEN_PAREN="open-paren",l.CLOSE_PAREN="close-paren",l.LINE_COMMENT="line-comment",l.BLOCK_COMMENT="block-comment",l.NUMBER="number",l.PLACEHOLDER="placeholder",l.SERVERVARIABLE="servervariable"})(h=i.TokenTypes||(i.TokenTypes={}))}),e=c(i=>{"use strict";var h=i&&i.__importDefault||function(b){return b&&b.__esModule?b:{default:b}};i.__esModule=!0;var l=h(U()),N=p(),T=(function(){function b(a){this.WHITESPACE_REGEX=/^(\s+)/u,this.NUMBER_REGEX=/^((-\s*)?[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+|([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}))\b/u,this.AMBIGUOS_OPERATOR_REGEX=/^(\?\||\?&)/u,this.OPERATOR_REGEX=/^(!=|<>|>>|<<|==|<=|>=|!<|!>|\|\|\/|\|\/|\|\||~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|:=|=>|&&|@>|<@|#-|@@|@|.)/u,this.NO_SPACE_OPERATOR_REGEX=/^(::|->>|->|#>>|#>)/u,this.BLOCK_COMMENT_REGEX=/^(\/\*[^]*?(?:\*\/|$))/u,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(a.lineCommentTypes),this.RESERVED_TOP_LEVEL_REGEX=this.createReservedWordRegex(a.reservedTopLevelWords),this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX=this.createReservedWordRegex(a.reservedTopLevelWordsNoIndent),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(a.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(a.reservedWords),this.WORD_REGEX=this.createWordRegex(a.specialWordChars),this.STRING_REGEX=this.createStringRegex(a.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(a.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(a.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(a.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(a.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(a.namedPlaceholderTypes,this.createStringPattern(a.stringTypes))}return b.prototype.createLineCommentRegex=function(a){var I="((?|(?:[^>]))";return new RegExp("^((?:".concat(a.map(function(H){return(0,l.default)(H)}).join("|"),")").concat(I,`.*?(?:\r +(()=>{var Pn=Object.defineProperty,Bn=Object.defineProperties;var Un=Object.getOwnPropertyDescriptors;var Pt=Object.getOwnPropertySymbols;var Hn=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable;var Ut=Math.pow,Bt=(s,H,T)=>H in s?Pn(s,H,{enumerable:!0,configurable:!0,writable:!0,value:T}):s[H]=T,et=(s,H)=>{for(var T in H||(H={}))Hn.call(H,T)&&Bt(s,T,H[T]);if(Pt)for(var T of Pt(H))Wn.call(H,T)&&Bt(s,T,H[T]);return s},Ht=(s,H)=>Bn(s,Un(H));var Wt=(s,H,T)=>new Promise((S,h)=>{var k=P=>{try{U(T.next(P))}catch(B){h(B)}},d=P=>{try{U(T.throw(P))}catch(B){h(B)}},U=P=>P.done?S(P.value):Promise.resolve(P.value).then(k,d);U((T=T.apply(s,H)).next())});(()=>{var s=Object.create,H=Object.defineProperty,T=Object.getOwnPropertyDescriptor,S=Object.getOwnPropertyNames,h=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty,d=(A,M)=>()=>(M||A((M={exports:{}}).exports,M),M.exports),U=(A,M,q,ee)=>{if(M&&typeof M=="object"||typeof M=="function")for(let ne of S(M))!k.call(A,ne)&&ne!==q&&H(A,ne,{get:()=>M[ne],enumerable:!(ee=T(M,ne))||ee.enumerable});return A},P=(A,M,q)=>(q=A!=null?s(h(A)):{},U(M||!A||!A.__esModule?H(q,"default",{value:A,enumerable:!0}):q,A)),B=d((A,M)=>{function q(n){return n instanceof Map?n.clear=n.delete=n.set=function(){throw new Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=function(){throw new Error("set is read-only")}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach(x=>{let j=n[x],Z=typeof j;(Z==="object"||Z==="function")&&!Object.isFrozen(j)&&q(j)}),n}var ee=class{constructor(n){n.data===void 0&&(n.data={}),this.data=n.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function ne(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function le(n,...x){let j=Object.create(null);for(let Z in n)j[Z]=n[Z];return x.forEach(function(Z){for(let de in Z)j[de]=Z[de]}),j}var ae="",se=n=>!!n.scope,ge=(n,{prefix:x})=>{if(n.startsWith("language:"))return n.replace("language:","language-");if(n.includes(".")){let j=n.split(".");return[`${x}${j.shift()}`,...j.map((Z,de)=>`${Z}${"_".repeat(de+1)}`)].join(" ")}return`${x}${n}`},ce=class{constructor(n,x){this.buffer="",this.classPrefix=x.classPrefix,n.walk(this)}addText(n){this.buffer+=ne(n)}openNode(n){if(!se(n))return;let x=ge(n.scope,{prefix:this.classPrefix});this.span(x)}closeNode(n){se(n)&&(this.buffer+=ae)}value(){return this.buffer}span(n){this.buffer+=``}},Ie=(n={})=>{let x={children:[]};return Object.assign(x,n),x},Me=class Ft{constructor(){this.rootNode=Ie(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(x){this.top.children.push(x)}openNode(x){let j=Ie({scope:x});this.add(j),this.stack.push(j)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(x){return this.constructor._walk(x,this.rootNode)}static _walk(x,j){return typeof j=="string"?x.addText(j):j.children&&(x.openNode(j),j.children.forEach(Z=>this._walk(x,Z)),x.closeNode(j)),x}static _collapse(x){typeof x!="string"&&x.children&&(x.children.every(j=>typeof j=="string")?x.children=[x.children.join("")]:x.children.forEach(j=>{Ft._collapse(j)}))}},Le=class extends Me{constructor(n){super(),this.options=n}addText(n){n!==""&&this.add(n)}startScope(n){this.openNode(n)}endScope(){this.closeNode()}__addSublanguage(n,x){let j=n.root;x&&(j.scope=`language:${x}`),this.add(j)}toHTML(){return new ce(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function Ee(n){return n?typeof n=="string"?n:n.source:null}function Ce(n){return Te("(?=",n,")")}function ke(n){return Te("(?:",n,")*")}function Pe(n){return Te("(?:",n,")?")}function Te(...n){return n.map(x=>Ee(x)).join("")}function De(n){let x=n[n.length-1];return typeof x=="object"&&x.constructor===Object?(n.splice(n.length-1,1),x):{}}function ve(...n){return"("+(De(n).capture?"":"?:")+n.map(x=>Ee(x)).join("|")+")"}function xe(n){return new RegExp(n.toString()+"|").exec("").length-1}function he(n,x){let j=n&&n.exec(x);return j&&j.index===0}var we=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function _e(n,{joinWith:x}){let j=0;return n.map(Z=>{j+=1;let de=j,ue=Ee(Z),$="";for(;ue.length>0;){let V=we.exec(ue);if(!V){$+=ue;break}$+=ue.substring(0,V.index),ue=ue.substring(V.index+V[0].length),V[0][0]==="\\"&&V[1]?$+="\\"+String(Number(V[1])+de):($+=V[0],V[0]==="("&&j++)}return $}).map(Z=>`(${Z})`).join(x)}var Ge=/\b\B/,Ne="[a-zA-Z]\\w*",je="[a-zA-Z_]\\w*",Xe="\\b\\d+(\\.\\d+)?",Ke="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ae="\\b(0b[01]+)",ye="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Be=(n={})=>{let x=/^#![ ]*\//;return n.binary&&(n.begin=Te(x,/.*\b/,n.binary,/\b.*/)),le({scope:"meta",begin:x,end:/$/,relevance:0,"on:begin":(j,Z)=>{j.index!==0&&Z.ignoreMatch()}},n)},qe={begin:"\\\\[\\s\\S]",relevance:0},Se={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[qe]},Ve={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[qe]},Qe={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},$e=function(n,x,j={}){let Z=le({scope:"comment",begin:n,end:x,contains:[]},j);Z.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let de=ve("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return Z.contains.push({begin:Te(/[ ]+/,"(",de,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),Z},st=$e("//","$"),at=$e("/\\*","\\*/"),Gt=$e("#","$"),jt={scope:"number",begin:Xe,relevance:0},Vt={scope:"number",begin:Ke,relevance:0},$t={scope:"number",begin:Ae,relevance:0},zt={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[qe,{begin:/\[/,end:/\]/,relevance:0,contains:[qe]}]},Yt={scope:"title",begin:Ne,relevance:0},Xt={scope:"title",begin:je,relevance:0},Kt={begin:"\\.\\s*"+je,relevance:0},qt=function(n){return Object.assign(n,{"on:begin":(x,j)=>{j.data._beginMatch=x[1]},"on:end":(x,j)=>{j.data._beginMatch!==x[1]&&j.ignoreMatch()}})},rt=Object.freeze({__proto__:null,APOS_STRING_MODE:Se,BACKSLASH_ESCAPE:qe,BINARY_NUMBER_MODE:$t,BINARY_NUMBER_RE:Ae,COMMENT:$e,C_BLOCK_COMMENT_MODE:at,C_LINE_COMMENT_MODE:st,C_NUMBER_MODE:Vt,C_NUMBER_RE:Ke,END_SAME_AS_BEGIN:qt,HASH_COMMENT_MODE:Gt,IDENT_RE:Ne,MATCH_NOTHING_RE:Ge,METHOD_GUARD:Kt,NUMBER_MODE:jt,NUMBER_RE:Xe,PHRASAL_WORDS_MODE:Qe,QUOTE_STRING_MODE:Ve,REGEXP_MODE:zt,RE_STARTERS_RE:ye,SHEBANG:Be,TITLE_MODE:Yt,UNDERSCORE_IDENT_RE:je,UNDERSCORE_TITLE_MODE:Xt});function Qt(n,x){n.input[n.index-1]==="."&&x.ignoreMatch()}function Zt(n,x){n.className!==void 0&&(n.scope=n.className,delete n.className)}function Jt(n,x){x&&n.beginKeywords&&(n.begin="\\b("+n.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",n.__beforeBegin=Qt,n.keywords=n.keywords||n.beginKeywords,delete n.beginKeywords,n.relevance===void 0&&(n.relevance=0))}function en(n,x){Array.isArray(n.illegal)&&(n.illegal=ve(...n.illegal))}function tn(n,x){if(n.match){if(n.begin||n.end)throw new Error("begin & end are not supported with match");n.begin=n.match,delete n.match}}function nn(n,x){n.relevance===void 0&&(n.relevance=1)}var sn=(n,x)=>{if(!n.beforeMatch)return;if(n.starts)throw new Error("beforeMatch cannot be used with starts");let j=Object.assign({},n);Object.keys(n).forEach(Z=>{delete n[Z]}),n.keywords=j.keywords,n.begin=Te(j.beforeMatch,Ce(j.begin)),n.starts={relevance:0,contains:[Object.assign(j,{endsParent:!0})]},n.relevance=0,delete j.beforeMatch},an=["of","and","for","in","not","or","if","then","parent","list","value"],rn="keyword";function Rt(n,x,j=rn){let Z=Object.create(null);return typeof n=="string"?de(j,n.split(" ")):Array.isArray(n)?de(j,n):Object.keys(n).forEach(function(ue){Object.assign(Z,Rt(n[ue],x,ue))}),Z;function de(ue,$){x&&($=$.map(V=>V.toLowerCase())),$.forEach(function(V){let K=V.split("|");Z[K[0]]=[ue,on(K[0],K[1])]})}}function on(n,x){return x?Number(x):ln(n)?0:1}function ln(n){return an.includes(n.toLowerCase())}var Lt={},Ze=n=>{console.error(n)},yt=(n,...x)=>{console.log(`WARN: ${n}`,...x)},tt=(n,x)=>{Lt[`${n}/${x}`]||(console.log(`Deprecated as of ${n}. ${x}`),Lt[`${n}/${x}`]=!0)},ot=new Error;function Nt(n,x,{key:j}){let Z=0,de=n[j],ue={},$={};for(let V=1;V<=x.length;V++)$[V+Z]=de[V],ue[V+Z]=!0,Z+=xe(x[V-1]);n[j]=$,n[j]._emit=ue,n[j]._multi=!0}function cn(n){if(Array.isArray(n.begin)){if(n.skip||n.excludeBegin||n.returnBegin)throw Ze("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),ot;if(typeof n.beginScope!="object"||n.beginScope===null)throw Ze("beginScope must be object"),ot;Nt(n,n.begin,{key:"beginScope"}),n.begin=_e(n.begin,{joinWith:""})}}function dn(n){if(Array.isArray(n.end)){if(n.skip||n.excludeEnd||n.returnEnd)throw Ze("skip, excludeEnd, returnEnd not compatible with endScope: {}"),ot;if(typeof n.endScope!="object"||n.endScope===null)throw Ze("endScope must be object"),ot;Nt(n,n.end,{key:"endScope"}),n.end=_e(n.end,{joinWith:""})}}function un(n){n.scope&&typeof n.scope=="object"&&n.scope!==null&&(n.beginScope=n.scope,delete n.scope)}function pn(n){un(n),typeof n.beginScope=="string"&&(n.beginScope={_wrap:n.beginScope}),typeof n.endScope=="string"&&(n.endScope={_wrap:n.endScope}),cn(n),dn(n)}function hn(n){function x($,V){return new RegExp(Ee($),"m"+(n.case_insensitive?"i":"")+(n.unicodeRegex?"u":"")+(V?"g":""))}class j{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(V,K){K.position=this.position++,this.matchIndexes[this.matchAt]=K,this.regexes.push([K,V]),this.matchAt+=xe(V)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let V=this.regexes.map(K=>K[1]);this.matcherRe=x(_e(V,{joinWith:"|"}),!0),this.lastIndex=0}exec(V){this.matcherRe.lastIndex=this.lastIndex;let K=this.matcherRe.exec(V);if(!K)return null;let fe=K.findIndex((it,mt)=>mt>0&&it!==void 0),pe=this.matchIndexes[fe];return K.splice(0,fe),Object.assign(K,pe)}}class Z{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(V){if(this.multiRegexes[V])return this.multiRegexes[V];let K=new j;return this.rules.slice(V).forEach(([fe,pe])=>K.addRule(fe,pe)),K.compile(),this.multiRegexes[V]=K,K}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(V,K){this.rules.push([V,K]),K.type==="begin"&&this.count++}exec(V){let K=this.getMatcher(this.regexIndex);K.lastIndex=this.lastIndex;let fe=K.exec(V);if(this.resumingScanAtSamePosition()&&!(fe&&fe.index===this.lastIndex)){let pe=this.getMatcher(0);pe.lastIndex=this.lastIndex+1,fe=pe.exec(V)}return fe&&(this.regexIndex+=fe.position+1,this.regexIndex===this.count&&this.considerAll()),fe}}function de($){let V=new Z;return $.contains.forEach(K=>V.addRule(K.begin,{rule:K,type:"begin"})),$.terminatorEnd&&V.addRule($.terminatorEnd,{type:"end"}),$.illegal&&V.addRule($.illegal,{type:"illegal"}),V}function ue($,V){let K=$;if($.isCompiled)return K;[Zt,tn,pn,sn].forEach(pe=>pe($,V)),n.compilerExtensions.forEach(pe=>pe($,V)),$.__beforeBegin=null,[Jt,en,nn].forEach(pe=>pe($,V)),$.isCompiled=!0;let fe=null;return typeof $.keywords=="object"&&$.keywords.$pattern&&($.keywords=Object.assign({},$.keywords),fe=$.keywords.$pattern,delete $.keywords.$pattern),fe=fe||/\w+/,$.keywords&&($.keywords=Rt($.keywords,n.case_insensitive)),K.keywordPatternRe=x(fe,!0),V&&($.begin||($.begin=/\B|\b/),K.beginRe=x(K.begin),!$.end&&!$.endsWithParent&&($.end=/\B|\b/),$.end&&(K.endRe=x(K.end)),K.terminatorEnd=Ee(K.end)||"",$.endsWithParent&&V.terminatorEnd&&(K.terminatorEnd+=($.end?"|":"")+V.terminatorEnd)),$.illegal&&(K.illegalRe=x($.illegal)),$.contains||($.contains=[]),$.contains=[].concat(...$.contains.map(function(pe){return mn(pe==="self"?$:pe)})),$.contains.forEach(function(pe){ue(pe,K)}),$.starts&&ue($.starts,V),K.matcher=de(K),K}if(n.compilerExtensions||(n.compilerExtensions=[]),n.contains&&n.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return n.classNameAliases=le(n.classNameAliases||{}),ue(n)}function St(n){return n?n.endsWithParent||St(n.starts):!1}function mn(n){return n.variants&&!n.cachedVariants&&(n.cachedVariants=n.variants.map(function(x){return le(n,{variants:null},x)})),n.cachedVariants?n.cachedVariants:St(n)?le(n,{starts:n.starts?le(n.starts):null}):Object.isFrozen(n)?le(n):n}var gn="11.11.1",En=class extends Error{constructor(n,x){super(n),this.name="HTMLInjectionError",this.html=x}},ht=ne,_t=le,At=Symbol("nomatch"),fn=7,Ot=function(n){let x=Object.create(null),j=Object.create(null),Z=[],de=!0,ue="Could not find the language '{}', did you forget to load/include a language module?",$={disableAutodetect:!0,name:"Plain text",contains:[]},V={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Le};function K(D){return V.noHighlightRe.test(D)}function fe(D){let Y=D.className+" ";Y+=D.parentNode?D.parentNode.className:"";let te=V.languageDetectRe.exec(Y);if(te){let re=ze(te[1]);return re||(yt(ue.replace("{}",te[1])),yt("Falling back to no-highlight mode for this block.",D)),re?te[1]:"no-highlight"}return Y.split(/\s+/).find(re=>K(re)||ze(re))}function pe(D,Y,te){let re="",me="";typeof Y=="object"?(re=D,te=Y.ignoreIllegals,me=Y.language):(tt("10.7.0","highlight(lang, code, ...args) has been deprecated."),tt("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),me=D,re=Y),te===void 0&&(te=!0);let Ue={code:re,language:me};ct("before:highlight",Ue);let Ye=Ue.result?Ue.result:it(Ue.language,Ue.code,te);return Ye.code=Ue.code,ct("after:highlight",Ye),Ye}function it(D,Y,te,re){let me=Object.create(null);function Ue(F,z){return F.keywords[z]}function Ye(){if(!Q.keywords){be.addText(oe);return}let F=0;Q.keywordPatternRe.lastIndex=0;let z=Q.keywordPatternRe.exec(oe),J="";for(;z;){J+=oe.substring(F,z.index);let ie=We.case_insensitive?z[0].toLowerCase():z[0],Re=Ue(Q,ie);if(Re){let[Fe,Dn]=Re;if(be.addText(J),J="",me[ie]=(me[ie]||0)+1,me[ie]<=fn&&(pt+=Dn),Fe.startsWith("_"))J+=z[0];else{let Mn=We.classNameAliases[Fe]||Fe;He(z[0],Mn)}}else J+=z[0];F=Q.keywordPatternRe.lastIndex,z=Q.keywordPatternRe.exec(oe)}J+=oe.substring(F),be.addText(J)}function dt(){if(oe==="")return;let F=null;if(typeof Q.subLanguage=="string"){if(!x[Q.subLanguage]){be.addText(oe);return}F=it(Q.subLanguage,oe,!0,Mt[Q.subLanguage]),Mt[Q.subLanguage]=F._top}else F=gt(oe,Q.subLanguage.length?Q.subLanguage:null);Q.relevance>0&&(pt+=F.relevance),be.__addSublanguage(F._emitter,F.language)}function Oe(){Q.subLanguage!=null?dt():Ye(),oe=""}function He(F,z){F!==""&&(be.startScope(z),be.addText(F),be.endScope())}function xt(F,z){let J=1,ie=z.length-1;for(;J<=ie;){if(!F._emit[J]){J++;continue}let Re=We.classNameAliases[F[J]]||F[J],Fe=z[J];Re?He(Fe,Re):(oe=Fe,Ye(),oe=""),J++}}function wt(F,z){return F.scope&&typeof F.scope=="string"&&be.openNode(We.classNameAliases[F.scope]||F.scope),F.beginScope&&(F.beginScope._wrap?(He(oe,We.classNameAliases[F.beginScope._wrap]||F.beginScope._wrap),oe=""):F.beginScope._multi&&(xt(F.beginScope,z),oe="")),Q=Object.create(F,{parent:{value:Q}}),Q}function kt(F,z,J){let ie=he(F.endRe,J);if(ie){if(F["on:end"]){let Re=new ee(F);F["on:end"](z,Re),Re.isMatchIgnored&&(ie=!1)}if(ie){for(;F.endsParent&&F.parent;)F=F.parent;return F}}if(F.endsWithParent)return kt(F.parent,z,J)}function Cn(F){return Q.matcher.regexIndex===0?(oe+=F[0],1):(Tt=!0,0)}function vn(F){let z=F[0],J=F.rule,ie=new ee(J),Re=[J.__beforeBegin,J["on:begin"]];for(let Fe of Re)if(Fe&&(Fe(F,ie),ie.isMatchIgnored))return Cn(z);return J.skip?oe+=z:(J.excludeBegin&&(oe+=z),Oe(),!J.returnBegin&&!J.excludeBegin&&(oe=z)),wt(J,F),J.returnBegin?0:z.length}function xn(F){let z=F[0],J=Y.substring(F.index),ie=kt(Q,F,J);if(!ie)return At;let Re=Q;Q.endScope&&Q.endScope._wrap?(Oe(),He(z,Q.endScope._wrap)):Q.endScope&&Q.endScope._multi?(Oe(),xt(Q.endScope,F)):Re.skip?oe+=z:(Re.returnEnd||Re.excludeEnd||(oe+=z),Oe(),Re.excludeEnd&&(oe=z));do Q.scope&&be.closeNode(),!Q.skip&&!Q.subLanguage&&(pt+=Q.relevance),Q=Q.parent;while(Q!==ie.parent);return ie.starts&&wt(ie.starts,F),Re.returnEnd?0:z.length}function wn(){let F=[];for(let z=Q;z!==We;z=z.parent)z.scope&&F.unshift(z.scope);F.forEach(z=>be.openNode(z))}let ut={};function Dt(F,z){let J=z&&z[0];if(oe+=F,J==null)return Oe(),0;if(ut.type==="begin"&&z.type==="end"&&ut.index===z.index&&J===""){if(oe+=Y.slice(z.index,z.index+1),!de){let ie=new Error(`0 width match regex (${D})`);throw ie.languageName=D,ie.badRule=ut.rule,ie}return 1}if(ut=z,z.type==="begin")return vn(z);if(z.type==="illegal"&&!te){let ie=new Error('Illegal lexeme "'+J+'" for mode "'+(Q.scope||"")+'"');throw ie.mode=Q,ie}else if(z.type==="end"){let ie=xn(z);if(ie!==At)return ie}if(z.type==="illegal"&&J==="")return oe+=` +`,1;if(bt>1e5&&bt>z.index*3)throw new Error("potential infinite loop, way more iterations than matches");return oe+=J,J.length}let We=ze(D);if(!We)throw Ze(ue.replace("{}",D)),new Error('Unknown language: "'+D+'"');let kn=hn(We),ft="",Q=re||kn,Mt={},be=new V.__emitter(V);wn();let oe="",pt=0,Je=0,bt=0,Tt=!1;try{if(We.__emitTokens)We.__emitTokens(Y,be);else{for(Q.matcher.considerAll();;){bt++,Tt?Tt=!1:Q.matcher.considerAll(),Q.matcher.lastIndex=Je;let F=Q.matcher.exec(Y);if(!F)break;let z=Y.substring(Je,F.index),J=Dt(z,F);Je=F.index+J}Dt(Y.substring(Je))}return be.finalize(),ft=be.toHTML(),{language:D,value:ft,relevance:pt,illegal:!1,_emitter:be,_top:Q}}catch(F){if(F.message&&F.message.includes("Illegal"))return{language:D,value:ht(Y),illegal:!0,relevance:0,_illegalBy:{message:F.message,index:Je,context:Y.slice(Je-100,Je+100),mode:F.mode,resultSoFar:ft},_emitter:be};if(de)return{language:D,value:ht(Y),illegal:!1,relevance:0,errorRaised:F,_emitter:be,_top:Q};throw F}}function mt(D){let Y={value:ht(D),illegal:!1,relevance:0,_top:$,_emitter:new V.__emitter(V)};return Y._emitter.addText(D),Y}function gt(D,Y){Y=Y||V.languages||Object.keys(x);let te=mt(D),re=Y.filter(ze).filter(vt).map(Oe=>it(Oe,D,!1));re.unshift(te);let me=re.sort((Oe,He)=>{if(Oe.relevance!==He.relevance)return He.relevance-Oe.relevance;if(Oe.language&&He.language){if(ze(Oe.language).supersetOf===He.language)return 1;if(ze(He.language).supersetOf===Oe.language)return-1}return 0}),[Ue,Ye]=me,dt=Ue;return dt.secondBest=Ye,dt}function bn(D,Y,te){let re=Y&&j[Y]||te;D.classList.add("hljs"),D.classList.add(`language-${re}`)}function Et(D){let Y=null,te=fe(D);if(K(te))return;if(ct("before:highlightElement",{el:D,language:te}),D.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",D);return}if(D.children.length>0&&(V.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(D)),V.throwUnescapedHTML))throw new En("One of your code blocks includes unescaped HTML.",D.innerHTML);Y=D;let re=Y.textContent,me=te?pe(re,{language:te,ignoreIllegals:!0}):gt(re);D.innerHTML=me.value,D.dataset.highlighted="yes",bn(D,te,me.language),D.result={language:me.language,re:me.relevance,relevance:me.relevance},me.secondBest&&(D.secondBest={language:me.secondBest.language,relevance:me.secondBest.relevance}),ct("after:highlightElement",{el:D,result:me,text:re})}function Tn(D){V=_t(V,D)}let Rn=()=>{lt(),tt("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function Ln(){lt(),tt("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let It=!1;function lt(){function D(){lt()}if(document.readyState==="loading"){It||window.addEventListener("DOMContentLoaded",D,!1),It=!0;return}document.querySelectorAll(V.cssSelector).forEach(Et)}function yn(D,Y){let te=null;try{te=Y(n)}catch(re){if(Ze("Language definition for '{}' could not be registered.".replace("{}",D)),de)Ze(re);else throw re;te=$}te.name||(te.name=D),x[D]=te,te.rawDefinition=Y.bind(null,n),te.aliases&&Ct(te.aliases,{languageName:D})}function Nn(D){delete x[D];for(let Y of Object.keys(j))j[Y]===D&&delete j[Y]}function Sn(){return Object.keys(x)}function ze(D){return D=(D||"").toLowerCase(),x[D]||x[j[D]]}function Ct(D,{languageName:Y}){typeof D=="string"&&(D=[D]),D.forEach(te=>{j[te.toLowerCase()]=Y})}function vt(D){let Y=ze(D);return Y&&!Y.disableAutodetect}function _n(D){D["before:highlightBlock"]&&!D["before:highlightElement"]&&(D["before:highlightElement"]=Y=>{D["before:highlightBlock"](Object.assign({block:Y.el},Y))}),D["after:highlightBlock"]&&!D["after:highlightElement"]&&(D["after:highlightElement"]=Y=>{D["after:highlightBlock"](Object.assign({block:Y.el},Y))})}function An(D){_n(D),Z.push(D)}function On(D){let Y=Z.indexOf(D);Y!==-1&&Z.splice(Y,1)}function ct(D,Y){let te=D;Z.forEach(function(re){re[te]&&re[te](Y)})}function In(D){return tt("10.7.0","highlightBlock will be removed entirely in v12.0"),tt("10.7.0","Please use highlightElement now."),Et(D)}Object.assign(n,{highlight:pe,highlightAuto:gt,highlightAll:lt,highlightElement:Et,highlightBlock:In,configure:Tn,initHighlighting:Rn,initHighlightingOnLoad:Ln,registerLanguage:yn,unregisterLanguage:Nn,listLanguages:Sn,getLanguage:ze,registerAliases:Ct,autoDetection:vt,inherit:_t,addPlugin:An,removePlugin:On}),n.debugMode=function(){de=!1},n.safeMode=function(){de=!0},n.versionString=gn,n.regex={concat:Te,lookahead:Ce,either:ve,optional:Pe,anyNumberOfTimes:ke};for(let D in rt)typeof rt[D]=="object"&&q(rt[D]);return Object.assign(n,rt),n},nt=Ot({});nt.newInstance=()=>Ot({}),M.exports=nt,nt.HighlightJS=nt,nt.default=nt}),_=P(B(),1),O=_.default;function I(A){let M=A.regex,q=/(?![A-Za-z0-9])(?![$])/,ee=M.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,q),ne=M.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,q),le=M.concat(/[A-Z]+/,q),ae={scope:"variable",match:"\\$+"+ee},se={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},ge={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},ce=A.inherit(A.APOS_STRING_MODE,{illegal:null}),Ie=A.inherit(A.QUOTE_STRING_MODE,{illegal:null,contains:A.QUOTE_STRING_MODE.contains.concat(ge)}),Me={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:A.QUOTE_STRING_MODE.contains.concat(ge),"on:begin":(Ae,ye)=>{ye.data._beginMatch=Ae[1]||Ae[2]},"on:end":(Ae,ye)=>{ye.data._beginMatch!==Ae[1]&&ye.ignoreMatch()}},Le=A.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),Ee=`[ +]`,Ce={scope:"string",variants:[Ie,ce,Me,Le]},ke={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},Pe=["false","null","true"],Te=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],De=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],ve={keyword:Te,literal:(Ae=>{let ye=[];return Ae.forEach(Be=>{ye.push(Be),Be.toLowerCase()===Be?ye.push(Be.toUpperCase()):ye.push(Be.toLowerCase())}),ye})(Pe),built_in:De},xe=Ae=>Ae.map(ye=>ye.replace(/\|\d+$/,"")),he={variants:[{match:[/new/,M.concat(Ee,"+"),M.concat("(?!",xe(De).join("\\b|"),"\\b)"),ne],scope:{1:"keyword",4:"title.class"}}]},we=M.concat(ee,"\\b(?!\\()"),_e={variants:[{match:[M.concat(/::/,M.lookahead(/(?!class\b)/)),we],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[ne,M.concat(/::/,M.lookahead(/(?!class\b)/)),we],scope:{1:"title.class",3:"variable.constant"}},{match:[ne,M.concat("::",M.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[ne,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Ge={scope:"attr",match:M.concat(ee,M.lookahead(":"),M.lookahead(/(?!::)/))},Ne={relevance:0,begin:/\(/,end:/\)/,keywords:ve,contains:[Ge,ae,_e,A.C_BLOCK_COMMENT_MODE,Ce,ke,he]},je={relevance:0,match:[/\b/,M.concat("(?!fn\\b|function\\b|",xe(Te).join("\\b|"),"|",xe(De).join("\\b|"),"\\b)"),ee,M.concat(Ee,"*"),M.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[Ne]};Ne.contains.push(je);let Xe=[Ge,_e,A.C_BLOCK_COMMENT_MODE,Ce,ke,he],Ke={begin:M.concat(/#\[\s*\\?/,M.either(ne,le)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:Pe,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:Pe,keyword:["new","array"]},contains:["self",...Xe]},...Xe,{scope:"meta",variants:[{match:ne},{match:le}]}]};return{case_insensitive:!1,keywords:ve,contains:[Ke,A.HASH_COMMENT_MODE,A.COMMENT("//","$"),A.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:A.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},se,{scope:"variable.language",match:/\$this\b/},ae,je,_e,{match:[/const/,/\s/,ee],scope:{1:"keyword",3:"variable.constant"}},he,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},A.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:ve,contains:["self",Ke,ae,_e,A.C_BLOCK_COMMENT_MODE,Ce,ke]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},A.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[A.inherit(A.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},A.UNDERSCORE_TITLE_MODE]},Ce,ke]}}function G(A){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},A.inherit(A.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),A.inherit(A.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}var w="[A-Za-z$_][0-9A-Za-z$_]*",e=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],t=["true","false","null","undefined","NaN","Infinity"],i=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],E=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],g=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],u=[].concat(g,i,E);function b(A){let M=A.regex,q=(Se,{after:Ve})=>{let Qe="",end:""},le=/<[A-Za-z0-9\\._:-]+\s*\/>/,ae={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Se,Ve)=>{let Qe=Se[0].length+Se.index,$e=Se.input[Qe];if($e==="<"||$e===","){Ve.ignoreMatch();return}$e===">"&&(q(Se,{after:Qe})||Ve.ignoreMatch());let st,at=Se.input.substring(Qe);if(st=at.match(/^\s*=/)){Ve.ignoreMatch();return}if((st=at.match(/^\s+extends\s+/))&&st.index===0){Ve.ignoreMatch();return}}},se={$pattern:w,keyword:e,literal:t,built_in:u,"variable.language":c},ge="[0-9](_?[0-9])*",ce=`\\.(${ge})`,Ie="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",Me={className:"number",variants:[{begin:`(\\b(${Ie})((${ce})|\\.)?|(${ce}))[eE][+-]?(${ge})\\b`},{begin:`\\b(${Ie})\\b((${ce})\\b|\\.)?|(${ce})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},Le={className:"subst",begin:"\\$\\{",end:"\\}",keywords:se,contains:[]},Ee={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[A.BACKSLASH_ESCAPE,Le],subLanguage:"xml"}},Ce={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[A.BACKSLASH_ESCAPE,Le],subLanguage:"css"}},ke={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[A.BACKSLASH_ESCAPE,Le],subLanguage:"graphql"}},Pe={className:"string",begin:"`",end:"`",contains:[A.BACKSLASH_ESCAPE,Le]},Te={className:"comment",variants:[A.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:ee+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),A.C_BLOCK_COMMENT_MODE,A.C_LINE_COMMENT_MODE]},De=[A.APOS_STRING_MODE,A.QUOTE_STRING_MODE,Ee,Ce,ke,Pe,{match:/\$\d+/},Me];Le.contains=De.concat({begin:/\{/,end:/\}/,keywords:se,contains:["self"].concat(De)});let ve=[].concat(Te,Le.contains),xe=ve.concat([{begin:/(\s*)\(/,end:/\)/,keywords:se,contains:["self"].concat(ve)}]),he={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:se,contains:xe},we={variants:[{match:[/class/,/\s+/,ee,/\s+/,/extends/,/\s+/,M.concat(ee,"(",M.concat(/\./,ee),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,ee],scope:{1:"keyword",3:"title.class"}}]},_e={relevance:0,match:M.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...i,...E]}},Ge={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},Ne={variants:[{match:[/function/,/\s+/,ee,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[he],illegal:/%/},je={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Xe(Se){return M.concat("(?!",Se.join("|"),")")}let Ke={match:M.concat(/\b/,Xe([...g,"super","import"].map(Se=>`${Se}\\s*\\(`)),ee,M.lookahead(/\s*\(/)),className:"title.function",relevance:0},Ae={begin:M.concat(/\./,M.lookahead(M.concat(ee,/(?![0-9A-Za-z$_(])/))),end:ee,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ye={match:[/get|set/,/\s+/,ee,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},he]},Be="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+A.UNDERSCORE_IDENT_RE+")\\s*=>",qe={match:[/const|var|let/,/\s+/,ee,/\s*/,/=\s*/,/(async\s*)?/,M.lookahead(Be)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[he]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:se,exports:{PARAMS_CONTAINS:xe,CLASS_REFERENCE:_e},illegal:/#(?![$_A-z])/,contains:[A.SHEBANG({label:"shebang",binary:"node",relevance:5}),Ge,A.APOS_STRING_MODE,A.QUOTE_STRING_MODE,Ee,Ce,ke,Pe,Te,{match:/\$\d+/},Me,_e,{scope:"attr",match:ee+M.lookahead(":"),relevance:0},qe,{begin:"("+A.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[Te,A.REGEXP_MODE,{className:"function",begin:Be,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:A.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:se,contains:xe}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:ne.begin,end:ne.end},{match:le},{begin:ae.begin,"on:begin":ae.isTrulyOpeningTag,end:ae.end}],subLanguage:"xml",contains:[{begin:ae.begin,end:ae.end,skip:!0,contains:["self"]}]}]},Ne,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+A.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[he,A.inherit(A.TITLE_MODE,{begin:ee,className:"title.function"})]},{match:/\.\.\./,relevance:0},Ae,{match:"\\$"+ee,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[he]},Ke,je,we,ye,{match:/\$[(.]/}]}}function f(A){let M=A.regex,q=A.COMMENT("--","$"),ee={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},ne={begin:/"/,end:/"/,contains:[{match:/""/}]},le=["true","false","unknown"],ae=["double precision","large object","with timezone","without timezone"],se=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],ge=["add","asc","collation","desc","final","first","last","view"],ce=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],Ie=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],Me=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],Le=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],Ee=Ie,Ce=[...ce,...ge].filter(he=>!Ie.includes(he)),ke={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},Pe={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},Te={match:M.concat(/\b/,M.either(...Ee),/\s*\(/),relevance:0,keywords:{built_in:Ee}};function De(he){return M.concat(/\b/,M.either(...he.map(we=>we.replace(/\s+/,"\\s+"))),/\b/)}let ve={scope:"keyword",match:De(Le),relevance:0};function xe(he,{exceptions:we,when:_e}={}){let Ge=_e;return we=we||[],he.map(Ne=>Ne.match(/\|\d+$/)||we.includes(Ne)?Ne:Ge(Ne)?`${Ne}|0`:Ne)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:xe(Ce,{when:he=>he.length<3}),literal:le,type:se,built_in:Me},contains:[{scope:"type",match:De(ae)},ve,Te,ke,ee,ne,A.C_NUMBER_MODE,A.C_BLOCK_COMMENT_MODE,q,Pe]}}function a(A){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}var m=A=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:A.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[A.APOS_STRING_MODE,A.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:A.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),o=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],y=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],L=[...o,...y],R=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),r=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),C=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),W=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function N(A){let M=A.regex,q=m(A),ee={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},ne="and or not only",le=/@-?\w[\w]*(-\w+)*/,ae="[a-zA-Z-][a-zA-Z0-9_-]*",se=[A.APOS_STRING_MODE,A.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[q.BLOCK_COMMENT,ee,q.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+ae,relevance:0},q.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+r.join("|")+")"},{begin:":(:)?("+C.join("|")+")"}]},q.CSS_VARIABLE,{className:"attribute",begin:"\\b("+W.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[q.BLOCK_COMMENT,q.HEXCOLOR,q.IMPORTANT,q.CSS_NUMBER_MODE,...se,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...se,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},q.FUNCTION_DISPATCH]},{begin:M.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:le},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:ne,attribute:R.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...se,q.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+L.join("|")+")\\b"}]}}function l(A){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}function p(A){let M=A.regex,q=M.concat(/[\p{L}_]/u,M.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),ee=/[\p{L}0-9._:-]+/u,ne={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},le={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},ae=A.inherit(le,{begin:/\(/,end:/\)/}),se=A.inherit(A.APOS_STRING_MODE,{className:"string"}),ge=A.inherit(A.QUOTE_STRING_MODE,{className:"string"}),ce={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[le,ge,se,ae,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[le,ae,ge,se]}]}]},A.COMMENT(//,{relevance:10}),{begin://,relevance:10},ne,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[ge]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[ce],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[ce],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:M.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:q,relevance:0,starts:ce}]},{className:"tag",begin:M.concat(/<\//,M.lookahead(M.concat(q,/>/))),contains:[{className:"name",begin:q,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function v(A){let M="true false yes no null",q="[\\w#;/?:@&=+$,.~*'()[\\]]+",ee={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},ne={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},le={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},ae={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[A.BACKSLASH_ESCAPE,ne]},se=A.inherit(ae,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),ge={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},ce={end:",",endsWithParent:!0,excludeEnd:!0,keywords:M,relevance:0},Ie={begin:/\{/,end:/\}/,contains:[ce],illegal:"\\n",relevance:0},Me={begin:"\\[",end:"\\]",contains:[ce],illegal:"\\n",relevance:0},Le=[ee,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+q},{className:"type",begin:"!<"+q+">"},{className:"type",begin:"!"+q},{className:"type",begin:"!!"+q},{className:"meta",begin:"&"+A.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+A.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},A.HASH_COMMENT_MODE,{beginKeywords:M,keywords:{literal:M}},ge,{className:"number",begin:A.C_NUMBER_RE+"\\b",relevance:0},Ie,Me,le,ae],Ee=[...Le];return Ee.pop(),Ee.push(se),ce.contains=Ee,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:Le}}O.registerLanguage("php",I),O.registerLanguage("php-template",G),O.registerLanguage("javascript",b),O.registerLanguage("sql",f),O.registerLanguage("shell",a),O.registerLanguage("css",N),O.registerLanguage("plaintext",l),O.registerLanguage("xml",p),O.registerLanguage("yaml",v);var X=O.getLanguage("sql");X.keywords.keyword=Array.from(new Set([...X.keywords.keyword,"if","ifnull","limit","aes_decrypt","aes_encrypt","ascii","bin","bit_and","bit_count","bit_length","bit_or","bit_xor","coercibility","concat","group_concat","concat_ws","connection_id","conv","curdate","curtime","database","date_add","date_format","date_sub","dayname","dayofmonth","dayofweek","dayofyear","elt","export_set","field","find_in_set","format","from_base64","from_days","from_unixtime","get_lock","greatest","hex","ifnull","inet_aton","inet_ntoa","instr","isnull","last_insert_id","least","lpad","ltrim","make_set","md5","monthname","now","oct","ord","password","quote","release_lock","repeat","replace","reverse","rpad","rtrim","sec_to_time","sha1","sha2","sleep","soundex","space","straight_join","strcmp","str_to_date","substr","sysdate","time_format","time_to_sec","to_base64","to_days","unix_timestamp","updatexml","version","week","weekday","yearweek","length","substring_index","json_unquote","json_extract","json_contains"])),X.keywords.type=Array.from(new Set([...X.keywords.type,"longtext"])),O.configure({classPrefix:"phpdebugbar-hljs-"}),globalThis.phpdebugbar_hljs=O.default})();(()=>{var s=Object.create,H=Object.defineProperty,T=Object.getOwnPropertyDescriptor,S=Object.getOwnPropertyNames,h=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty,d=(a,m)=>()=>(m||a((m={exports:{}}).exports,m),m.exports),U=(a,m,o,y)=>{if(m&&typeof m=="object"||typeof m=="function")for(let L of S(m))!k.call(a,L)&&L!==o&&H(a,L,{get:()=>m[L],enumerable:!(y=T(m,L))||y.enumerable});return a},P=(a,m,o)=>(o=a!=null?s(h(a)):{},U(m||!a||!a.__esModule?H(o,"default",{value:a,enumerable:!0}):o,a)),B=d(a=>{"use strict";a.__esModule=!0;var m=/[\\^$.*+?()[\]{}|]/g,o=RegExp(m.source);function y(L){return L&&o.test(L)?L.replace(m,"\\$&"):L||""}a.default=y}),_=d(a=>{"use strict";a.__esModule=!0,a.TokenTypes=void 0;var m;(function(o){o.WHITESPACE="whitespace",o.WORD="word",o.STRING="string",o.RESERVED="reserved",o.RESERVED_TOP_LEVEL="reserved-top-level",o.RESERVED_TOP_LEVEL_NO_INDENT="reserved-top-level-no-indent",o.RESERVED_NEWLINE="reserved-newline",o.OPERATOR="operator",o.NO_SPACE_OPERATOR="no-space-operator",o.OPEN_PAREN="open-paren",o.CLOSE_PAREN="close-paren",o.LINE_COMMENT="line-comment",o.BLOCK_COMMENT="block-comment",o.NUMBER="number",o.PLACEHOLDER="placeholder",o.SERVERVARIABLE="servervariable"})(m=a.TokenTypes||(a.TokenTypes={}))}),O=d(a=>{"use strict";var m=a&&a.__importDefault||function(R){return R&&R.__esModule?R:{default:R}};a.__esModule=!0;var o=m(B()),y=_(),L=(function(){function R(r){this.WHITESPACE_REGEX=/^(\s+)/u,this.NUMBER_REGEX=/^((-\s*)?[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+|([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}))\b/u,this.AMBIGUOS_OPERATOR_REGEX=/^(\?\||\?&)/u,this.OPERATOR_REGEX=/^(!=|<>|>>|<<|==|<=|>=|!<|!>|\|\|\/|\|\/|\|\||~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|:=|=>|&&|@>|<@|#-|@@|@|.)/u,this.NO_SPACE_OPERATOR_REGEX=/^(::|->>|->|#>>|#>)/u,this.BLOCK_COMMENT_REGEX=/^(\/\*[^]*?(?:\*\/|$))/u,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(r.lineCommentTypes),this.RESERVED_TOP_LEVEL_REGEX=this.createReservedWordRegex(r.reservedTopLevelWords),this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX=this.createReservedWordRegex(r.reservedTopLevelWordsNoIndent),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(r.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(r.reservedWords),this.WORD_REGEX=this.createWordRegex(r.specialWordChars),this.STRING_REGEX=this.createStringRegex(r.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(r.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(r.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(r.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(r.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(r.namedPlaceholderTypes,this.createStringPattern(r.stringTypes))}return R.prototype.createLineCommentRegex=function(r){var C="((?|(?:[^>]))";return new RegExp("^((?:".concat(r.map(function(W){return(0,o.default)(W)}).join("|"),")").concat(C,`.*?(?:\r |\r| -|$))`),"u")},b.prototype.createReservedWordRegex=function(a){var I=a.join("|").replace(/ /gu,"\\s+");return new RegExp("^(".concat(I,")\\b"),"iu")},b.prototype.createWordRegex=function(a){return new RegExp("^([\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}".concat(a.join(""),"]+)"),"u")},b.prototype.createStringRegex=function(a){return new RegExp("^("+this.createStringPattern(a)+")","u")},b.prototype.createStringPattern=function(a){var I={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)","E''":"(((E|e)'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)"};return a.map(function(H){return I[H]}).join("|")},b.prototype.createParenRegex=function(a){var I=this;return new RegExp("^("+a.map(function(H){return I.escapeParen(H)}).join("|")+")","iu")},b.prototype.escapeParen=function(a){return a.length===1?(0,l.default)(a):"\\b"+a+"\\b"},b.prototype.createPlaceholderRegex=function(a,I){if(!a||a.length===0)return null;var H=a.map(l.default).join("|");return new RegExp("^((?:".concat(H,")(?:").concat(I,"))"),"u")},b.prototype.tokenize=function(a){if(!a)return[];for(var I=[],H;a.length;)H=this.getNextToken(a,H),a=a.substring(H.value.length),I.push(H);return I},b.prototype.getNextToken=function(a,I){return this.getWhitespaceToken(a)||this.getCommentToken(a)||this.getStringToken(a)||this.getOpenParenToken(a)||this.getCloseParenToken(a)||this.getAmbiguosOperatorToken(a)||this.getNoSpaceOperatorToken(a)||this.getServerVariableToken(a)||this.getPlaceholderToken(a)||this.getNumberToken(a)||this.getReservedWordToken(a,I)||this.getWordToken(a)||this.getOperatorToken(a)},b.prototype.getWhitespaceToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.WHITESPACE,regex:this.WHITESPACE_REGEX})},b.prototype.getCommentToken=function(a){return this.getLineCommentToken(a)||this.getBlockCommentToken(a)},b.prototype.getLineCommentToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.LINE_COMMENT,regex:this.LINE_COMMENT_REGEX})},b.prototype.getBlockCommentToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.BLOCK_COMMENT,regex:this.BLOCK_COMMENT_REGEX})},b.prototype.getStringToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.STRING,regex:this.STRING_REGEX})},b.prototype.getOpenParenToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.OPEN_PAREN,regex:this.OPEN_PAREN_REGEX})},b.prototype.getCloseParenToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.CLOSE_PAREN,regex:this.CLOSE_PAREN_REGEX})},b.prototype.getPlaceholderToken=function(a){return this.getIdentNamedPlaceholderToken(a)||this.getStringNamedPlaceholderToken(a)||this.getIndexedPlaceholderToken(a)},b.prototype.getServerVariableToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.SERVERVARIABLE,regex:/(^@@\w+)/iu})},b.prototype.getIdentNamedPlaceholderToken=function(a){return this.getPlaceholderTokenWithKey({input:a,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:function(I){return I.slice(1)}})},b.prototype.getStringNamedPlaceholderToken=function(a){var I=this;return this.getPlaceholderTokenWithKey({input:a,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:function(H){return I.getEscapedPlaceholderKey({key:H.slice(2,-1),quoteChar:H.slice(-1)})}})},b.prototype.getIndexedPlaceholderToken=function(a){return this.getPlaceholderTokenWithKey({input:a,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:function(I){return I.slice(1)}})},b.prototype.getPlaceholderTokenWithKey=function(a){var I=a.input,H=a.regex,m=a.parseKey,o=this.getTokenOnFirstMatch({input:I,regex:H,type:N.TokenTypes.PLACEHOLDER});return o&&(o.key=m(o.value)),o},b.prototype.getEscapedPlaceholderKey=function(a){var I=a.key,H=a.quoteChar;return I.replace(new RegExp((0,l.default)("\\"+H),"gu"),H)},b.prototype.getNumberToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.NUMBER,regex:this.NUMBER_REGEX})},b.prototype.getOperatorToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.OPERATOR,regex:this.OPERATOR_REGEX})},b.prototype.getAmbiguosOperatorToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.OPERATOR,regex:this.AMBIGUOS_OPERATOR_REGEX})},b.prototype.getNoSpaceOperatorToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.NO_SPACE_OPERATOR,regex:this.NO_SPACE_OPERATOR_REGEX})},b.prototype.getReservedWordToken=function(a,I){if(!(I&&I.value&&I.value==="."))return this.getToplevelReservedToken(a)||this.getNewlineReservedToken(a)||this.getTopLevelReservedTokenNoIndent(a)||this.getPlainReservedToken(a)},b.prototype.getToplevelReservedToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.RESERVED_TOP_LEVEL,regex:this.RESERVED_TOP_LEVEL_REGEX})},b.prototype.getNewlineReservedToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.RESERVED_NEWLINE,regex:this.RESERVED_NEWLINE_REGEX})},b.prototype.getPlainReservedToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.RESERVED,regex:this.RESERVED_PLAIN_REGEX})},b.prototype.getTopLevelReservedTokenNoIndent=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT,regex:this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX})},b.prototype.getWordToken=function(a){return this.getTokenOnFirstMatch({input:a,type:N.TokenTypes.WORD,regex:this.WORD_REGEX})},b.prototype.getTokenOnFirstMatch=function(a){var I=a.input,H=a.type,m=a.regex,o=I.match(m);if(o)return{type:H,value:o[1]}},b})();i.default=T}),t=c(i=>{"use strict";i.__esModule=!0;var h=function(l){return l===void 0&&(l=[]),l[l.length-1]};i.default=h}),r=c(i=>{"use strict";var h=i&&i.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};i.__esModule=!0;var l=h(t()),N="top-level",T="block-level",b=(function(){function a(I){this.indent=I,this.indentTypes=[],this.indent=I||" "}return a.prototype.getIndent=function(){return new Array(this.indentTypes.length).fill(this.indent).join("")},a.prototype.increaseTopLevel=function(){this.indentTypes.push(N)},a.prototype.increaseBlockLevel=function(){this.indentTypes.push(T)},a.prototype.decreaseTopLevel=function(){(0,l.default)(this.indentTypes)===N&&this.indentTypes.pop()},a.prototype.decreaseBlockLevel=function(){for(;this.indentTypes.length>0;){var I=this.indentTypes.pop();if(I!==N)break}},a.prototype.resetIndentation=function(){this.indentTypes=[]},a})();i.default=b}),y=c(i=>{"use strict";i.__esModule=!0;var h=p(),l=50,N=(function(){function T(){this.level=0}return T.prototype.beginIfPossible=function(b,a){this.level===0&&this.isInlineBlock(b,a)?this.level=1:this.level>0?this.level++:this.level=0},T.prototype.end=function(){this.level--},T.prototype.isActive=function(){return this.level>0},T.prototype.isInlineBlock=function(b,a){for(var I=0,H=0,m=a;ml)return!1;if(o.type===h.TokenTypes.OPEN_PAREN)H++;else if(o.type===h.TokenTypes.CLOSE_PAREN&&(H--,H===0))return!0;if(this.isForbiddenToken(o))return!1}return!1},T.prototype.isForbiddenToken=function(b){var a=b.type,I=b.value;return a===h.TokenTypes.RESERVED_TOP_LEVEL||a===h.TokenTypes.RESERVED_NEWLINE||a===h.TokenTypes.LINE_COMMENT||a===h.TokenTypes.BLOCK_COMMENT||I===";"},T})();i.default=N}),_=c(i=>{"use strict";i.__esModule=!0;var h=(function(){function l(N){this.params=N,this.index=0,this.params=N}return l.prototype.get=function(N){var T=N.key,b=N.value;return this.params?T?this.params[T]:this.params[this.index++]:b},l})();i.default=h}),O=c(i=>{"use strict";var h=i&&i.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};i.__esModule=!0;var l=p(),N=h(r()),T=h(y()),b=h(_()),a=[" "," "],I=function(m){for(var o=m.length-1;o>=0&&a.includes(m[o]);)o--;return m.substring(0,o+1)},H=(function(){function m(o,u,C){this.cfg=o,this.tokenizer=u,this.tokenOverride=C,this.tokens=[],this.previousReservedWord={type:null,value:null},this.previousNonWhiteSpace={type:null,value:null},this.index=0,this.indentation=new N.default(this.cfg.indent),this.inlineBlock=new T.default,this.params=new b.default(this.cfg.params)}return m.prototype.format=function(o){this.tokens=this.tokenizer.tokenize(o);var u=this.getFormattedQueryFromTokens();return u.trim()},m.prototype.getFormattedQueryFromTokens=function(){var o=this,u="";return this.tokens.forEach(function(C,X){o.index=X,o.tokenOverride&&(C=o.tokenOverride(C,o.previousReservedWord)||C),C.type===l.TokenTypes.WHITESPACE?u=o.formatWhitespace(C,u):C.type===l.TokenTypes.LINE_COMMENT?u=o.formatLineComment(C,u):C.type===l.TokenTypes.BLOCK_COMMENT?u=o.formatBlockComment(C,u):C.type===l.TokenTypes.RESERVED_TOP_LEVEL||C.type===l.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT||C.type===l.TokenTypes.RESERVED_NEWLINE||C.type===l.TokenTypes.RESERVED?u=o.formatReserved(C,u):C.type===l.TokenTypes.OPEN_PAREN?u=o.formatOpeningParentheses(C,u):C.type===l.TokenTypes.CLOSE_PAREN?u=o.formatClosingParentheses(C,u):C.type===l.TokenTypes.NO_SPACE_OPERATOR?u=o.formatWithoutSpaces(C,u):C.type===l.TokenTypes.PLACEHOLDER||C.type===l.TokenTypes.SERVERVARIABLE?u=o.formatPlaceholder(C,u):C.value===","?u=o.formatComma(C,u):C.value===":"?u=o.formatWithSpaceAfter(C,u):C.value==="."?u=o.formatWithoutSpaces(C,u):C.value===";"?u=o.formatQuerySeparator(C,u):u=o.formatWithSpaces(C,u),C.type!==l.TokenTypes.WHITESPACE&&(o.previousNonWhiteSpace=C)}),u},m.prototype.formatWhitespace=function(o,u){return this.cfg.linesBetweenQueries==="preserve"&&/((\r\n|\n)(\r\n|\n)+)/u.test(o.value)&&this.previousToken().value===";"?u.replace(/(\n|\r\n)$/u,"")+o.value:u},m.prototype.formatReserved=function(o,u){return o.type===l.TokenTypes.RESERVED_NEWLINE&&this.previousReservedWord&&this.previousReservedWord.value&&o.value.toUpperCase()==="AND"&&this.previousReservedWord.value.toUpperCase()==="BETWEEN"&&(o.type=l.TokenTypes.RESERVED),o.type===l.TokenTypes.RESERVED_TOP_LEVEL?u=this.formatTopLevelReservedWord(o,u):o.type===l.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT?u=this.formatTopLevelReservedWordNoIndent(o,u):o.type===l.TokenTypes.RESERVED_NEWLINE?u=this.formatNewlineReservedWord(o,u):u=this.formatWithSpaces(o,u),this.previousReservedWord=o,u},m.prototype.formatLineComment=function(o,u){return this.addNewline(u+o.value)},m.prototype.formatBlockComment=function(o,u){return this.addNewline(this.addNewline(u)+this.indentComment(o.value))},m.prototype.indentComment=function(o){return o.replace(/\n[ \t]*/gu,` -`+this.indentation.getIndent()+" ")},m.prototype.formatTopLevelReservedWordNoIndent=function(o,u){return this.indentation.decreaseTopLevel(),u=this.addNewline(u)+this.equalizeWhitespace(this.formatReservedWord(o.value)),this.addNewline(u)},m.prototype.formatTopLevelReservedWord=function(o,u){var C=this.previousNonWhiteSpace.value!==","&&!["GRANT"].includes("".concat(this.previousNonWhiteSpace.value).toUpperCase());return C&&(this.indentation.decreaseTopLevel(),u=this.addNewline(u)),u=u+this.equalizeWhitespace(this.formatReservedWord(o.value))+" ",C&&this.indentation.increaseTopLevel(),u},m.prototype.formatNewlineReservedWord=function(o,u){return this.addNewline(u)+this.equalizeWhitespace(this.formatReservedWord(o.value))+" "},m.prototype.equalizeWhitespace=function(o){return o.replace(/\s+/gu," ")},m.prototype.formatOpeningParentheses=function(o,u){o.value=this.formatCase(o.value);var C=this.previousToken().type;return C!==l.TokenTypes.WHITESPACE&&C!==l.TokenTypes.OPEN_PAREN&&C!==l.TokenTypes.LINE_COMMENT&&(u=I(u)),u+=o.value,this.inlineBlock.beginIfPossible(this.tokens,this.index),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),u=this.addNewline(u)),u},m.prototype.formatClosingParentheses=function(o,u){return o.value=this.formatCase(o.value),this.inlineBlock.isActive()?(this.inlineBlock.end(),this.formatWithSpaceAfter(o,u)):(this.indentation.decreaseBlockLevel(),this.formatWithSpaces(o,this.addNewline(u)))},m.prototype.formatPlaceholder=function(o,u){return u+this.params.get(o)+" "},m.prototype.formatComma=function(o,u){return u=I(u)+o.value+" ",this.inlineBlock.isActive()||/^LIMIT$/iu.test(this.previousReservedWord.value)?u:this.addNewline(u)},m.prototype.formatWithSpaceAfter=function(o,u){return I(u)+o.value+" "},m.prototype.formatWithoutSpaces=function(o,u){return I(u)+o.value},m.prototype.formatWithSpaces=function(o,u){var C=o.type===l.TokenTypes.RESERVED?this.formatReservedWord(o.value):o.value;return u+C+" "},m.prototype.formatReservedWord=function(o){return this.formatCase(o)},m.prototype.formatQuerySeparator=function(o,u){this.indentation.resetIndentation();var C=` -`;return this.cfg.linesBetweenQueries!=="preserve"&&(C=` -`.repeat(this.cfg.linesBetweenQueries||1)),I(u)+o.value+C},m.prototype.addNewline=function(o){return o=I(o),o.endsWith(` -`)||(o+=` -`),o+this.indentation.getIndent()},m.prototype.previousToken=function(){return this.tokens[this.index-1]||{type:null,value:null}},m.prototype.formatCase=function(o){return this.cfg.reservedWordCase==="upper"?o.toUpperCase():this.cfg.reservedWordCase==="lower"?o.toLowerCase():o},m})();i.default=H}),v=c(i=>{"use strict";var h=i&&i.__importDefault||function(b){return b&&b.__esModule?b:{default:b}};i.__esModule=!0;var l=h(e()),N=h(O()),T=(function(){function b(a){this.cfg=a}return b.prototype.format=function(a){return new N.default(this.cfg,this.tokenizer(),this.tokenOverride).format(a)},b.prototype.tokenize=function(a){return this.tokenizer().tokenize(a)},b.prototype.tokenizer=function(){return new l.default(this.getTokenizerConfig())},b})();i.default=T}),G=c(i=>{"use strict";var h=i&&i.__extends||(function(){var m=function(o,u){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,X){C.__proto__=X}||function(C,X){for(var L in X)Object.prototype.hasOwnProperty.call(X,L)&&(C[L]=X[L])},m(o,u)};return function(o,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");m(o,u);function C(){this.constructor=o}o.prototype=u===null?Object.create(u):(C.prototype=u.prototype,new C)}})(),l=i&&i.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};i.__esModule=!0;var N=l(v()),T=(function(m){h(o,m);function o(){return m!==null&&m.apply(this,arguments)||this}return o.prototype.getTokenizerConfig=function(){return{reservedWords:b,reservedTopLevelWords:a,reservedNewlineWords:H,reservedTopLevelWordsNoIndent:I,stringTypes:['""',"''","``","[]"],openParens:["("],closeParens:[")"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["#","@"]}},o})(N.default);i.default=T;var b=["ABS","ACTIVATE","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","ANY","ARE","ARRAY","AS","ASC","ASENSITIVE","ASSOCIATE","ASUTIME","ASYMMETRIC","AT","ATOMIC","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","AVG","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BLOB","BOOLEAN","BOTH","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CCSID","CEIL","CEILING","CHAR","CHARACTER","CHARACTER_LENGTH","CHAR_LENGTH","CHECK","CLOB","CLONE","CLOSE","CLUSTER","COALESCE","COLLATE","COLLECT","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","CONVERT","CORR","CORRESPONDING","COUNT","COUNT_BIG","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DATE","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DEREF","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DOUBLE","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELEMENT","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPTION","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXP","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FILTER","FINAL","FIRST","FLOAT","FLOOR","FOR","FOREIGN","FREE","FULL","FUNCTION","FUSION","GENERAL","GENERATED","GET","GLOBAL","GOTO","GRANT","GRAPHIC","GROUP","GROUPING","HANDLER","HASH","HASHED_VALUE","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INT","INTEGER","INTEGRITY","INTERSECTION","INTERVAL","INTO","IS","ISOBID","ISOLATION","ITERATE","JAR","JAVA","KEEP","KEY","LABEL","LANGUAGE","LARGE","LATERAL","LC_CTYPE","LEADING","LEAVE","LEFT","LIKE","LINKTYPE","LN","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LONG","LOOP","LOWER","MAINTAINED","MATCH","MATERIALIZED","MAX","MAXVALUE","MEMBER","MERGE","METHOD","MICROSECOND","MICROSECONDS","MIN","MINUTE","MINUTES","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MONTHS","MULTISET","NAN","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZE","NORMALIZED","NOT","NULL","NULLIF","NULLS","NUMERIC","NUMPARTS","OBID","OCTET_LENGTH","OF","OFFSET","OLD","OLD_TABLE","ON","ONLY","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","ORDER","OUT","OUTER","OVER","OVERLAPS","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PIECESIZE","PLAN","POSITION","POWER","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","REAL","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCOPE","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SIGNAL","SIMILAR","SIMPLE","SMALLINT","SNAN","SOME","SOURCE","SPECIFIC","SPECIFICTYPE","SQL","SQLEXCEPTION","SQLID","SQLSTATE","SQLWARNING","SQRT","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STDDEV_POP","STDDEV_SAMP","STOGROUP","STORES","STYLE","SUBMULTISET","SUBSTRING","SUM","SUMMARY","SYMMETRIC","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","TABLESPACE","THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSACTION","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TYPE","UESCAPE","UNDO","UNIQUE","UNKNOWN","UNNEST","UNTIL","UPPER","USAGE","USER","USING","VALIDPROC","VALUE","VARCHAR","VARIABLE","VARIANT","VARYING","VAR_POP","VAR_SAMP","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHILE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],a=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INTERSECT","LIMIT","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UPDATE","VALUES","WHERE"],I=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],H=["AND","CROSS JOIN","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN"]}),P=c(i=>{"use strict";var h=i&&i.__extends||(function(){var m=function(o,u){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,X){C.__proto__=X}||function(C,X){for(var L in X)Object.prototype.hasOwnProperty.call(X,L)&&(C[L]=X[L])},m(o,u)};return function(o,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");m(o,u);function C(){this.constructor=o}o.prototype=u===null?Object.create(u):(C.prototype=u.prototype,new C)}})(),l=i&&i.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};i.__esModule=!0;var N=l(v()),T=(function(m){h(o,m);function o(){return m!==null&&m.apply(this,arguments)||this}return o.prototype.getTokenizerConfig=function(){return{reservedWords:b,reservedTopLevelWords:a,reservedNewlineWords:H,reservedTopLevelWordsNoIndent:I,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"],specialWordChars:[]}},o})(N.default);i.default=T;var b=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],a=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],I=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],H=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"]}),A=c(i=>{"use strict";var h=i&&i.__extends||(function(){var o=function(u,C){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(X,L){X.__proto__=L}||function(X,L){for(var k in L)Object.prototype.hasOwnProperty.call(L,k)&&(X[k]=L[k])},o(u,C)};return function(u,C){if(typeof C!="function"&&C!==null)throw new TypeError("Class extends value "+String(C)+" is not a constructor or null");o(u,C);function X(){this.constructor=u}u.prototype=C===null?Object.create(C):(X.prototype=C.prototype,new X)}})(),l=i&&i.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};i.__esModule=!0;var N=l(v()),T=p(),b=(function(o){h(u,o);function u(){var C=o!==null&&o.apply(this,arguments)||this;return C.tokenOverride=function(X,L){if(X.type===T.TokenTypes.RESERVED_TOP_LEVEL&&L.value&&X.value.toUpperCase()==="SET"&&L.value.toUpperCase()==="BY")return X.type=T.TokenTypes.RESERVED,X},C}return u.prototype.getTokenizerConfig=function(){return{reservedWords:a,reservedTopLevelWords:I,reservedNewlineWords:m,reservedTopLevelWordsNoIndent:H,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]}},u})(N.default);i.default=b;var a=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BREADTH","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DEPTH","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","END","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SEARCH","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],I=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","END","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UPDATE","VALUES","WHERE"],H=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],m=["AND","CROSS APPLY","CROSS JOIN","ELSE","END","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"]}),f=c(i=>{"use strict";var h=i&&i.__extends||(function(){var m=function(o,u){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(C,X){C.__proto__=X}||function(C,X){for(var L in X)Object.prototype.hasOwnProperty.call(X,L)&&(C[L]=X[L])},m(o,u)};return function(o,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");m(o,u);function C(){this.constructor=o}o.prototype=u===null?Object.create(u):(C.prototype=u.prototype,new C)}})(),l=i&&i.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};i.__esModule=!0;var N=l(v()),T=(function(m){h(o,m);function o(){return m!==null&&m.apply(this,arguments)||this}return o.prototype.getTokenizerConfig=function(){return{reservedWords:b,reservedTopLevelWords:a,reservedNewlineWords:H,reservedTopLevelWordsNoIndent:I,stringTypes:['""',"N''","''","``","[]","E''"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":","%","$"],lineCommentTypes:["#","--"],specialWordChars:[]}},o})(N.default);i.default=T;var b=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","COUNT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DAY","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRIGGER","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],a=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","CREATE OR REPLACE","DECLARE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GO","GRANT","GROUP BY","HAVING","INSERT INTO","INSERT","LIMIT","MODIFY","ORDER BY","RETURNING","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UPDATE","VALUES","WHERE"],I=["INTERSECT ALL","INTERSECT","MINUS","UNION ALL","UNION"],H=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","FULL JOIN","FULL OUTER JOIN","LEFT JOIN","LEFT OUTER JOIN","NATURAL JOIN","OR","OUTER APPLY","OUTER JOIN","RENAME","RIGHT JOIN","RIGHT OUTER JOIN","JOIN","WHEN","XOR"]}),R=c(i=>{"use strict";var h=i&&i.__importDefault||function(H){return H&&H.__esModule?H:{default:H}};i.__esModule=!0,i.tokenize=i.format=void 0;var l=h(G()),N=h(P()),T=h(A()),b=h(f()),a=function(H,m){switch(m===void 0&&(m={}),m.language){case"db2":return new l.default(m).format(H);case"n1ql":return new N.default(m).format(H);case"pl/sql":return new T.default(m).format(H);default:return new b.default(m).format(H)}};i.format=a;var I=function(H,m){return m===void 0&&(m={}),new b.default(m).tokenize(H)};i.tokenize=I,i.default={format:i.format,tokenize:i.tokenize}}),E=M(R(),1);globalThis.phpdebugbar_sqlformatter=E.default.default})();window.PhpDebugBar=window.PhpDebugBar||{};(function(){const s=window.PhpDebugBar;s.utils=s.utils||{};const W=s.utils.getDictValue=function(p,e,t){if(p==null)return t;const r=String(e).split(".");let y=p;for(const _ of r)if(y==null||(y=y[_],y===void 0))return t;return y};s.utils.csscls=function(p,e){const t=String(p).trim();return t.includes(" ")?t.split(/\s+/).filter(Boolean).map(r=>s.utils.csscls(r,e)).join(" "):t.startsWith(".")?`.${e}${t.slice(1)}`:e+t},s.utils.makecsscls=function(p){return e=>s.utils.csscls(e,p)};const S=s.utils.makecsscls("phpdebugbar-");s.utils.sfDump=function(p){typeof window.Sfdump=="function"&&p.querySelectorAll("pre.sf-dump[id]").forEach(e=>{window.Sfdump(e.id,{maxDepth:0})})},s.utils.schedule=function(p){return window.requestIdleCallback?window.requestIdleCallback(p,{timeout:1e3}):setTimeout(p,0)};class g{get tagName(){return"div"}constructor(e={}){this._attributes=et({},this.defaults),this._boundAttributes={},this.el=document.createElement(this.tagName),this.className&&this.el.classList.add(...this.className.split(" ")),this.initialize(e),this.render()}initialize(e){this.set(e)}render(){}set(e,t){const r=typeof e=="string"?{[e]:t}:e,y=[];for(const _ in r)if(t=r[_],this._attributes[_]=t,this._boundAttributes[_])for(const O of this._boundAttributes[_])y.includes(O)||(O.call(this,t),y.push(O))}has(e){return this._attributes[e]!==void 0&&this._attributes[e]!==null}get(e){return this._attributes[e]}bindAttr(e,t){if(Array.isArray(e)){for(const r of e)this.bindAttr(r,t);return}if(this._boundAttributes[e]||(this._boundAttributes[e]=[]),t instanceof HTMLElement){const r=t;t=y=>r.textContent=y||""}this._boundAttributes[e].push(t),this.has(e)&&t.call(this,this._attributes[e])}static extend(e){const t=this;class r extends t{}for(const y in e){const _=Object.getOwnPropertyDescriptor(e,y);_&&Object.defineProperty(r.prototype,y,_)}return Object.assign(r,t),r.__super__=t.prototype,r}}g.prototype.defaults={},s.Widget=g;class d extends g{get className(){return S("panel")}render(){this.active=!1,this.tab=document.createElement("a"),this.tab.classList.add(S("tab")),this.icon=document.createElement("i"),this.tab.append(this.icon),this.bindAttr("icon",function(t){t?this.icon.className=`phpdebugbar-icon phpdebugbar-icon-${t}`:this.icon.className=""});const e=document.createElement("span");e.classList.add(S("text")),this.tab.append(e),this.bindAttr("title",e),this.badge=document.createElement("span"),this.badge.classList.add(S("badge")),this.tab.append(this.badge),this.bindAttr("badge",function(t){t!==null?(this.badge.textContent=t,this.badge.classList.add(S("visible"))):this.badge.classList.remove(S("visible"))}),this.bindAttr("widget",function(t){this.el.innerHTML="",this.el.append(t.el)}),this.widgetRendered=!1,this.bindAttr("data",function(t){this.has("widget")&&(this.tab.setAttribute("data-empty",Object.keys(t).length===0||t.count===0),!this.widgetRendered&&this.active&&t!=null?this.renderWidgetData():this.widgetRendered=!1)})}renderWidgetData(){const e=this.get("data"),t=this.get("widget");e==null||!t||(t.set("data",e),s.utils.schedule(()=>{s.utils.sfDump(t.el)}),this.widgetRendered=!0)}show(){const e=S("active");this.tab.classList.add(e),this.tab.hidden=!1,this.el.classList.add(e),this.el.hidden=!1,this.active=!0,this.widgetRendered||this.renderWidgetData()}hide(){const e=S("active");this.tab.classList.remove(e),this.el.classList.remove(e),this.el.hidden=!0,this.active=!1}}class w extends g{get tagName(){return"span"}get className(){return S("indicator")}render(){this.icon=document.createElement("i"),this.el.append(this.icon),this.bindAttr("icon",function(t){t?this.icon.className=`phpdebugbar-icon phpdebugbar-icon-${t}`:this.icon.className=""}),this.bindAttr("link",function(t){t?(this.el.addEventListener("click",()=>{this.get("debugbar").showTab(t)}),this.el.style.cursor="pointer"):this.el.style.cursor=""});const e=document.createElement("span");e.classList.add(S("text")),this.el.append(e),this.bindAttr(["title","data"],e),this.tooltip=document.createElement("span"),this.tooltip.classList.add(S("tooltip"),S("disabled")),this.el.append(this.tooltip),this.bindAttr("tooltip",function(t){if(t)if(Array.isArray(t)||typeof t=="object"){const r=document.createElement("dl");for(const[y,_]of Object.entries(t)){const O=document.createElement("dt");O.textContent=y,r.append(O);const v=document.createElement("dd");v.textContent=_,r.append(v)}this.tooltip.innerHTML="",this.tooltip.append(r),this.tooltip.classList.remove(S("disabled"))}else this.tooltip.textContent=t,this.tooltip.classList.remove(S("disabled"));else this.tooltip.classList.add(S("disabled"))})}}class c extends g{get tagName(){return"form"}get className(){return S("settings")}initialize(e){this.set(e);const t=this.get("debugbar");this.settings=JSON.parse(localStorage.getItem("phpdebugbar-settings"))||{};for(const r in t.options)r in this.settings&&(t.options[r]=this.settings[r]),r==="theme"?t.setTheme(t.options[r]):t.el.setAttribute(`data-${r}`,t.options[r])}clearSettings(){const e=this.get("debugbar");if(localStorage.removeItem("phpdebugbar-settings"),localStorage.removeItem("phpdebugbar-ajaxhandler-autoshow"),this.settings={},e.options=et({},e.defaultOptions),e.ajaxHandler){const t=e.ajaxHandler.defaultAutoShow;e.ajaxHandler.setAutoShow(t),this.set("autoshow",t),e.controls.__datasets&&e.controls.__datasets.get("widget").set("autoshow",this.autoshow.checked)}this.initialize(e.options)}storeSetting(e,t){this.settings[e]=t;const r=this.get("debugbar");r.options[e]=t,e!=="theme"&&r.el.setAttribute(`data-${e}`,t),localStorage.setItem("phpdebugbar-settings",JSON.stringify(this.settings))}render(){this.el.innerHTML="";const e=this.get("debugbar"),t=this,r={},y=document.createElement("select");y.innerHTML='',y.value=e.options.theme,y.addEventListener("change",function(){t.storeSetting("theme",this.value),e.setTheme(this.value)}),r.Theme=y;const _=document.createElement("select");_.innerHTML='',_.value=e.options.openBtnPosition,_.addEventListener("change",function(){t.storeSetting("openBtnPosition",this.value),this.value==="topLeft"||this.value==="topRight"?t.storeSetting("toolbarPosition","top"):t.storeSetting("toolbarPosition","bottom"),t.get("debugbar").recomputeBottomOffset()}),r["Toolbar Position"]=_,this.hideEmptyTabs=document.createElement("input"),this.hideEmptyTabs.type="checkbox",this.hideEmptyTabs.checked=e.options.hideEmptyTabs,this.hideEmptyTabs.addEventListener("click",function(){t.storeSetting("hideEmptyTabs",this.checked),t.get("debugbar").respCSSSize=0,t.get("debugbar").resize()});const O=document.createElement("label");O.append(this.hideEmptyTabs,"Hide empty tabs until they have data"),r["Hide Empty Tabs"]=O;const v=document.createElement("input");v.type="checkbox",v.checked=e.options.showFullscreenBtn,v.addEventListener("click",function(){t.storeSetting("showFullscreenBtn",this.checked),e.toggleFullscreenBtn(this.checked)});const G=document.createElement("label");G.append(v,"Show fullscreen button in toolbar"),r.Fullscreen=G,this.autoshow=document.createElement("input"),this.autoshow.type="checkbox",this.autoshow.checked=e.ajaxHandler&&e.ajaxHandler.autoShow,this.autoshow.addEventListener("click",function(){e.ajaxHandler&&e.ajaxHandler.setAutoShow(this.checked),e.controls.__datasets&&e.controls.__datasets.get("widget").set("autoshow",this.checked),e.datasetSwitcherWidget&&e.datasetSwitcherWidget.set("autoshow",this.checked)}),this.bindAttr("autoshow",function(){this.autoshow.checked=this.get("autoshow");const f=this.autoshow.closest(`.${S("form-row")}`);f&&(f.style.display="")});const P=document.createElement("label");P.append(this.autoshow,"Automatically show new incoming Ajax requests"),r.Autoshow=P;const A=document.createElement("button");A.textContent="Reset settings",A.addEventListener("click",f=>{f.preventDefault(),t.clearSettings(),t.render()}),r["Reset to defaults"]=A;for(const[f,R]of Object.entries(r)){const E=document.createElement("div");E.classList.add(S("form-row"));const i=document.createElement("div");i.classList.add(S("form-label")),i.textContent=f,E.append(i);const h=document.createElement("div");h.classList.add(S("form-input")),R instanceof HTMLElement?h.append(R):h.innerHTML=R,E.append(h),t.el.append(E)}e.ajaxHandler||(this.autoshow.closest(`.${S("form-row")}`).style.display="none")}}class B{constructor(e){this.debugbar=e}format(e,t,r,y){if(r=r?` ${r}`:"",y=y||Object.keys(this.debugbar.datasets).length,t.__meta===void 0)return`#${y}${r}`;const _=t.__meta.uri.split("/");let O=_.pop();O||(O=`${_.pop()||""}/`),_.length&&!Number.isNaN(O)&&(O=`${_.pop()}/${O}`);const v=150;return O.length>v&&(O=`${O.substr(0,v)}...`),`#${y} ${O}${r} (${t.__meta.datetime.split(" ")[1]})`}}s.DatasetTitleFormater=B;class M extends g{get className(){return"phpdebugbar"}initialize(e={}){this.options=Object.assign({bodyBottomInset:!0,theme:"auto",toolbarPosition:"bottom",openBtnPosition:"bottomLeft",hideEmptyTabs:!1,showFullscreenBtn:!1,spaNavigationEvents:[]},e),this.defaultOptions=et({},this.options),this.controls={},this.dataMap={},this.datasets={},this.firstTabName=null,this.activePanelName=null,this.activeDatasetId=null,this.pendingDataSetId=null,this.datesetTitleFormater=new B(this);const t=window.getComputedStyle(document.body);this.bodyPaddingBottomHeight=Number.parseInt(t.paddingBottom),this.bodyPaddingTopHeight=Number.parseInt(t.paddingTop);try{this.isIframe=window.self!==window.top&&window.top.PhpDebugBar&&window.top.PhpDebugBar}catch(r){this.isIframe=!1}this.registerResizeHandler(),this.registerMediaListener(),this.registerNavigationListener(),this.settingsControl=new s.DebugBar.Tab({icon:"adjustments-horizontal",title:"Settings",widget:new c({debugbar:this})})}registerResizeHandler(){if(this.resize.bind===void 0||this.isIframe)return;const e=this.resize.bind(this);this.respCSSSize=0,window.addEventListener("resize",e),setTimeout(e,20)}registerMediaListener(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",t=>{this.options.theme==="auto"&&this.setTheme("auto")})}registerNavigationListener(){const e=this.options.spaNavigationEvents;if(!(!e||!e.length))for(const t of e)document.addEventListener(t,()=>{this.recalculateBodyPadding()})}recalculateBodyPadding(){if(!this.options.bodyBottomInset)return;document.body.style.paddingTop="",document.body.style.paddingBottom="";const e=window.getComputedStyle(document.body);this.bodyPaddingTopHeight=Number.parseFloat(e.paddingTop),this.bodyPaddingBottomHeight=Number.parseFloat(e.paddingBottom),this.recomputeBottomOffset()}setTheme(e){this.options.theme=e,e==="auto"&&(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),this.el.setAttribute("data-theme",e),this.openHandler&&this.openHandler.el.setAttribute("data-theme",e),this.datasetSwitcherWidget&&this.datasetSwitcherWidget.panel&&this.datasetSwitcherWidget.panel.setAttribute("data-theme",e)}resize(){if(this.isIframe)return;let e=this.respCSSSize;if(this.respCSSSize===0){const O=Array.from(this.header.children).filter(v=>v.offsetParent!==null);for(const v of O){const G=window.getComputedStyle(v);e+=v.offsetWidth+Number.parseFloat(G.marginLeft)+Number.parseFloat(G.marginRight)}}const t=this.header.offsetWidth,r=S("mini-design"),y=this.header.classList.contains(r);t<=e&&!y?(this.respCSSSize=e,this.header.classList.add(r)):e{e.close()}),this.headerLeft=document.createElement("div"),this.headerLeft.classList.add(S("header-left")),this.header.append(this.headerLeft),this.headerRight=document.createElement("div"),this.headerRight.classList.add(S("header-right")),this.header.append(this.headerRight),this.body=document.createElement("div"),this.body.classList.add(S("body")),this.el.append(this.body),this.recomputeBottomOffset(),this.resizeHandleBottom=document.createElement("div"),this.resizeHandleBottom.classList.add(S("resize-handle")),this.resizeHandleBottom.classList.add(S("resize-handle-bottom")),this.el.append(this.resizeHandleBottom);let t,r;const y=v=>{const G=r+(t-v.pageY);e.setHeight(G)},_=v=>{const G=r-(t-v.pageY);e.setHeight(G)},O=()=>{document.removeEventListener("mousemove",y),document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",O),e.dragCapture.style.display="none"};this.resizeHandle.addEventListener("mousedown",v=>{r=e.body.offsetHeight,t=v.pageY,document.addEventListener("mousemove",y),document.addEventListener("mouseup",O),e.dragCapture.style.display="",v.preventDefault()}),this.resizeHandleBottom.addEventListener("mousedown",v=>{r=e.body.offsetHeight,t=v.pageY,document.addEventListener("mousemove",_),document.addEventListener("mouseup",O),e.dragCapture.style.display="",v.preventDefault()}),this.closebtn=document.createElement("a"),this.closebtn.classList.add(S("close-btn")),this.headerRight.append(this.closebtn),this.closebtn.addEventListener("click",()=>{e.close()}),this.fullscreenbtn=document.createElement("a"),this.fullscreenbtn.classList.add(S("fullscreen-btn")),this.fullscreenbtn.hidden=!this.options.showFullscreenBtn,this.headerRight.append(this.fullscreenbtn),this.fullscreenbtn.addEventListener("click",()=>{e.toggleFullscreen()}),this.minimizebtn=document.createElement("a"),this.minimizebtn.classList.add(S("minimize-btn")),this.minimizebtn.hidden=!this.isMinimized(),this.headerRight.append(this.minimizebtn),this.minimizebtn.addEventListener("click",()=>{e.minimize()}),this.maximizebtn=document.createElement("a"),this.maximizebtn.classList.add(S("maximize-btn")),this.maximizebtn.hidden=this.isMinimized(),this.headerRight.append(this.maximizebtn),this.maximizebtn.addEventListener("click",()=>{e.restore()}),this.restorebtn=document.createElement("a"),this.restorebtn.classList.add(S("restore-btn")),this.restorebtn.hidden=!0,this.el.append(this.restorebtn),this.restorebtn.addEventListener("click",()=>{e.restore()}),this.openbtn=document.createElement("a"),this.openbtn.classList.add(S("open-btn")),this.openbtn.hidden=!0,this.headerRight.append(this.openbtn),this.openbtn.addEventListener("click",()=>{e.openHandler.show((v,G)=>{e.addDataSet(G,v,"(opened)")})}),this.datasetsSelectSpan=document.createElement("span"),this.datasetsSelectSpan.classList.add(S("datasets-switcher")),this.datasetsSelectSpan.setAttribute("name","datasets-switcher"),this.datasetsSelect=document.createElement("select"),this.datasetsSelect.hidden=!0,this.datasetsSelectSpan.append(this.datasetsSelect),this.headerRight.append(this.datasetsSelectSpan),this.datasetsSelect.addEventListener("change",function(){e.showDataSet(this.value)}),this.controls.__settings=this.settingsControl,this.settingsControl.tab.classList.add(S("tab-settings")),this.settingsControl.tab.setAttribute("data-collector","__settings"),this.settingsControl.el.setAttribute("data-collector","__settings"),this.settingsControl.el.hidden=!0,this.maximizebtn.after(this.settingsControl.tab),this.settingsControl.tab.hidden=!1,this.settingsControl.tab.addEventListener("click",()=>{!this.isMinimized()&&this.activePanelName==="__settings"&&!this.isFullscreen()?this.minimize():(this.showTab("__settings"),this.settingsControl.get("widget").render())}),this.body.append(this.settingsControl.el)}setHeight(e){if(this.isFullscreen())return;const t=40,r=window.innerHeight-this.header.offsetHeight-10;e=Math.min(e,r),e=Math.max(e,t),this.body.style.height=`${e}px`,localStorage.setItem("phpdebugbar-height",e),this.recomputeBottomOffset()}restoreState(){if(this.isIframe)return;const e=localStorage.getItem("phpdebugbar-height");this.setHeight(Number.parseInt(e)||this.body.offsetHeight);const t=localStorage.getItem("phpdebugbar-open");if(t&&t==="0")this.close();else{const r=localStorage.getItem("phpdebugbar-visible");if(r&&r==="1"){const y=localStorage.getItem("phpdebugbar-tab");this.isTab(y)?this.showTab(y):this.showTab()}else this.minimize()}this.options.showFullscreenBtn&&sessionStorage.getItem("phpdebugbar-fullscreen")==="1"&&this.toggleFullscreen()}createTab(e,t,r){const y=new d({title:r||e.replace(/[_-]/g," ").charAt(0).toUpperCase()+e.slice(1),widget:t});return this.addTab(e,y)}addTab(e,t){if(this.isControl(e))throw new Error(`${e} already exists`);const r=this;return this.headerLeft.append(t.tab),t.tab.addEventListener("click",()=>{!r.isMinimized()&&r.activePanelName===e&&!r.isFullscreen()?r.minimize():(r.restore(),r.showTab(e))}),t.tab.setAttribute("data-empty",!0),t.tab.setAttribute("data-collector",e),t.el.setAttribute("data-collector",e),this.body.append(t.el),this.controls[e]=t,this.firstTabName===null&&(this.firstTabName=e),t}createIndicator(e,t,r,y){const _=new w({icon:t,tooltip:r});return this.addIndicator(e,_,y)}addIndicator(e,t,r){if(this.isControl(e))throw new Error(`${e} already exists`);return t.set("debugbar",this),r==="left"?this.headerLeft.prepend(t.el):this.headerRight.append(t.el),this.controls[e]=t,t}getControl(e){if(this.isControl(e))return this.controls[e]}isControl(e){return this.controls[e]!==void 0}isTab(e){return this.isControl(e)&&this.controls[e]instanceof d}isIndicator(e){return this.isControl(e)&&this.controls[e]instanceof w}reset(){this.minimize();for(const[e,t]of Object.entries(this.controls))this.isTab(e)&&t.tab.remove(),t.el.remove();this.controls={}}showTab(e){if(e||(this.activePanelName?e=this.activePanelName:e=this.firstTabName),!this.isTab(e))throw new Error(`Unknown tab '${e}'`);this.body.hidden=!1,this.recomputeBottomOffset();for(const[t,r]of Object.entries(this.controls))r instanceof d&&(t===e?r.show():r.hide());this.activePanelName=e,this.el.classList.remove(S("minimized")),localStorage.setItem("phpdebugbar-visible","1"),localStorage.setItem("phpdebugbar-tab",e),this.maximize()}minimize(){this.exitFullscreen();const e=S("active"),t=this.header.querySelectorAll(`:scope > div > .${e}`);for(const r of t)r.classList.remove(e);this.body.hidden=!0,this.minimizebtn.hidden=!0,this.maximizebtn.hidden=!1,this.recomputeBottomOffset(),localStorage.setItem("phpdebugbar-visible","0"),this.el.classList.add(S("minimized")),this.resize()}maximize(){this.header.hidden=!1,this.restorebtn.hidden=!0,this.body.hidden=!1,this.minimizebtn.hidden=!1,this.maximizebtn.hidden=!0,this.recomputeBottomOffset(),localStorage.setItem("phpdebugbar-visible","1"),localStorage.setItem("phpdebugbar-open","1"),this.el.classList.remove(S("minimized")),this.el.classList.remove(S("closed")),this.resize()}isMinimized(){return this.el.classList.contains(S("minimized"))}toggleFullscreen(){this.isFullscreen()?this.exitFullscreen():(this._preFullscreenHeight=this.body.offsetHeight,this.el.classList.add(S("fullscreen")),this.body.style.height="",sessionStorage.setItem("phpdebugbar-fullscreen","1"),this.recomputeBottomOffset())}exitFullscreen(){this.isFullscreen()&&(this.el.classList.remove(S("fullscreen")),this._preFullscreenHeight&&(this.body.style.height=`${this._preFullscreenHeight}px`),sessionStorage.removeItem("phpdebugbar-fullscreen"),this.recomputeBottomOffset())}isFullscreen(){return this.el.classList.contains(S("fullscreen"))}toggleFullscreenBtn(e){this.fullscreenbtn.hidden=!e,e||this.exitFullscreen()}close(){this.exitFullscreen(),this.header.hidden=!0,this.body.hidden=!0,this.restorebtn.hidden=!1,localStorage.setItem("phpdebugbar-open","0"),this.el.classList.add(S("closed")),this.recomputeBottomOffset()}isClosed(){return this.el.classList.contains(S("closed"))}restore(){const e=localStorage.getItem("phpdebugbar-tab");this.pendingDataSetId&&(this.dataChangeHandler(this.datasets[this.pendingDataSetId]),this.pendingDataSetId=null),this.isTab(e)?this.showTab(e):this.showTab()}recomputeBottomOffset(){if(this.options.bodyBottomInset){if(this.isClosed()){document.body.style.paddingBottom=this.bodyPaddingBottomHeight?`${this.bodyPaddingBottomHeight}px`:"",document.body.style.paddingTop=this.bodyPaddingTopHeight?`${this.bodyPaddingTopHeight}px`:"";return}if(this.options.toolbarPosition==="top"){const e=this.el.offsetHeight+(this.bodyPaddingTopHeight||0);document.body.style.paddingTop=`${e}px`,document.body.style.paddingBottom=this.bodyPaddingBottomHeight?`${this.bodyPaddingBottomHeight}px`:""}else{const e=this.el.offsetHeight+(this.bodyPaddingBottomHeight||0);document.body.style.paddingBottom=`${e}px`,document.body.style.paddingTop=this.bodyPaddingTopHeight?`${this.bodyPaddingTopHeight}px`:""}}}setDataMap(e){this.dataMap=e}addDataMap(e){Object.assign(this.dataMap,e)}setData(e){return this.datasets={},this.addDataSet(e)}addDataSet(e,t,r,y){if(!e||!e.__meta)return;if(this.isIframe&&window.top.PhpDebugBar&&window.top.PhpDebugBar.instance){window.top.PhpDebugBar.instance.addDataSet(e,t,`(iframe)${r||""}`,y);return}const _=Object.keys(this.datasets).length+1;t=t||_,e.__meta.nb=_,e.__meta.suffix=r,this.datasets[t]=e;const O=this.datesetTitleFormater.format(t,this.datasets[t],r,_);if(this.datasetSwitcherWidget)this.datasetSwitcherWidget.set("data",this.datasets);else{const v=document.createElement("option");v.value=t,v.textContent=O,this.datasetsSelect.append(v),this.datasetsSelect.hidden=!1}return(y===void 0||y)&&this.showDataSet(t),this.resize(),t}loadDataSet(e,t,r,y){if(!this.openHandler)throw new Error("loadDataSet() needs an open handler");const _=this;this.openHandler.load(e,O=>{_.addDataSet(O,e,t,y),_.resize(),r&&r(O)})}getDataSet(e){return this.datasets[e]}showDataSet(e){this.activeDatasetId=e,this.isClosed()?this.pendingDataSetId=e:(this.dataChangeHandler(this.datasets[e]),this.pendingDataSetId=null),this.datasetSwitcherWidget?this.datasetSwitcherWidget.set("activeId",e):this.datasetsSelect.value=e}dataChangeHandler(e){for(const[t,r]of Object.entries(this.dataMap)){const y=W(e,r[0],r[1]);if(t.includes(":")){const _=t.split(":");this.getControl(_[0]).set(_[1],y)}else this.getControl(t).set("data",y)}this.isMinimized()||this.showTab(),this.resize()}setOpenHandler(e){this.openHandler=e,this.openHandler.el.setAttribute("data-theme",this.el.getAttribute("data-theme")),this.openbtn.hidden=e==null}getOpenHandler(){return this.openHandler}enableAjaxHandlerTab(){this.datasetsSelectSpan&&(this.datasetsSelectSpan.hidden=!0),this.datasetSwitcherWidget=new s.Widgets.DatasetWidget({debugbar:this}),this.openbtn.after(this.datasetSwitcherWidget.el)}}s.DebugBar=M,M.Tab=d,M.Indicator=w;class U{constructor(e,t,r){this.debugbar=e,this.headerName=t||"phpdebugbar",this.captureStreamed=!1,this.streamedContentTypes=["text/event-stream"],this.autoShow=r===void 0?!0:r,this.defaultAutoShow=this.autoShow,localStorage.getItem("phpdebugbar-ajaxhandler-autoshow")!==null&&(this.autoShow=localStorage.getItem("phpdebugbar-ajaxhandler-autoshow")==="1"),e.controls.__settings&&e.controls.__settings.get("widget").set("autoshow",this.autoShow)}handle(e,t){const r=this.getHeader(e,`${this.headerName}-stack`);return r&&JSON.parse(r).forEach(_=>{this.debugbar.loadDataSet(_," (stacked)",null,!1)}),this.loadFromId(e)||this.loadFromData(e)?!0:t&&this.debugbar.openHandler&&this.isStreamedResponse(e)?(this.loadFromRequestId(t),!0):!1}isStreamedResponse(e){const t=this.streamedContentTypes;if(!t||!t.length)return!0;const r=(this.getHeader(e,"content-type")||"").split(";")[0].trim().toLowerCase();return t.some(y=>y.trim().toLowerCase()===r)}sameOrigin(e){try{return new URL(e,location.href).origin===location.origin}catch(t){return!1}}canInjectRequestId(e){const t=this.debugbar.openHandler;if(t&&typeof t.get=="function")try{const r=t.get("url");if(r&&new URL(e,location.href).pathname===new URL(r,location.href).pathname)return!1}catch(r){}return!0}newRequestId(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"&&globalThis.crypto.randomUUID()||String(Date.now())+Math.random().toString(16).slice(2)}loadFromRequestId(e,t=5){this.debugbar.openHandler.find({rid:e},0,r=>{const y=Array.isArray(r)?r.find(_=>_&&_.rid===e&&_.id):null;y?this.debugbar.loadDataSet(y.id,"(ajax)",void 0,this.autoShow):t>0&&setTimeout(()=>this.loadFromRequestId(e,t-1),150)})}getHeader(e,t){return e instanceof Response?e.headers.get(t):e instanceof XMLHttpRequest?e.getResponseHeader(t):null}setAutoShow(e){this.autoShow=e,localStorage.setItem("phpdebugbar-ajaxhandler-autoshow",e?"1":"0")}loadFromId(e){const t=this.extractIdFromHeaders(e);return t&&this.debugbar.openHandler?(this.debugbar.loadDataSet(t,"(ajax)",void 0,this.autoShow),!0):!1}extractIdFromHeaders(e){return this.getHeader(e,`${this.headerName}-id`)}loadFromData(e){const t=this.extractDataFromHeaders(e);if(!t)return!1;const r=this.parseHeaders(t);if(r.error)throw new Error(`Error loading debugbar data: ${r.error}`);return r.data&&this.debugbar.addDataSet(r.data,r.id,"(ajax)",this.autoShow),!0}extractDataFromHeaders(e){let t=this.getHeader(e,this.headerName);if(t){for(let r=1;;r++){const y=this.getHeader(e,`${this.headerName}-${r}`);if(!y)break;t+=y}return decodeURIComponent(t)}}parseHeaders(e){return JSON.parse(e)}bindToFetch(){const e=this,t=window.fetch.__debugbar_original||window.fetch,r=t.bind(window);function y(_,O){var A;let v=null;const G=_ instanceof Request?_.url:_;if(e.captureStreamed&&e.sameOrigin(G)&&e.canInjectRequestId(G)){v=e.newRequestId();const f=`${e.headerName}-request-id`;if(_ instanceof Request){O=et({},O||{});const R=new Headers(_.headers);new Headers(O.headers||{}).forEach((E,i)=>R.set(i,E)),R.set(f,v),_=new Request(_,Ht(et({},O),{headers:R})),O=void 0}else{O=et({},O||{});const R=new Headers(O.headers||{});R.set(f,v),O.headers=R}}const P=r(_,O);return(A=P==null?void 0:P.then)==null||A.call(P,f=>e.handle(f,v)).catch(()=>{}),P}y.__debugbar_wrapped=!0,y.__debugbar_original=t,window.fetch=y}bindToXHR(){const e=this,t=XMLHttpRequest.prototype,r=(t.open||{}).__debugbar_original||t.open;if(typeof r!="function")return;function y(_,O,v=!0,G=null,P=null){this.__debugbar_listener_attached||(this.__debugbar_listener_attached=!0,this.addEventListener("readystatechange",()=>{this.readyState===4&&e.handle(this,this.__debugbar_rid)}));const A=r.call(this,_,O,v,G,P);if(e.captureStreamed&&e.sameOrigin(O)&&e.canInjectRequestId(O)){this.__debugbar_rid=e.newRequestId();try{this.setRequestHeader(`${e.headerName}-request-id`,this.__debugbar_rid)}catch(f){}}return A}y.__debugbar_wrapped=!0,y.__debugbar_original=r,t.open=y}}s.AjaxHandler=U})();(function(){PhpDebugBar.Widgets={};const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-"),W=PhpDebugBar.Widgets.htmlize=function(P){return P.replace(/\n/g,"
").replace(/\s/g," ")};let S;const g=PhpDebugBar.Widgets.renderValue=function(P,A){return P&&typeof P=="object"?(S||(S=new PhpDebugBar.Widgets.VarDumpRenderer),S.render(P)):typeof P!="string"?A?W(JSON.stringify(P,void 0,2)):JSON.stringify(P):P};PhpDebugBar.Widgets.renderValueInto=function(P,A,f){const R=g(A,f);R instanceof Node?P.append(R):P.insertAdjacentHTML("beforeend",R)};const d=PhpDebugBar.Widgets.editorLink=function(P){const A=document.createElement("span"),f=P.line?`#${P.line}`:"";if(A.classList.add(s("filename")),A.textContent=P.filename+f,P.path&&(A.setAttribute("title",P.path+f),A.addEventListener("click",R=>{if(R.stopPropagation(),R.preventDefault(),window.getSelection().type==="Range")return"";w(P.path).then(E=>{if(!E)return;const i=document.createElement("a");i.classList.add(s("copy-clipboard-check")),A.prepend(i),setTimeout(()=>{A.removeChild(i)},2e3)})})),P.url){const R=document.createElement("a");R.classList.add(s("editor-link")),R.setAttribute(R.ajax?"title":"href",P.url),R.addEventListener("click",E=>{E.stopPropagation(),P.ajax&&(fetch(stmt.xdebug_link.url),E.preventDefault())}),A.append(R)}return A},w=PhpDebugBar.Widgets.copyToClipboard=function(P){return Wt(this,null,function*(){const A=P instanceof Element?P.innerText:P;if(navigator.clipboard&&window.isSecureContext)try{return yield navigator.clipboard.writeText(A),!0}catch(E){}let f=!1;const R=document.createElement("textarea");R.value=A,R.style.position="fixed",R.style.left="-9999px",R.style.top="-9999px",document.body.appendChild(R);try{R.focus(),R.select(),R.setSelectionRange(0,99999),f=document.execCommand("copy")}catch(E){}return document.body.removeChild(R),f})},c=PhpDebugBar.Widgets.highlight=function(P,A){if(typeof phpdebugbar_hljs=="undefined")return W(P);const f=phpdebugbar_hljs;return A&&f.getLanguage(A)?f.highlight(P,{language:A}).value:f.highlightAuto(P).value},B=PhpDebugBar.Widgets.createCodeBlock=function(P,A,f,R){const E=document.createElement("pre");E.classList.add(s("code-block"));const i=document.createElement("code");if(i.innerHTML=c(`${P} -`,A),E.append(i),!Number.isNaN(Number.parseFloat(f))){const h=P.split(` -`).length,l=document.createElement("ul");E.prepend(l);const N=Array.from(E.children);for(const T of N)T.classList.add(s("numbered-code"));for(let T=f;T100&&(h=`${h.substr(0,100)}...`);let l=null;f.textContent=h,f.addEventListener("click",()=>{if(window.getSelection().type==="Range")return"";f.classList.contains(s("pretty"))?(f.textContent=h,f.classList.remove(s("pretty"))):(l=l||B(E),f.classList.add(s("pretty")),f.innerHTML="",f.append(l))})}}PhpDebugBar.Widgets.VariableListWidget=e;class t extends p{get className(){return s("kvlist htmlvarlist")}itemRenderer(A,f,R,E){const i=document.createElement("i");i.innerHTML=R!=null?R:"";const h=document.createElement("span");h.setAttribute("title",i.textContent),h.innerHTML=R!=null?R:"",A.append(h),f.innerHTML=E&&E.value||E,E!=null&&E.xdebug_link&&f.append(d(E.xdebug_link))}}PhpDebugBar.Widgets.HtmlVariableListWidget=t;class r extends PhpDebugBar.Widget{get tagName(){return"div"}get className(){return s("tablevarlist")}render(){this.bindAttr("data",function(A){var T,b,a;if(this.el.innerHTML="",!this.has("data"))return;this.table=document.createElement("table"),this.table.classList.add(s("tablevar")),this.el.append(this.table);const f=document.createElement("tr");f.classList.add(s("header"));const R=document.createElement("td");f.append(R),this.table.append(f);let E=A.key_map||{value:"Value"};Array.isArray(E)&&(E=Object.fromEntries(E.map(I=>[I,null])));for(const[I,H]of Object.entries(E)){const m=document.createElement("td");if(m.textContent=H!=null?H:I,f.append(m),A.badges&&A.badges[I]){const o=document.createElement("span");o.textContent=A.badges[I],o.classList.add(s("badge")),m.append(o)}}const i=this;if(!A.data)return;let h=!1;for(const[I,H]of Object.entries(A.data)){const m=document.createElement("tr");m.classList.add(s("item")),i.table.append(m);const o=document.createElement("td");if(o.classList.add(s("key")),o.textContent=I,m.append(o),typeof H!="object"||H===null){const u=document.createElement("td");u.classList.add(s("value")),u.textContent=H!=null?H:"",m.append(u);continue}for(const u of Object.keys(E)){const C=document.createElement("td");C.classList.add(s("value")),C.textContent=(T=H[u])!=null?T:"",m.append(C)}if(H.xdebug_link){const u=document.createElement("td");u.classList.add(s("editor")),u.append(d(H.xdebug_link)),m.append(u),h||(h=!0,f.append(document.createElement("td")))}}if(!A.summary)return;const l=document.createElement("tr");l.classList.add(s("summary")),i.table.append(l);const N=document.createElement("td");if(N.classList.add(s("key")),l.append(N),typeof A.summary!="object"||A.summary===null){const I=document.createElement("td");I.classList.add(s("value")),I.textContent=(b=A.summary)!=null?b:"",l.append(I)}else for(const I of Object.keys(E)){const H=document.createElement("td");H.classList.add(s("value")),H.textContent=(a=A.summary[I])!=null?a:"",l.append(H)}h&&l.append(document.createElement("td"))})}}PhpDebugBar.Widgets.TableVariableListWidget=r;class y extends PhpDebugBar.Widget{get tagName(){return"iframe"}get className(){return s("iframe")}render(){this.el.setAttribute("seamless","seamless"),this.el.setAttribute("border","0"),this.el.setAttribute("width","100%"),this.el.setAttribute("height","100%"),this.bindAttr("data",function(A){this.el.setAttribute("src",A)})}}PhpDebugBar.Widgets.IFrameWidget=y;class _ extends PhpDebugBar.Widget{get className(){return s("messages")}render(){const A=this;this.list=new U({itemRenderer(R,E){let i;if(E.message_json)i=document.createElement("span"),i.classList.add(s("value")),PhpDebugBar.Widgets.renderValueInto(i,E.message_json),R.append(i);else if(E.message_html)i=document.createElement("span"),i.classList.add(s("value")),i.innerHTML=E.message_html,R.append(i);else{const h=E.message;if(i=document.createElement("span"),i.classList.add(s("value")),i.textContent=h,i.classList.add(s("truncated")),R.append(i),!E.is_string||i.scrollWidth>i.clientWidth){let l=E.message;E.is_string||(l=null),R.style.cursor="pointer",R.addEventListener("click",()=>{if(window.getSelection().type==="Range")return"";i.classList.contains(s("pretty"))?(i.textContent=h,i.classList.remove(s("pretty")),i.classList.add(s("truncated"))):(l=l||B(E.message),i.classList.add(s("pretty")),i.classList.remove(s("truncated")),i.innerHTML="",i.append(l))})}}if(E.collector){const h=document.createElement("span");h.classList.add(s("collector")),h.textContent=E.collector,R.prepend(h)}if(E.label){i.classList.add(s(E.label));const h=document.createElement("span");h.classList.add(s("label")),h.textContent=E.label,R.prepend(h)}if(E.context&&Object.keys(E.context).length>0){const h=document.createElement("span");h.setAttribute("title","Context"),h.classList.add(s("context-count")),h.textContent=Object.keys(E.context).length,R.prepend(h);const l=document.createElement("table");l.classList.add(s("params")),l.hidden=!0,l.innerHTML='Context';const N=E.context_json||{};for(const T in E.context)if(typeof E.context[T]!="function"){const b=document.createElement("tr"),a=document.createElement("td");a.classList.add(s("name")),a.textContent=T,b.append(a);const I=document.createElement("td");I.classList.add(s("value")),N[T]?PhpDebugBar.Widgets.renderValueInto(I,N[T]):I.innerHTML=E.context[T],b.append(I),l.append(b)}R.append(l),R.style.cursor="pointer",R.addEventListener("click",T=>{window.getSelection().type==="Range"||T.target.closest(".sf-dump")||(l.hidden=!l.hidden)})}E.xdebug_link&&R.prepend(d(E.xdebug_link))}}),this.el.append(this.list.el),this.toolbar=document.createElement("div"),this.toolbar.classList.add(s("toolbar")),this.toolbar.innerHTML='',this.el.append(this.toolbar);const f=document.createElement("input");f.type="text",f.name="search",f.setAttribute("aria-label","Search"),f.placeholder="Search",f.addEventListener("change",function(){A.set("search",this.value)}),this.toolbar.append(f),this.bindAttr("data",function(R){this.set({excludelabel:[],excludecollector:[],search:""});const E=this.toolbar.querySelectorAll(`.${s("filter")}`);for(const b of E)b.remove();const i=[],h=[],l=this,N=function(b,a){const I=document.createElement("a");I.classList.add(s("filter")),I.classList.add(s(b)),I.textContent=a,I.setAttribute("rel",a),I.addEventListener("click",function(){l.onFilterClick(this,b)}),l.toolbar.append(I)};if(R.forEach(b=>{i.includes(b.label||"none")||i.push(b.label||"none"),h.includes(b.collector||"none")||h.push(b.collector||"none")}),i.length>1&&i.forEach(b=>N("label",b)),h.length===1)return;const T=document.createElement("a");T.classList.add(s("filter")),T.style.visibility="hidden",l.toolbar.append(T),h.forEach(b=>N("collector",b))}),this.bindAttr(["excludelabel","excludecollector","search"],function(){const R=this.get("excludelabel")||[],E=this.get("excludecollector")||[],i=this.get("search");let h=!1;const l=[];i&&i===i.toLowerCase()&&(h=!0),this.get("data").forEach(N=>{let T=N.message;N.message_json?T=JSON.stringify(N.message_json):N.message_html&&(T=N.message_html.replace(/<[^>]*>/g,"")),h&&(T=T.toLowerCase()),!R.includes(N.label||void 0)&&!E.includes(N.collector||void 0)&&(!i||T.includes(i))&&l.push(N)}),this.list.set("data",l)})}onFilterClick(A,f){A.classList.toggle(s("excluded"));const R=[],E=`.${s("filter")}.${s("excluded")}.${s(f)}`,i=this.toolbar.querySelectorAll(E);for(const h of i)R.push(h.rel==="none"||!h.rel?void 0:h.rel);this.set(`exclude${f}`,R)}}PhpDebugBar.Widgets.MessagesWidget=_;class O extends PhpDebugBar.Widget{get tagName(){return"ul"}get className(){return s("timeline")}render(){this.bindAttr("data",function(A){const f=function(E){return E<.001?`${(E*1e6).toFixed()}\u03BCs`:E<.1?`${(E*1e3).toFixed(2)}ms`:E<1?`${(E*1e3).toFixed()}ms`:`${E.toFixed(2)}s`},R=function(i){if(i===0||i===null)return"0B";const h=i<0?"-":"",l=Math.abs(i),N=Math.log(l)/Math.log(1024),T=["B","KB","MB","GB","TB"];return h+Math.round(Bt(1024,N-Math.floor(N))*100)/100+T[Math.floor(N)]};if(this.el.innerHTML="",A.measures){let E={};for(let l=0;l1?b.length+"x ":"")+N.label.replace(/\s+/g," ")+(N.duration?` (${N.duration_str}${N.memory?`/${N.memory_str}`:""})`:""),a.append(H),N.collector){const m=document.createElement("span");m.classList.add(s("collector")),m.textContent=N.collector,a.append(m)}if(I.append(a),this.el.append(I),N.params&&Object.keys(N.params).length>0){const m=document.createElement("table");m.classList.add(s("params")),m.hidden=!0,m.innerHTML='Params';for(const o in N.params)if(typeof N.params[o]!="function"){const u=document.createElement("tr"),C=document.createElement("td");C.className=s("name"),C.textContent=o,u.append(C);const X=document.createElement("td");X.className=s("value"),PhpDebugBar.Widgets.renderValueInto(X,N.params[o]),u.append(X),m.append(u)}I.append(m),I.style.cursor="pointer",I.addEventListener("click",function(o){if(window.getSelection().type==="Range"||o.target.closest(".sf-dump"))return"";const u=this.querySelector("table");u.hidden=!u.hidden})}}E=Object.entries(E).map(([l,N])=>({label:l,data:N})).sort((l,N)=>N.data.duration-l.data.duration);const i=document.createElement("table");i.classList.add(s("params"));for(const l of E){const N=Math.min((l.data.duration*100/A.duration).toFixed(2),100),T=document.createElement("i");T.textContent=l.label.replace(/\s+/g," ");const b=T.innerHTML,a=document.createElement("tr");a.innerHTML=`${l.data.count} x ${b} (${N}%)
${f(l.data.duration)}${l.data.memory?`/${R(l.data.memory)}`:""}
`,i.append(a);const I=a.querySelector(`span.${s("value")}`);I.style.width=`${N}%`}const h=document.createElement("li");h.append(i),this.el.append(h)}})}}PhpDebugBar.Widgets.TimelineWidget=O;class v extends PhpDebugBar.Widget{get className(){return s("exceptions")}render(){this.list=new U({itemRenderer(A,f){const R=document.createElement("span");if(R.classList.add(s("message")),R.textContent=f.message,f.count>1){const E=document.createElement("span");E.classList.add(s("badge")),E.textContent=`${f.count}x`,R.prepend(E)}if(A.append(R),f.file&&A.append(d(f.xdebug_link||{filename:f.file,line:f.line})),f.type){const E=document.createElement("span");E.classList.add(s("type")),E.textContent=f.type,A.append(E)}if(f.surrounding_lines){const E=f.line-3<=0?1:f.line-3,i=B(f.surrounding_lines.join(""),"php",E,f.line);i.classList.add(s("file")),i.hidden=!0,A.append(i),A.addEventListener("click",h=>{window.getSelection().type==="Range"||h.target.closest(".sf-dump")||(i.hidden=!i.hidden)})}if(f.stack_trace_json||f.stack_trace_html){const E=document.createElement("span");if(E.classList.add(s("filename")),f.stack_trace_json){const h=f.stack_trace_json,l=h._sd;h._sd=0,PhpDebugBar.Widgets.renderValueInto(E,h),h._sd=l}else E.innerHTML=f.stack_trace_html;const i=E.querySelector(".sf-dump-note");i&&(i.innerHTML=`${i.innerHTML.replace(/^array:/,'Stack Trace: ')} lines`),A.append(E)}else f.stack_trace&&f.stack_trace.split(` -`).forEach(E=>{const i=document.createElement("div"),h=document.createElement("span");h.classList.add(s("filename")),h.textContent=E,i.append(h),A.append(i)})}}),this.el.append(this.list.el),this.bindAttr("data",function(A){if(this.list.set("data",A),A.length===1){const f=this.list.el.children[0];if(f){const R=f.querySelector(`.${s("file")}`);R&&(R.hidden=!1)}}})}}PhpDebugBar.Widgets.ExceptionsWidget=v;class G extends PhpDebugBar.Widget{get className(){return s("datasets-switcher-widget")}initialize(A){this.set(A);const f=this,R=this.get("debugbar");this.badge=document.createElement("div"),this.badge.classList.add(s("datasets-badge")),this.badge.hidden=!0,this.badgeCount=document.createElement("span"),this.badgeCount.classList.add(s("datasets-badge-count")),this.badge.append(this.badgeCount),this.badgeUrl=document.createElement("span"),this.badgeUrl.classList.add(s("datasets-badge-url")),this.badge.append(this.badgeUrl),this.panel=document.createElement("div"),this.panel.classList.add(s("datasets-panel")),this.panel.hidden=!0,R.el&&this.panel.setAttribute("data-theme",R.el.getAttribute("data-theme"));const E=document.createElement("div");E.classList.add(s("datasets-panel-toolbar"));const i=document.createElement("label");i.classList.add(s("datasets-autoshow")),this.autoshowCheckbox=document.createElement("input"),this.autoshowCheckbox.type="checkbox";const h=localStorage.getItem("phpdebugbar-ajaxhandler-autoshow");this.autoshowCheckbox.checked=h!==null?h==="1":R.ajaxHandler?R.ajaxHandler.autoShow:!0,this.autoshowCheckbox.addEventListener("change",function(){R.ajaxHandler&&R.ajaxHandler.setAutoShow(this.checked),R.controls.__settings&&R.controls.__settings.get("widget").set("autoshow",this.checked),R.controls.__datasets&&R.controls.__datasets.get("widget").set("autoshow",this.checked)}),i.append(this.autoshowCheckbox),i.append(document.createTextNode(" Autoshow")),E.append(i),this.refreshBtn=document.createElement("a"),this.refreshBtn.tabIndex=0,this.refreshBtn.classList.add(s("datasets-refresh-btn")),this.refreshBtn.innerHTML='',this.refreshBtn.title="Auto-scan for new datasets",this.isScanning=!1,this.refreshBtn.addEventListener("click",T=>{T.stopPropagation(),this.isScanning?(this.isScanning=!1,this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Auto-scan for new datasets"):(this.isScanning=!0,this.refreshBtn.classList.add(s("active")),this.refreshBtn.title="Stop auto-scanning",this.scanForNewDatasets())}),E.append(this.refreshBtn);const l=document.createElement("a");l.tabIndex=0,l.classList.add(s("datasets-clear-btn")),l.textContent="Clear",l.addEventListener("click",()=>{const T=R.activeDatasetId,b=R.datasets[T];R.datasets={},b&&R.addDataSet(b,T,b.__meta.suffix,!0),this.panel.hidden=!0}),E.append(l),this.searchInput=document.createElement("input"),this.searchInput.type="search",this.searchInput.placeholder="Search",this.searchInput.classList.add(s("datasets-search")),this.searchInput.addEventListener("input",()=>{f.applySearchFilter()}),E.append(this.searchInput),this.panel.append(E),this.list=document.createElement("div"),this.list.classList.add(s("datasets-list")),this.panel.append(this.list),this.el.append(this.badge),document.body.append(this.panel);const N=()=>{const T=this.badge.getBoundingClientRect(),b=T.top,a=window.innerHeight-T.bottom,I=a>b;this.panel.style.position="fixed",this.panel.style.right=`${window.innerWidth-T.right}px`,this.panel.style.left="auto",I?(this.panel.style.top=`${T.bottom}px`,this.panel.style.bottom="auto",this.panel.style.maxHeight=`${a}px`):(this.panel.style.bottom=`${window.innerHeight-T.top}px`,this.panel.style.top="auto",this.panel.style.maxHeight=`${b}px`),this.refreshBtn.hidden=!R.openHandler};this.badge.addEventListener("click",T=>{T.target!==this.panel&&!this.panel.contains(T.target)&&(this.panel.hidden&&N(),this.panel.hidden=!this.panel.hidden)}),document.addEventListener("click",T=>{!this.badge.contains(T.target)&&!this.panel.contains(T.target)&&(this.panel.hidden=!0)})}render(){this.bindAttr("data",function(){this.updateBadge()}),this.bindAttr("activeId",function(){this.updateBadge()}),this.bindAttr("autoshow",function(){this.autoshowCheckbox&&(this.autoshowCheckbox.checked=this.get("autoshow"))})}updateBadge(){const A=this.get("debugbar"),f=this.get("data")||A.datasets,R=this.get("activeId")||A.activeDatasetId;if(!f){this.badge.hidden=!0;return}const E=Object.keys(f).length;if(E>=1){this.badge.hidden=!1;const i=f[R];if(i&&i.__meta){const l=i.__meta.uri||"",N=i.__meta.method||"GET";this.badgeUrl.textContent=`${N} ${l}`}E>1?(this.badgeCount.textContent=E,this.badgeCount.hidden=!1):this.badgeCount.hidden=!0,this.list.innerHTML="";const h=Object.keys(f).sort((l,N)=>{var a,I;const T=((a=f[l].__meta)==null?void 0:a.utime)||0;return(((I=f[N].__meta)==null?void 0:I.utime)||0)-T});for(const l of h){const N=f[l],T=document.createElement("div");T.classList.add(s("datasets-list-item"));const b=N.__meta.uri||"",a=N.__meta.method||"GET";T.setAttribute("data-url",b),T.setAttribute("data-method",a),l===R&&T.classList.add(s("active"));const I=document.createElement("span");I.classList.add(s("datasets-item-nb")),I.textContent=`#${N.__meta.nb}`,T.append(I);const H=document.createElement("span");H.classList.add(s("datasets-item-time")),H.textContent=N.__meta.datetime?N.__meta.datetime.split(" ")[1]:"",T.append(H);const m=document.createElement("div");m.classList.add(s("datasets-item-request"));const o=document.createElement("span");o.classList.add(s("datasets-item-method")),o.textContent=a,m.append(o);const u=document.createElement("span");if(u.classList.add(s("datasets-item-url")),u.textContent=b,m.append(u),N.__meta.suffix){const L=document.createElement("span");L.classList.add(s("datasets-item-suffix")),L.textContent=` ${N.__meta.suffix}`,m.append(L)}T.append(m);const C=document.createElement("div");C.classList.add(s("datasets-item-badges"));for(const[L,k]of Object.entries(A.dataMap)){const q=M(N,k[0],k[1]);if(L.includes(":")){const ee=L.split(":"),ne=ee[0];if(ee[1]==="badge"&&q>0){const ae=A.getControl(ne);if(ae){const se=document.createElement("span");if(se.classList.add(s("datasets-item-badge")),se.setAttribute("title",ae.get("title")),se.dataset.tab=ne,ae.icon){const ce=ae.icon.cloneNode(!0);ce.style.width="12px",ce.style.height="12px",se.append(ce)}const ge=document.createElement("span");ge.textContent=q,se.append(ge),C.append(se),se.addEventListener("click",ce=>{ce.stopPropagation(),A.showDataSet(l),A.showTab(ne),this.panel.hidden=!0})}}}}T.append(C);const X=document.createElement("a");X.classList.add(s("datasets-item-copy-id")),X.title=`Copy Request ID: ${l}`,X.innerHTML='',X.addEventListener("click",L=>{L.stopPropagation();const k=document.createElement("textarea");k.value=l,k.style.position="fixed",k.style.opacity="0",document.body.append(k),k.select(),document.execCommand("copy"),k.remove();const q=X.querySelector("i");q.className="phpdebugbar-icon phpdebugbar-icon-circle-check",X.classList.add(s("copied")),setTimeout(()=>{q.className="phpdebugbar-icon phpdebugbar-icon-copy",X.classList.remove(s("copied"))},2e3)}),T.append(X),T.addEventListener("click",()=>{A.showDataSet(l),this.panel.hidden=!0}),this.list.append(T)}this.applySearchFilter()}else this.badge.hidden=!0}applySearchFilter(){const A=this.searchInput.value.toLowerCase().trim(),f=this.list.querySelectorAll(`.${s("datasets-list-item")}`);for(const R of f)if(A==="")R.hidden=!1;else{const E=R.getAttribute("data-url").toLowerCase(),h=`${R.getAttribute("data-method").toLowerCase()} ${E}`,N=A.split(/\s+/).filter(T=>T.length>0).every(T=>h.includes(T));R.hidden=!N}}scanForNewDatasets(){const A=this.get("debugbar");if(!this.isScanning||!A.openHandler)return;const f=A.datasets,R=Object.values(f).reduce((i,h)=>{var l;return Math.max(i,((l=h.__meta)==null?void 0:l.utime)||0)},0),E=()=>{this.isScanning&&setTimeout(()=>this.scanForNewDatasets(),1e3)};A.openHandler.find({utime:R},0,(i,h)=>{if(h){console.error("scanForNewDatasets: find() failed",h),this.isScanning=!1,this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Error scanning";return}try{const l=i.filter(T=>T.utime>R&&!f[T.id]);l.reverse();const N=(T=0)=>{if(T>=l.length){E();return}const{id:b}=l[T],a=T===l.length-1;A.loadDataSet(b,"(scan)",()=>N(T+1),this.autoshowCheckbox.checked&&a)};l.length?N():E()}catch(l){console.error("scanForNewDatasets: unexpected error",l),this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Error scanning",this.isScanning=!1}})}}PhpDebugBar.Widgets.DatasetWidget=G})();(function(){const s=function(W){return PhpDebugBar.utils.csscls(W,"phpdebugbar-openhandler-")};PhpDebugBar.OpenHandler=PhpDebugBar.Widget.extend({className:"phpdebugbar-openhandler",defaults:{items_per_page:20},render(){const W=this;document.body.append(this.el),this.el.style.display="none",this.closebtn=document.createElement("a"),this.closebtn.classList.add(s("closebtn")),this.closebtn.innerHTML='',this.brand=document.createElement("span"),this.brand.classList.add(s("brand")),this.brand.innerHTML='',this.table=document.createElement("tbody");const S=document.createElement("div");S.classList.add(s("header")),S.textContent="PHP DebugBar | Open",S.prepend(this.brand),S.append(this.closebtn),this.el.append(S);const g=document.createElement("table");g.innerHTML='IDDateMethodURLIPFilter data',g.append(this.table),this.el.append(g),this.actions=document.createElement("div"),this.actions.classList.add(s("actions")),this.el.append(this.actions),this.closebtn.addEventListener("click",()=>{W.hide()}),this.loadmorebtn=document.createElement("a"),this.loadmorebtn.textContent="Load more",this.actions.append(this.loadmorebtn),this.loadmorebtn.addEventListener("click",()=>{W.find(W.last_find_request,W.last_find_request.offset+W.get("items_per_page"),W.handleFind.bind(W))}),this.showonlycurrentbtn=document.createElement("a"),this.showonlycurrentbtn.textContent="Show only current URL",this.actions.append(this.showonlycurrentbtn),this.showonlycurrentbtn.addEventListener("click",()=>{W.uriInput.value=window.location.pathname,W.searchBtn.click()}),this.refreshbtn=document.createElement("a"),this.refreshbtn.textContent="Refresh",this.actions.append(this.refreshbtn),this.refreshbtn.addEventListener("click",()=>{W.refresh()}),this.clearbtn=document.createElement("a"),this.clearbtn.textContent="Clear storage",this.actions.append(this.clearbtn),this.clearbtn.addEventListener("click",()=>{W.clear(()=>{W.hide()})}),this.addSearch(),this.overlay=document.createElement("div"),this.overlay.classList.add(s("overlay")),this.overlay.style.display="none",document.body.append(this.overlay),this.overlay.addEventListener("click",()=>{W.hide()})},refresh(){this.table.innerHTML="",this.loadmorebtn.style.display="",this.find({},0,this.handleFind.bind(this))},addSearch(){const W=this,S=this.searchBtn=document.createElement("button");S.textContent="Search",S.type="submit",S.addEventListener("click",function(w){W.table.innerHTML="";const c={},B=new FormData(this.parentElement);for(const[M,U]of B.entries())U&&(c[M]=U);W.find(c,0,W.handleFind.bind(W)),w.preventDefault()});const g=document.createElement("form");g.innerHTML='
Filter results
',this.uriInput=document.createElement("input"),this.uriInput.type="text",this.uriInput.name="uri",this.uriInput.placeholder="URI, eg '/user/*'",g.append(this.uriInput),this.ipInput=document.createElement("input"),this.ipInput.type="text",this.ipInput.name="ip",this.ipInput.placeholder="IP",g.append(this.ipInput);const d=document.createElement("button");d.textContent="Reset",d.type="button",d.addEventListener("click",()=>{g.reset(),S.click()}),g.append(S),g.append(d),this.actions.append(g)},handleFind(W){const S=this;for(const g of W){const d=document.createElement("a");d.textContent="Load dataset",d.addEventListener("click",G=>{S.hide(),S.load(g.id,P=>{S.callback(g.id,P)}),G.preventDefault()});const w=document.createElement("a");w.textContent=g.method,w.addEventListener("click",G=>{S.table.innerHTML="",S.find({method:g.method},0,S.handleFind.bind(S)),G.preventDefault()});const c=document.createElement("a");c.textContent=g.uri,c.addEventListener("click",G=>{S.hide(),S.load(g.id,P=>{S.callback(g.id,P)}),G.preventDefault()});const B=document.createElement("a");B.textContent=g.ip,B.addEventListener("click",G=>{S.ipInput.value=g.ip,S.searchBtn.click(),G.preventDefault()});const M=document.createElement("a");M.textContent="Show URL",M.addEventListener("click",G=>{S.uriInput.value=g.uri,S.searchBtn.click(),G.preventDefault()});const U=document.createElement("tr"),p=document.createElement("td");p.classList.add(s("id-cell"));const e=document.createElement("span");e.classList.add(s("id-text")),e.textContent=g.id,e.title=g.id,p.append(e);const t=document.createElement("a");t.classList.add(s("copy-id")),t.title="Copy Request ID",t.innerHTML='',t.addEventListener("click",G=>{G.stopPropagation(),G.preventDefault();const P=document.createElement("textarea");P.value=g.id,P.style.position="fixed",P.style.opacity="0",document.body.append(P),P.select(),document.execCommand("copy"),P.remove();const A=t.querySelector("i");A.className="phpdebugbar-icon phpdebugbar-icon-circle-check",t.classList.add(s("copied")),setTimeout(()=>{A.className="phpdebugbar-icon phpdebugbar-icon-copy",t.classList.remove(s("copied"))},2e3)}),p.append(t),U.append(p);const r=document.createElement("td");r.textContent=g.datetime,U.append(r);const y=document.createElement("td");y.textContent=g.method,U.append(y);const _=document.createElement("td");_.append(c),U.append(_);const O=document.createElement("td");O.append(B),U.append(O);const v=document.createElement("td");v.append(M),U.append(v),S.table.append(U)}W.lengthd.json()).then(S).catch(d=>{S(null,d)})}})})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class W extends PhpDebugBar.Widget{get className(){return s("mails")}render(){this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(g,d){const w=document.createElement("span");w.classList.add(s("subject")),w.textContent=d.subject,g.append(w);const c=document.createElement("span");if(c.classList.add(s("to")),c.textContent=d.to,g.append(c),d.attachments&&d.attachments.length){const B=` +|$))`),"u")},R.prototype.createReservedWordRegex=function(r){var C=r.join("|").replace(/ /gu,"\\s+");return new RegExp("^(".concat(C,")\\b"),"iu")},R.prototype.createWordRegex=function(r){return new RegExp("^([\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}".concat(r.join(""),"]+)"),"u")},R.prototype.createStringRegex=function(r){return new RegExp("^("+this.createStringPattern(r)+")","u")},R.prototype.createStringPattern=function(r){var C={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)","E''":"(((E|e)'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)"};return r.map(function(W){return C[W]}).join("|")},R.prototype.createParenRegex=function(r){var C=this;return new RegExp("^("+r.map(function(W){return C.escapeParen(W)}).join("|")+")","iu")},R.prototype.escapeParen=function(r){return r.length===1?(0,o.default)(r):"\\b"+r+"\\b"},R.prototype.createPlaceholderRegex=function(r,C){if(!r||r.length===0)return null;var W=r.map(o.default).join("|");return new RegExp("^((?:".concat(W,")(?:").concat(C,"))"),"u")},R.prototype.tokenize=function(r){if(!r)return[];for(var C=[],W;r.length;)W=this.getNextToken(r,W),r=r.substring(W.value.length),C.push(W);return C},R.prototype.getNextToken=function(r,C){return this.getWhitespaceToken(r)||this.getCommentToken(r)||this.getStringToken(r)||this.getOpenParenToken(r)||this.getCloseParenToken(r)||this.getAmbiguosOperatorToken(r)||this.getNoSpaceOperatorToken(r)||this.getServerVariableToken(r)||this.getPlaceholderToken(r)||this.getNumberToken(r)||this.getReservedWordToken(r,C)||this.getWordToken(r)||this.getOperatorToken(r)},R.prototype.getWhitespaceToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.WHITESPACE,regex:this.WHITESPACE_REGEX})},R.prototype.getCommentToken=function(r){return this.getLineCommentToken(r)||this.getBlockCommentToken(r)},R.prototype.getLineCommentToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.LINE_COMMENT,regex:this.LINE_COMMENT_REGEX})},R.prototype.getBlockCommentToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.BLOCK_COMMENT,regex:this.BLOCK_COMMENT_REGEX})},R.prototype.getStringToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.STRING,regex:this.STRING_REGEX})},R.prototype.getOpenParenToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.OPEN_PAREN,regex:this.OPEN_PAREN_REGEX})},R.prototype.getCloseParenToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.CLOSE_PAREN,regex:this.CLOSE_PAREN_REGEX})},R.prototype.getPlaceholderToken=function(r){return this.getIdentNamedPlaceholderToken(r)||this.getStringNamedPlaceholderToken(r)||this.getIndexedPlaceholderToken(r)},R.prototype.getServerVariableToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.SERVERVARIABLE,regex:/(^@@\w+)/iu})},R.prototype.getIdentNamedPlaceholderToken=function(r){return this.getPlaceholderTokenWithKey({input:r,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:function(C){return C.slice(1)}})},R.prototype.getStringNamedPlaceholderToken=function(r){var C=this;return this.getPlaceholderTokenWithKey({input:r,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:function(W){return C.getEscapedPlaceholderKey({key:W.slice(2,-1),quoteChar:W.slice(-1)})}})},R.prototype.getIndexedPlaceholderToken=function(r){return this.getPlaceholderTokenWithKey({input:r,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:function(C){return C.slice(1)}})},R.prototype.getPlaceholderTokenWithKey=function(r){var C=r.input,W=r.regex,N=r.parseKey,l=this.getTokenOnFirstMatch({input:C,regex:W,type:y.TokenTypes.PLACEHOLDER});return l&&(l.key=N(l.value)),l},R.prototype.getEscapedPlaceholderKey=function(r){var C=r.key,W=r.quoteChar;return C.replace(new RegExp((0,o.default)("\\"+W),"gu"),W)},R.prototype.getNumberToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.NUMBER,regex:this.NUMBER_REGEX})},R.prototype.getOperatorToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.OPERATOR,regex:this.OPERATOR_REGEX})},R.prototype.getAmbiguosOperatorToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.OPERATOR,regex:this.AMBIGUOS_OPERATOR_REGEX})},R.prototype.getNoSpaceOperatorToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.NO_SPACE_OPERATOR,regex:this.NO_SPACE_OPERATOR_REGEX})},R.prototype.getReservedWordToken=function(r,C){if(!(C&&C.value&&C.value==="."))return this.getToplevelReservedToken(r)||this.getNewlineReservedToken(r)||this.getTopLevelReservedTokenNoIndent(r)||this.getPlainReservedToken(r)},R.prototype.getToplevelReservedToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.RESERVED_TOP_LEVEL,regex:this.RESERVED_TOP_LEVEL_REGEX})},R.prototype.getNewlineReservedToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.RESERVED_NEWLINE,regex:this.RESERVED_NEWLINE_REGEX})},R.prototype.getPlainReservedToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.RESERVED,regex:this.RESERVED_PLAIN_REGEX})},R.prototype.getTopLevelReservedTokenNoIndent=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT,regex:this.RESERVED_TOP_LEVEL_NO_INDENT_REGEX})},R.prototype.getWordToken=function(r){return this.getTokenOnFirstMatch({input:r,type:y.TokenTypes.WORD,regex:this.WORD_REGEX})},R.prototype.getTokenOnFirstMatch=function(r){var C=r.input,W=r.type,N=r.regex,l=C.match(N);if(l)return{type:W,value:l[1]}},R})();a.default=L}),I=d(a=>{"use strict";a.__esModule=!0;var m=function(o){return o===void 0&&(o=[]),o[o.length-1]};a.default=m}),G=d(a=>{"use strict";var m=a&&a.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};a.__esModule=!0;var o=m(I()),y="top-level",L="block-level",R=(function(){function r(C){this.indent=C,this.indentTypes=[],this.indent=C||" "}return r.prototype.getIndent=function(){return new Array(this.indentTypes.length).fill(this.indent).join("")},r.prototype.increaseTopLevel=function(){this.indentTypes.push(y)},r.prototype.increaseBlockLevel=function(){this.indentTypes.push(L)},r.prototype.decreaseTopLevel=function(){(0,o.default)(this.indentTypes)===y&&this.indentTypes.pop()},r.prototype.decreaseBlockLevel=function(){for(;this.indentTypes.length>0;){var C=this.indentTypes.pop();if(C!==y)break}},r.prototype.resetIndentation=function(){this.indentTypes=[]},r})();a.default=R}),w=d(a=>{"use strict";a.__esModule=!0;var m=_(),o=50,y=(function(){function L(){this.level=0}return L.prototype.beginIfPossible=function(R,r){this.level===0&&this.isInlineBlock(R,r)?this.level=1:this.level>0?this.level++:this.level=0},L.prototype.end=function(){this.level--},L.prototype.isActive=function(){return this.level>0},L.prototype.isInlineBlock=function(R,r){for(var C=0,W=0,N=r;No)return!1;if(l.type===m.TokenTypes.OPEN_PAREN)W++;else if(l.type===m.TokenTypes.CLOSE_PAREN&&(W--,W===0))return!0;if(this.isForbiddenToken(l))return!1}return!1},L.prototype.isForbiddenToken=function(R){var r=R.type,C=R.value;return r===m.TokenTypes.RESERVED_TOP_LEVEL||r===m.TokenTypes.RESERVED_NEWLINE||r===m.TokenTypes.LINE_COMMENT||r===m.TokenTypes.BLOCK_COMMENT||C===";"},L})();a.default=y}),e=d(a=>{"use strict";a.__esModule=!0;var m=(function(){function o(y){this.params=y,this.index=0,this.params=y}return o.prototype.get=function(y){var L=y.key,R=y.value;return this.params?L?this.params[L]:this.params[this.index++]:R},o})();a.default=m}),t=d(a=>{"use strict";var m=a&&a.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};a.__esModule=!0;var o=_(),y=m(G()),L=m(w()),R=m(e()),r=[" "," "],C=function(N){for(var l=N.length-1;l>=0&&r.includes(N[l]);)l--;return N.substring(0,l+1)},W=(function(){function N(l,p,v){this.cfg=l,this.tokenizer=p,this.tokenOverride=v,this.tokens=[],this.previousReservedWord={type:null,value:null},this.previousNonWhiteSpace={type:null,value:null},this.index=0,this.indentation=new y.default(this.cfg.indent),this.inlineBlock=new L.default,this.params=new R.default(this.cfg.params)}return N.prototype.format=function(l){this.tokens=this.tokenizer.tokenize(l);var p=this.getFormattedQueryFromTokens();return p.trim()},N.prototype.getFormattedQueryFromTokens=function(){var l=this,p="";return this.tokens.forEach(function(v,X){l.index=X,l.tokenOverride&&(v=l.tokenOverride(v,l.previousReservedWord)||v),v.type===o.TokenTypes.WHITESPACE?p=l.formatWhitespace(v,p):v.type===o.TokenTypes.LINE_COMMENT?p=l.formatLineComment(v,p):v.type===o.TokenTypes.BLOCK_COMMENT?p=l.formatBlockComment(v,p):v.type===o.TokenTypes.RESERVED_TOP_LEVEL||v.type===o.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT||v.type===o.TokenTypes.RESERVED_NEWLINE||v.type===o.TokenTypes.RESERVED?p=l.formatReserved(v,p):v.type===o.TokenTypes.OPEN_PAREN?p=l.formatOpeningParentheses(v,p):v.type===o.TokenTypes.CLOSE_PAREN?p=l.formatClosingParentheses(v,p):v.type===o.TokenTypes.NO_SPACE_OPERATOR?p=l.formatWithoutSpaces(v,p):v.type===o.TokenTypes.PLACEHOLDER||v.type===o.TokenTypes.SERVERVARIABLE?p=l.formatPlaceholder(v,p):v.value===","?p=l.formatComma(v,p):v.value===":"?p=l.formatWithSpaceAfter(v,p):v.value==="."?p=l.formatWithoutSpaces(v,p):v.value===";"?p=l.formatQuerySeparator(v,p):p=l.formatWithSpaces(v,p),v.type!==o.TokenTypes.WHITESPACE&&(l.previousNonWhiteSpace=v)}),p},N.prototype.formatWhitespace=function(l,p){return this.cfg.linesBetweenQueries==="preserve"&&/((\r\n|\n)(\r\n|\n)+)/u.test(l.value)&&this.previousToken().value===";"?p.replace(/(\n|\r\n)$/u,"")+l.value:p},N.prototype.formatReserved=function(l,p){return l.type===o.TokenTypes.RESERVED_NEWLINE&&this.previousReservedWord&&this.previousReservedWord.value&&l.value.toUpperCase()==="AND"&&this.previousReservedWord.value.toUpperCase()==="BETWEEN"&&(l.type=o.TokenTypes.RESERVED),l.type===o.TokenTypes.RESERVED_TOP_LEVEL?p=this.formatTopLevelReservedWord(l,p):l.type===o.TokenTypes.RESERVED_TOP_LEVEL_NO_INDENT?p=this.formatTopLevelReservedWordNoIndent(l,p):l.type===o.TokenTypes.RESERVED_NEWLINE?p=this.formatNewlineReservedWord(l,p):p=this.formatWithSpaces(l,p),this.previousReservedWord=l,p},N.prototype.formatLineComment=function(l,p){return this.addNewline(p+l.value)},N.prototype.formatBlockComment=function(l,p){return this.addNewline(this.addNewline(p)+this.indentComment(l.value))},N.prototype.indentComment=function(l){return l.replace(/\n[ \t]*/gu,` +`+this.indentation.getIndent()+" ")},N.prototype.formatTopLevelReservedWordNoIndent=function(l,p){return this.indentation.decreaseTopLevel(),p=this.addNewline(p)+this.equalizeWhitespace(this.formatReservedWord(l.value)),this.addNewline(p)},N.prototype.formatTopLevelReservedWord=function(l,p){var v=this.previousNonWhiteSpace.value!==","&&!["GRANT"].includes("".concat(this.previousNonWhiteSpace.value).toUpperCase());return v&&(this.indentation.decreaseTopLevel(),p=this.addNewline(p)),p=p+this.equalizeWhitespace(this.formatReservedWord(l.value))+" ",v&&this.indentation.increaseTopLevel(),p},N.prototype.formatNewlineReservedWord=function(l,p){return this.addNewline(p)+this.equalizeWhitespace(this.formatReservedWord(l.value))+" "},N.prototype.equalizeWhitespace=function(l){return l.replace(/\s+/gu," ")},N.prototype.formatOpeningParentheses=function(l,p){l.value=this.formatCase(l.value);var v=this.previousToken().type;return v!==o.TokenTypes.WHITESPACE&&v!==o.TokenTypes.OPEN_PAREN&&v!==o.TokenTypes.LINE_COMMENT&&(p=C(p)),p+=l.value,this.inlineBlock.beginIfPossible(this.tokens,this.index),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),p=this.addNewline(p)),p},N.prototype.formatClosingParentheses=function(l,p){return l.value=this.formatCase(l.value),this.inlineBlock.isActive()?(this.inlineBlock.end(),this.formatWithSpaceAfter(l,p)):(this.indentation.decreaseBlockLevel(),this.formatWithSpaces(l,this.addNewline(p)))},N.prototype.formatPlaceholder=function(l,p){return p+this.params.get(l)+" "},N.prototype.formatComma=function(l,p){return p=C(p)+l.value+" ",this.inlineBlock.isActive()||/^LIMIT$/iu.test(this.previousReservedWord.value)?p:this.addNewline(p)},N.prototype.formatWithSpaceAfter=function(l,p){return C(p)+l.value+" "},N.prototype.formatWithoutSpaces=function(l,p){return C(p)+l.value},N.prototype.formatWithSpaces=function(l,p){var v=l.type===o.TokenTypes.RESERVED?this.formatReservedWord(l.value):l.value;return p+v+" "},N.prototype.formatReservedWord=function(l){return this.formatCase(l)},N.prototype.formatQuerySeparator=function(l,p){this.indentation.resetIndentation();var v=` +`;return this.cfg.linesBetweenQueries!=="preserve"&&(v=` +`.repeat(this.cfg.linesBetweenQueries||1)),C(p)+l.value+v},N.prototype.addNewline=function(l){return l=C(l),l.endsWith(` +`)||(l+=` +`),l+this.indentation.getIndent()},N.prototype.previousToken=function(){return this.tokens[this.index-1]||{type:null,value:null}},N.prototype.formatCase=function(l){return this.cfg.reservedWordCase==="upper"?l.toUpperCase():this.cfg.reservedWordCase==="lower"?l.toLowerCase():l},N})();a.default=W}),i=d(a=>{"use strict";var m=a&&a.__importDefault||function(R){return R&&R.__esModule?R:{default:R}};a.__esModule=!0;var o=m(O()),y=m(t()),L=(function(){function R(r){this.cfg=r}return R.prototype.format=function(r){return new y.default(this.cfg,this.tokenizer(),this.tokenOverride).format(r)},R.prototype.tokenize=function(r){return this.tokenizer().tokenize(r)},R.prototype.tokenizer=function(){return new o.default(this.getTokenizerConfig())},R})();a.default=L}),E=d(a=>{"use strict";var m=a&&a.__extends||(function(){var N=function(l,p){return N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,X){v.__proto__=X}||function(v,X){for(var A in X)Object.prototype.hasOwnProperty.call(X,A)&&(v[A]=X[A])},N(l,p)};return function(l,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");N(l,p);function v(){this.constructor=l}l.prototype=p===null?Object.create(p):(v.prototype=p.prototype,new v)}})(),o=a&&a.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};a.__esModule=!0;var y=o(i()),L=(function(N){m(l,N);function l(){return N!==null&&N.apply(this,arguments)||this}return l.prototype.getTokenizerConfig=function(){return{reservedWords:R,reservedTopLevelWords:r,reservedNewlineWords:W,reservedTopLevelWordsNoIndent:C,stringTypes:['""',"''","``","[]"],openParens:["("],closeParens:[")"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["#","@"]}},l})(y.default);a.default=L;var R=["ABS","ACTIVATE","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","ANY","ARE","ARRAY","AS","ASC","ASENSITIVE","ASSOCIATE","ASUTIME","ASYMMETRIC","AT","ATOMIC","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","AVG","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BLOB","BOOLEAN","BOTH","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CCSID","CEIL","CEILING","CHAR","CHARACTER","CHARACTER_LENGTH","CHAR_LENGTH","CHECK","CLOB","CLONE","CLOSE","CLUSTER","COALESCE","COLLATE","COLLECT","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","CONVERT","CORR","CORRESPONDING","COUNT","COUNT_BIG","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DATE","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DEREF","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DOUBLE","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELEMENT","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPTION","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXP","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FILTER","FINAL","FIRST","FLOAT","FLOOR","FOR","FOREIGN","FREE","FULL","FUNCTION","FUSION","GENERAL","GENERATED","GET","GLOBAL","GOTO","GRANT","GRAPHIC","GROUP","GROUPING","HANDLER","HASH","HASHED_VALUE","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INT","INTEGER","INTEGRITY","INTERSECTION","INTERVAL","INTO","IS","ISOBID","ISOLATION","ITERATE","JAR","JAVA","KEEP","KEY","LABEL","LANGUAGE","LARGE","LATERAL","LC_CTYPE","LEADING","LEAVE","LEFT","LIKE","LINKTYPE","LN","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LONG","LOOP","LOWER","MAINTAINED","MATCH","MATERIALIZED","MAX","MAXVALUE","MEMBER","MERGE","METHOD","MICROSECOND","MICROSECONDS","MIN","MINUTE","MINUTES","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MONTHS","MULTISET","NAN","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZE","NORMALIZED","NOT","NULL","NULLIF","NULLS","NUMERIC","NUMPARTS","OBID","OCTET_LENGTH","OF","OFFSET","OLD","OLD_TABLE","ON","ONLY","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","ORDER","OUT","OUTER","OVER","OVERLAPS","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PIECESIZE","PLAN","POSITION","POWER","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","REAL","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCOPE","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SIGNAL","SIMILAR","SIMPLE","SMALLINT","SNAN","SOME","SOURCE","SPECIFIC","SPECIFICTYPE","SQL","SQLEXCEPTION","SQLID","SQLSTATE","SQLWARNING","SQRT","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STDDEV_POP","STDDEV_SAMP","STOGROUP","STORES","STYLE","SUBMULTISET","SUBSTRING","SUM","SUMMARY","SYMMETRIC","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","TABLESPACE","THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSACTION","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TYPE","UESCAPE","UNDO","UNIQUE","UNKNOWN","UNNEST","UNTIL","UPPER","USAGE","USER","USING","VALIDPROC","VALUE","VARCHAR","VARIABLE","VARIANT","VARYING","VAR_POP","VAR_SAMP","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHILE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],r=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INTERSECT","LIMIT","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UPDATE","VALUES","WHERE"],C=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],W=["AND","CROSS JOIN","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN"]}),g=d(a=>{"use strict";var m=a&&a.__extends||(function(){var N=function(l,p){return N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,X){v.__proto__=X}||function(v,X){for(var A in X)Object.prototype.hasOwnProperty.call(X,A)&&(v[A]=X[A])},N(l,p)};return function(l,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");N(l,p);function v(){this.constructor=l}l.prototype=p===null?Object.create(p):(v.prototype=p.prototype,new v)}})(),o=a&&a.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};a.__esModule=!0;var y=o(i()),L=(function(N){m(l,N);function l(){return N!==null&&N.apply(this,arguments)||this}return l.prototype.getTokenizerConfig=function(){return{reservedWords:R,reservedTopLevelWords:r,reservedNewlineWords:W,reservedTopLevelWordsNoIndent:C,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"],specialWordChars:[]}},l})(y.default);a.default=L;var R=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],r=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],C=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],W=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"]}),c=d(a=>{"use strict";var m=a&&a.__extends||(function(){var l=function(p,v){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(X,A){X.__proto__=A}||function(X,A){for(var M in A)Object.prototype.hasOwnProperty.call(A,M)&&(X[M]=A[M])},l(p,v)};return function(p,v){if(typeof v!="function"&&v!==null)throw new TypeError("Class extends value "+String(v)+" is not a constructor or null");l(p,v);function X(){this.constructor=p}p.prototype=v===null?Object.create(v):(X.prototype=v.prototype,new X)}})(),o=a&&a.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};a.__esModule=!0;var y=o(i()),L=_(),R=(function(l){m(p,l);function p(){var v=l!==null&&l.apply(this,arguments)||this;return v.tokenOverride=function(X,A){if(X.type===L.TokenTypes.RESERVED_TOP_LEVEL&&A.value&&X.value.toUpperCase()==="SET"&&A.value.toUpperCase()==="BY")return X.type=L.TokenTypes.RESERVED,X},v}return p.prototype.getTokenizerConfig=function(){return{reservedWords:r,reservedTopLevelWords:C,reservedNewlineWords:N,reservedTopLevelWordsNoIndent:W,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]}},p})(y.default);a.default=R;var r=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BREADTH","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DEPTH","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","END","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SEARCH","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],C=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","END","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UPDATE","VALUES","WHERE"],W=["INTERSECT","INTERSECT ALL","MINUS","UNION","UNION ALL"],N=["AND","CROSS APPLY","CROSS JOIN","ELSE","END","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"]}),u=d(a=>{"use strict";var m=a&&a.__extends||(function(){var N=function(l,p){return N=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,X){v.__proto__=X}||function(v,X){for(var A in X)Object.prototype.hasOwnProperty.call(X,A)&&(v[A]=X[A])},N(l,p)};return function(l,p){if(typeof p!="function"&&p!==null)throw new TypeError("Class extends value "+String(p)+" is not a constructor or null");N(l,p);function v(){this.constructor=l}l.prototype=p===null?Object.create(p):(v.prototype=p.prototype,new v)}})(),o=a&&a.__importDefault||function(N){return N&&N.__esModule?N:{default:N}};a.__esModule=!0;var y=o(i()),L=(function(N){m(l,N);function l(){return N!==null&&N.apply(this,arguments)||this}return l.prototype.getTokenizerConfig=function(){return{reservedWords:R,reservedTopLevelWords:r,reservedNewlineWords:W,reservedTopLevelWordsNoIndent:C,stringTypes:['""',"N''","''","``","[]","E''"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":","%","$"],lineCommentTypes:["#","--"],specialWordChars:[]}},l})(y.default);a.default=L;var R=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","COUNT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DAY","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRIGGER","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],r=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","CREATE OR REPLACE","DECLARE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GO","GRANT","GROUP BY","HAVING","INSERT INTO","INSERT","LIMIT","MODIFY","ORDER BY","RETURNING","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UPDATE","VALUES","WHERE"],C=["INTERSECT ALL","INTERSECT","MINUS","UNION ALL","UNION"],W=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","FULL JOIN","FULL OUTER JOIN","LEFT JOIN","LEFT OUTER JOIN","NATURAL JOIN","OR","OUTER APPLY","OUTER JOIN","RENAME","RIGHT JOIN","RIGHT OUTER JOIN","JOIN","WHEN","XOR"]}),b=d(a=>{"use strict";var m=a&&a.__importDefault||function(W){return W&&W.__esModule?W:{default:W}};a.__esModule=!0,a.tokenize=a.format=void 0;var o=m(E()),y=m(g()),L=m(c()),R=m(u()),r=function(W,N){switch(N===void 0&&(N={}),N.language){case"db2":return new o.default(N).format(W);case"n1ql":return new y.default(N).format(W);case"pl/sql":return new L.default(N).format(W);default:return new R.default(N).format(W)}};a.format=r;var C=function(W,N){return N===void 0&&(N={}),new R.default(N).tokenize(W)};a.tokenize=C,a.default={format:a.format,tokenize:a.tokenize}}),f=P(b(),1);globalThis.phpdebugbar_sqlformatter=f.default.default})();window.PhpDebugBar=window.PhpDebugBar||{};(function(){const s=window.PhpDebugBar;s.utils=s.utils||{};const H=s.utils.getDictValue=function(w,e,t){if(w==null)return t;const i=String(e).split(".");let E=w;for(const g of i)if(E==null||(E=E[g],E===void 0))return t;return E};s.utils.csscls=function(w,e){const t=String(w).trim();return t.includes(" ")?t.split(/\s+/).filter(Boolean).map(i=>s.utils.csscls(i,e)).join(" "):t.startsWith(".")?`.${e}${t.slice(1)}`:e+t},s.utils.makecsscls=function(w){return e=>s.utils.csscls(e,w)};const T=s.utils.makecsscls("phpdebugbar-");s.utils.sfDump=function(w){typeof window.Sfdump=="function"&&w.querySelectorAll("pre.sf-dump[id]").forEach(e=>{window.Sfdump(e.id,{maxDepth:0})})};const S=s.utils.formatSummary=function(w,e=""){const t=g=>g==null?"null":String(g);if(w==null||typeof w!="object")return e+t(w);const i=[],E=Array.isArray(w);for(const[g,c]of Object.entries(w)){const u=c!==null&&typeof c=="object";if(E){if(!u){i.push(`${e}- ${t(c)}`);continue}const b=S(c,`${e} `);i.push(`${b.slice(0,e.length)}- ${b.slice(e.length+2)}`);continue}if(u){i.push(`${e}${g}:`),i.push(S(c,`${e} `));continue}i.push(`${e}${g} = ${t(c)}`)}return i.join(` +`)},h=s.utils.summaryText=function(w){return w==null?"":typeof w=="string"?w:S(w)},k=s.utils.titleize=function(w){const e=String(w).replace(/[_-]/g," ");return e.charAt(0).toUpperCase()+e.slice(1)};s.utils.copyToClipboard=function(w){var i;if(!w)return Promise.reject(new Error("Nothing to copy"));if((i=navigator.clipboard)!=null&&i.writeText)return navigator.clipboard.writeText(w);const e=document.createElement("textarea");e.value=w,e.style.position="fixed",e.style.opacity="0",document.body.append(e),e.select();let t=!1;try{t=document.execCommand("copy")}catch(E){t=!1}return e.remove(),t?Promise.resolve():Promise.reject(new Error("Copy failed"))},s.utils.schedule=function(w){return window.requestIdleCallback?window.requestIdleCallback(w,{timeout:1e3}):setTimeout(w,0)};class d{get tagName(){return"div"}constructor(e={}){this._attributes=et({},this.defaults),this._boundAttributes={},this.el=document.createElement(this.tagName),this.className&&this.el.classList.add(...this.className.split(" ")),this.initialize(e),this.render()}initialize(e){this.set(e)}render(){}set(e,t){const i=typeof e=="string"?{[e]:t}:e,E=[];for(const g in i)if(t=i[g],this._attributes[g]=t,this._boundAttributes[g])for(const c of this._boundAttributes[g])E.includes(c)||(c.call(this,t),E.push(c))}has(e){return this._attributes[e]!==void 0&&this._attributes[e]!==null}get(e){return this._attributes[e]}bindAttr(e,t){if(Array.isArray(e)){for(const i of e)this.bindAttr(i,t);return}if(this._boundAttributes[e]||(this._boundAttributes[e]=[]),t instanceof HTMLElement){const i=t;t=E=>i.textContent=E||""}this._boundAttributes[e].push(t),this.has(e)&&t.call(this,this._attributes[e])}static extend(e){const t=this;class i extends t{}for(const E in e){const g=Object.getOwnPropertyDescriptor(e,E);g&&Object.defineProperty(i.prototype,E,g)}return Object.assign(i,t),i.__super__=t.prototype,i}}d.prototype.defaults={},s.Widget=d;class U{constructor(e={}){this.section=null,this.el=document.createElement("div"),this.el.classList.add(T("summary-float")),this.el.hidden=!0,this.btn=document.createElement("a"),this.btn.classList.add(T("summary-btn")),this.btn.setAttribute("title","Show summary"),this.btn.setAttribute("aria-haspopup","dialog"),this.btn.setAttribute("aria-expanded","false"),this.btn.addEventListener("click",i=>{i.stopPropagation(),this.toggle()}),this.el.append(this.btn),this.popover=document.createElement("div"),this.popover.classList.add(T("summary-popover")),this.popover.setAttribute("role","dialog"),this.popover.hidden=!0,this.popover.addEventListener("click",i=>i.stopPropagation()),this.content=document.createElement("div"),this.content.classList.add(T("summary-content")),this.popover.append(this.content),this.preferAll=localStorage.getItem("phpdebugbar-summary-all")==="1",this.scope=document.createElement("div"),this.scope.classList.add(T("summary-scope")),this.sectionBtn=this.createScopeButton("",!1),this.allBtn=this.createScopeButton("All",!0),this.scope.append(this.sectionBtn,this.allBtn),this.copyBtn=this.createCopyButton("Copy",()=>this.shownText);const t=document.createElement("div");t.classList.add(T("summary-actions")),t.append(this.scope,this.copyBtn),this.popover.append(t),this.el.append(this.popover),this.getSection=e.getSection||(()=>null),this.getAll=e.getAll||(()=>""),this.onDocumentClick=()=>this.close(),this.onKeyDown=i=>{i.key==="Escape"&&this.close()}}createScopeButton(e,t){const i=document.createElement("button");return i.type="button",i.classList.add(T("summary-scope-btn")),i.textContent=e,i.addEventListener("click",()=>{this.preferAll!==t&&(this.preferAll=t,localStorage.setItem("phpdebugbar-summary-all",t?"1":"0"),this.refresh())}),i}createCopyButton(e,t){const i=document.createElement("button");return i.type="button",i.classList.add(T("summary-copy")),this.copyLabel=document.createElement("span"),this.copyLabel.textContent=e,this.copyLabelText=e,i.append(this.copyLabel),i.addEventListener("click",()=>{s.utils.copyToClipboard(t()).then(()=>{this.resetCopied(),i.classList.add(T("summary-copied")),this.copyLabel.textContent="Copied!",this.copyTimer=setTimeout(()=>this.resetCopied(),1500)},()=>{})}),i}resetCopied(){clearTimeout(this.copyTimer),this.copyTimer=null,this.copyLabel.textContent=this.copyLabelText,this.copyBtn.classList.remove(T("summary-copied"))}setAvailable(e){this.el.hidden=!e,e||this.close()}refresh(){this.resetCopied(),this.section=this.getSection(),this.all=this.getAll(),this.showAll=this.preferAll||!this.section,this.sectionBtn.hidden=!this.section,this.sectionBtn.textContent=this.section?this.section.title:"",this.sectionBtn.classList.toggle(T("summary-scope-active"),!this.showAll),this.allBtn.classList.toggle(T("summary-scope-active"),this.showAll),this.content.textContent=this.shownText,this.content.scrollTop=0}get shownText(){var e,t;return this.showAll?this.all:(t=(e=this.section)==null?void 0:e.text)!=null?t:""}open(){this.refresh(),this.popover.hidden=!1,this.btn.setAttribute("aria-expanded","true"),this.btn.classList.add(T("summary-btn-active")),document.addEventListener("click",this.onDocumentClick),document.addEventListener("keydown",this.onKeyDown)}close(){this.popover.hidden=!0,this.btn.setAttribute("aria-expanded","false"),this.btn.classList.remove(T("summary-btn-active")),document.removeEventListener("click",this.onDocumentClick),document.removeEventListener("keydown",this.onKeyDown)}toggle(){this.popover.hidden?this.open():this.close()}get isOpen(){return!this.popover.hidden}}s.SummaryPopover=U;class P extends d{get className(){return T("panel")}render(){this.active=!1,this.tab=document.createElement("a"),this.tab.classList.add(T("tab")),this.icon=document.createElement("i"),this.tab.append(this.icon),this.bindAttr("icon",function(t){t?this.icon.className=`phpdebugbar-icon phpdebugbar-icon-${t}`:this.icon.className=""});const e=document.createElement("span");e.classList.add(T("text")),this.tab.append(e),this.bindAttr("title",e),this.badge=document.createElement("span"),this.badge.classList.add(T("badge")),this.tab.append(this.badge),this.bindAttr("badge",function(t){t!==null?(this.badge.textContent=t,this.badge.classList.add(T("visible"))):this.badge.classList.remove(T("visible"))}),this.bindAttr("widget",function(t){this.el.replaceChildren(t.el)}),this.summaryText="",this.bindAttr("summary",function(t){this.summaryText=h(t)}),this.widgetRendered=!1,this.bindAttr("data",function(t){this.has("widget")&&(this.tab.setAttribute("data-empty",Object.keys(t).length===0||t.count===0),!this.widgetRendered&&this.active&&t!=null?this.renderWidgetData():this.widgetRendered=!1)})}renderWidgetData(){const e=this.get("data"),t=this.get("widget");e==null||!t||(t.set("data",e),s.utils.schedule(()=>{s.utils.sfDump(t.el)}),this.widgetRendered=!0)}show(){const e=T("active");this.tab.classList.add(e),this.tab.hidden=!1,this.el.classList.add(e),this.el.hidden=!1,this.active=!0,this.widgetRendered||this.renderWidgetData()}hide(){const e=T("active");this.tab.classList.remove(e),this.el.classList.remove(e),this.el.hidden=!0,this.active=!1}}class B extends d{get tagName(){return"span"}get className(){return T("indicator")}render(){this.icon=document.createElement("i"),this.el.append(this.icon),this.bindAttr("icon",function(t){t?this.icon.className=`phpdebugbar-icon phpdebugbar-icon-${t}`:this.icon.className=""}),this.bindAttr("link",function(t){t?(this.el.addEventListener("click",()=>{this.get("debugbar").showTab(t)}),this.el.style.cursor="pointer"):this.el.style.cursor=""});const e=document.createElement("span");e.classList.add(T("text")),this.el.append(e),this.bindAttr(["title","data"],e),this.tooltip=document.createElement("span"),this.tooltip.classList.add(T("tooltip"),T("disabled")),this.el.append(this.tooltip),this.bindAttr("tooltip",function(t){if(t)if(Array.isArray(t)||typeof t=="object"){const i=document.createElement("dl");for(const[E,g]of Object.entries(t)){const c=document.createElement("dt");c.textContent=E,i.append(c);const u=document.createElement("dd");u.textContent=g,i.append(u)}this.tooltip.innerHTML="",this.tooltip.append(i),this.tooltip.classList.remove(T("disabled"))}else this.tooltip.textContent=t,this.tooltip.classList.remove(T("disabled"));else this.tooltip.classList.add(T("disabled"))})}}class _ extends d{get tagName(){return"form"}get className(){return T("settings")}initialize(e){this.set(e);const t=this.get("debugbar");this.settings=JSON.parse(localStorage.getItem("phpdebugbar-settings"))||{};for(const i in t.options)i in this.settings&&(t.options[i]=this.settings[i]),i==="theme"?t.setTheme(t.options[i]):t.el.setAttribute(`data-${i}`,t.options[i])}clearSettings(){const e=this.get("debugbar");if(localStorage.removeItem("phpdebugbar-settings"),localStorage.removeItem("phpdebugbar-ajaxhandler-autoshow"),this.settings={},e.options=et({},e.defaultOptions),e.ajaxHandler){const t=e.ajaxHandler.defaultAutoShow;e.ajaxHandler.setAutoShow(t),this.set("autoshow",t),e.controls.__datasets&&e.controls.__datasets.get("widget").set("autoshow",this.autoshow.checked)}this.initialize(e.options)}storeSetting(e,t){this.settings[e]=t;const i=this.get("debugbar");i.options[e]=t,e!=="theme"&&i.el.setAttribute(`data-${e}`,t),localStorage.setItem("phpdebugbar-settings",JSON.stringify(this.settings))}render(){this.el.innerHTML="";const e=this.get("debugbar"),t=this,i={},E=document.createElement("select");E.innerHTML='',E.value=e.options.theme,E.addEventListener("change",function(){t.storeSetting("theme",this.value),e.setTheme(this.value)}),i.Theme=E;const g=document.createElement("select");g.innerHTML='',g.value=e.options.openBtnPosition,g.addEventListener("change",function(){t.storeSetting("openBtnPosition",this.value),this.value==="topLeft"||this.value==="topRight"?t.storeSetting("toolbarPosition","top"):t.storeSetting("toolbarPosition","bottom"),t.get("debugbar").recomputeBottomOffset()}),i["Toolbar Position"]=g,this.hideEmptyTabs=document.createElement("input"),this.hideEmptyTabs.type="checkbox",this.hideEmptyTabs.checked=e.options.hideEmptyTabs,this.hideEmptyTabs.addEventListener("click",function(){t.storeSetting("hideEmptyTabs",this.checked),t.get("debugbar").respCSSSize=0,t.get("debugbar").resize()});const c=document.createElement("label");c.append(this.hideEmptyTabs,"Hide empty tabs until they have data"),i["Hide Empty Tabs"]=c;const u=document.createElement("input");u.type="checkbox",u.checked=e.options.showFullscreenBtn,u.addEventListener("click",function(){t.storeSetting("showFullscreenBtn",this.checked),e.toggleFullscreenBtn(this.checked)});const b=document.createElement("label");b.append(u,"Show fullscreen button in toolbar"),i.Fullscreen=b,this.autoshow=document.createElement("input"),this.autoshow.type="checkbox",this.autoshow.checked=e.ajaxHandler&&e.ajaxHandler.autoShow,this.autoshow.addEventListener("click",function(){e.ajaxHandler&&e.ajaxHandler.setAutoShow(this.checked),e.controls.__datasets&&e.controls.__datasets.get("widget").set("autoshow",this.checked),e.datasetSwitcherWidget&&e.datasetSwitcherWidget.set("autoshow",this.checked)}),this.bindAttr("autoshow",function(){this.autoshow.checked=this.get("autoshow");const m=this.autoshow.closest(`.${T("form-row")}`);m&&(m.style.display="")});const f=document.createElement("label");f.append(this.autoshow,"Automatically show new incoming Ajax requests"),i.Autoshow=f;const a=document.createElement("button");a.textContent="Reset settings",a.addEventListener("click",m=>{m.preventDefault(),t.clearSettings(),t.render()}),i["Reset to defaults"]=a;for(const[m,o]of Object.entries(i)){const y=document.createElement("div");y.classList.add(T("form-row"));const L=document.createElement("div");L.classList.add(T("form-label")),L.textContent=m,y.append(L);const R=document.createElement("div");R.classList.add(T("form-input")),o instanceof HTMLElement?R.append(o):R.innerHTML=o,y.append(R),t.el.append(y)}e.ajaxHandler||(this.autoshow.closest(`.${T("form-row")}`).style.display="none")}}class O{constructor(e){this.debugbar=e}format(e,t,i,E){if(i=i?` ${i}`:"",E=E||Object.keys(this.debugbar.datasets).length,t.__meta===void 0)return`#${E}${i}`;const g=t.__meta.uri.split("/");let c=g.pop();c||(c=`${g.pop()||""}/`),g.length&&!Number.isNaN(c)&&(c=`${g.pop()}/${c}`);const u=150;return c.length>u&&(c=`${c.substr(0,u)}...`),`#${E} ${c}${i} (${t.__meta.datetime.split(" ")[1]})`}}s.DatasetTitleFormater=O;class I extends d{get className(){return"phpdebugbar"}initialize(e={}){this.options=Object.assign({bodyBottomInset:!0,theme:"auto",toolbarPosition:"bottom",openBtnPosition:"bottomLeft",hideEmptyTabs:!1,showFullscreenBtn:!1,spaNavigationEvents:[]},e),this.defaultOptions=et({},this.options),this.controls={},this.dataMap={},this.datasets={},this.firstTabName=null,this.activePanelName=null,this.activeDatasetId=null,this.pendingDataSetId=null,this.datesetTitleFormater=new O(this);const t=window.getComputedStyle(document.body);this.bodyPaddingBottomHeight=Number.parseInt(t.paddingBottom),this.bodyPaddingTopHeight=Number.parseInt(t.paddingTop);try{this.isIframe=window.self!==window.top&&window.top.PhpDebugBar&&window.top.PhpDebugBar}catch(i){this.isIframe=!1}this.registerResizeHandler(),this.registerMediaListener(),this.registerNavigationListener(),this.settingsControl=new s.DebugBar.Tab({icon:"adjustments-horizontal",title:"Settings",widget:new _({debugbar:this})})}registerResizeHandler(){if(this.resize.bind===void 0||this.isIframe)return;const e=this.resize.bind(this);this.respCSSSize=0,window.addEventListener("resize",e),setTimeout(e,20)}registerMediaListener(){window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",t=>{this.options.theme==="auto"&&this.setTheme("auto")})}registerNavigationListener(){const e=this.options.spaNavigationEvents;if(!(!e||!e.length))for(const t of e)document.addEventListener(t,()=>{this.recalculateBodyPadding()})}recalculateBodyPadding(){if(!this.options.bodyBottomInset)return;document.body.style.paddingTop="",document.body.style.paddingBottom="";const e=window.getComputedStyle(document.body);this.bodyPaddingTopHeight=Number.parseFloat(e.paddingTop),this.bodyPaddingBottomHeight=Number.parseFloat(e.paddingBottom),this.recomputeBottomOffset()}setTheme(e){this.options.theme=e,e==="auto"&&(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),this.el.setAttribute("data-theme",e),this.openHandler&&this.openHandler.el.setAttribute("data-theme",e),this.datasetSwitcherWidget&&this.datasetSwitcherWidget.panel&&this.datasetSwitcherWidget.panel.setAttribute("data-theme",e)}resize(){if(this.isIframe)return;let e=this.respCSSSize;if(this.respCSSSize===0){const c=Array.from(this.header.children).filter(u=>u.offsetParent!==null);for(const u of c){const b=window.getComputedStyle(u);e+=u.offsetWidth+Number.parseFloat(b.marginLeft)+Number.parseFloat(b.marginRight)}}const t=this.header.offsetWidth,i=T("mini-design"),E=this.header.classList.contains(i);t<=e&&!E?(this.respCSSSize=e,this.header.classList.add(i)):e{e.close()}),this.headerLeft=document.createElement("div"),this.headerLeft.classList.add(T("header-left")),this.header.append(this.headerLeft),this.headerRight=document.createElement("div"),this.headerRight.classList.add(T("header-right")),this.header.append(this.headerRight),this.body=document.createElement("div"),this.body.classList.add(T("body")),this.el.append(this.body),this.recomputeBottomOffset(),this.resizeHandleBottom=document.createElement("div"),this.resizeHandleBottom.classList.add(T("resize-handle")),this.resizeHandleBottom.classList.add(T("resize-handle-bottom")),this.el.append(this.resizeHandleBottom);let t,i;const E=u=>{const b=i+(t-u.pageY);e.setHeight(b)},g=u=>{const b=i-(t-u.pageY);e.setHeight(b)},c=()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",c),e.dragCapture.style.display="none"};this.resizeHandle.addEventListener("mousedown",u=>{i=e.body.offsetHeight,t=u.pageY,document.addEventListener("mousemove",E),document.addEventListener("mouseup",c),e.dragCapture.style.display="",u.preventDefault()}),this.resizeHandleBottom.addEventListener("mousedown",u=>{i=e.body.offsetHeight,t=u.pageY,document.addEventListener("mousemove",g),document.addEventListener("mouseup",c),e.dragCapture.style.display="",u.preventDefault()}),this.closebtn=document.createElement("a"),this.closebtn.classList.add(T("close-btn")),this.headerRight.append(this.closebtn),this.closebtn.addEventListener("click",()=>{e.close()}),this.fullscreenbtn=document.createElement("a"),this.fullscreenbtn.classList.add(T("fullscreen-btn")),this.fullscreenbtn.hidden=!this.options.showFullscreenBtn,this.headerRight.append(this.fullscreenbtn),this.fullscreenbtn.addEventListener("click",()=>{e.toggleFullscreen()}),this.minimizebtn=document.createElement("a"),this.minimizebtn.classList.add(T("minimize-btn")),this.minimizebtn.hidden=!this.isMinimized(),this.headerRight.append(this.minimizebtn),this.minimizebtn.addEventListener("click",()=>{e.minimize()}),this.maximizebtn=document.createElement("a"),this.maximizebtn.classList.add(T("maximize-btn")),this.maximizebtn.hidden=this.isMinimized(),this.headerRight.append(this.maximizebtn),this.maximizebtn.addEventListener("click",()=>{e.restore()}),this.restorebtn=document.createElement("a"),this.restorebtn.classList.add(T("restore-btn")),this.restorebtn.hidden=!0,this.el.append(this.restorebtn),this.restorebtn.addEventListener("click",()=>{e.restore()}),this.summaryControl=new U({getSection:()=>e.getSummarySection(e.activePanelName),getAll:()=>e.getSummary()}),this.headerRight.append(this.summaryControl.el),this.openbtn=document.createElement("a"),this.openbtn.classList.add(T("open-btn")),this.openbtn.hidden=!0,this.headerRight.append(this.openbtn),this.openbtn.addEventListener("click",()=>{e.openHandler.show((u,b)=>{e.addDataSet(b,u,"(opened)")})}),this.datasetsSelectSpan=document.createElement("span"),this.datasetsSelectSpan.classList.add(T("datasets-switcher")),this.datasetsSelectSpan.setAttribute("name","datasets-switcher"),this.datasetsSelect=document.createElement("select"),this.datasetsSelect.hidden=!0,this.datasetsSelectSpan.append(this.datasetsSelect),this.headerRight.append(this.datasetsSelectSpan),this.datasetsSelect.addEventListener("change",function(){e.showDataSet(this.value)}),this.controls.__settings=this.settingsControl,this.settingsControl.tab.classList.add(T("tab-settings")),this.settingsControl.tab.setAttribute("data-collector","__settings"),this.settingsControl.el.setAttribute("data-collector","__settings"),this.settingsControl.el.hidden=!0,this.maximizebtn.after(this.settingsControl.tab),this.settingsControl.tab.hidden=!1,this.settingsControl.tab.addEventListener("click",()=>{!this.isMinimized()&&this.activePanelName==="__settings"&&!this.isFullscreen()?this.minimize():(this.showTab("__settings"),this.settingsControl.get("widget").render())}),this.body.append(this.settingsControl.el)}setHeight(e){if(this.isFullscreen())return;const t=40,i=window.innerHeight-this.header.offsetHeight-10;e=Math.min(e,i),e=Math.max(e,t),this.body.style.height=`${e}px`,localStorage.setItem("phpdebugbar-height",e),this.recomputeBottomOffset()}restoreState(){if(this.isIframe)return;const e=localStorage.getItem("phpdebugbar-height");this.setHeight(Number.parseInt(e)||this.body.offsetHeight);const t=localStorage.getItem("phpdebugbar-open");if(t&&t==="0")this.close();else{const i=localStorage.getItem("phpdebugbar-visible");if(i&&i==="1"){const E=localStorage.getItem("phpdebugbar-tab");this.isTab(E)?this.showTab(E):this.showTab()}else this.minimize()}this.options.showFullscreenBtn&&sessionStorage.getItem("phpdebugbar-fullscreen")==="1"&&this.toggleFullscreen()}createTab(e,t,i){const E=new P({title:i||e.replace(/[_-]/g," ").charAt(0).toUpperCase()+e.slice(1),widget:t});return this.addTab(e,E)}addTab(e,t){if(this.isControl(e))throw new Error(`${e} already exists`);const i=this;return this.headerLeft.append(t.tab),t.tab.addEventListener("click",()=>{!i.isMinimized()&&i.activePanelName===e&&!i.isFullscreen()?i.minimize():(i.restore(),i.showTab(e))}),t.tab.setAttribute("data-empty",!0),t.tab.setAttribute("data-collector",e),t.el.setAttribute("data-collector",e),this.body.append(t.el),this.controls[e]=t,this.firstTabName===null&&(this.firstTabName=e),t}createIndicator(e,t,i,E){const g=new B({icon:t,tooltip:i});return this.addIndicator(e,g,E)}addIndicator(e,t,i){if(this.isControl(e))throw new Error(`${e} already exists`);return t.set("debugbar",this),i==="left"?this.headerLeft.prepend(t.el):this.headerRight.append(t.el),this.controls[e]=t,t}getControl(e){if(this.isControl(e))return this.controls[e]}isControl(e){return this.controls[e]!==void 0}isTab(e){return this.isControl(e)&&this.controls[e]instanceof P}isIndicator(e){return this.isControl(e)&&this.controls[e]instanceof B}reset(){this.minimize();for(const[e,t]of Object.entries(this.controls))this.isTab(e)&&t.tab.remove(),t.el.remove();this.controls={}}showTab(e){var t;if(e||(this.activePanelName?e=this.activePanelName:e=this.firstTabName),!this.isTab(e))throw new Error(`Unknown tab '${e}'`);this.body.hidden=!1,this.recomputeBottomOffset();for(const[i,E]of Object.entries(this.controls))E instanceof P&&(i===e?E.show():E.hide());this.activePanelName=e,(t=this.summaryControl)!=null&&t.isOpen&&this.summaryControl.refresh(),this.el.classList.remove(T("minimized")),localStorage.setItem("phpdebugbar-visible","1"),localStorage.setItem("phpdebugbar-tab",e),this.maximize()}minimize(){this.exitFullscreen();const e=T("active"),t=this.header.querySelectorAll(`:scope > div > .${e}`);for(const i of t)i.classList.remove(e);this.body.hidden=!0,this.minimizebtn.hidden=!0,this.maximizebtn.hidden=!1,this.recomputeBottomOffset(),localStorage.setItem("phpdebugbar-visible","0"),this.el.classList.add(T("minimized")),this.resize()}maximize(){this.header.hidden=!1,this.restorebtn.hidden=!0,this.body.hidden=!1,this.minimizebtn.hidden=!1,this.maximizebtn.hidden=!0,this.recomputeBottomOffset(),localStorage.setItem("phpdebugbar-visible","1"),localStorage.setItem("phpdebugbar-open","1"),this.el.classList.remove(T("minimized")),this.el.classList.remove(T("closed")),this.resize()}isMinimized(){return this.el.classList.contains(T("minimized"))}toggleFullscreen(){this.isFullscreen()?this.exitFullscreen():(this._preFullscreenHeight=this.body.offsetHeight,this.el.classList.add(T("fullscreen")),this.body.style.height="",sessionStorage.setItem("phpdebugbar-fullscreen","1"),this.recomputeBottomOffset())}exitFullscreen(){this.isFullscreen()&&(this.el.classList.remove(T("fullscreen")),this._preFullscreenHeight&&(this.body.style.height=`${this._preFullscreenHeight}px`),sessionStorage.removeItem("phpdebugbar-fullscreen"),this.recomputeBottomOffset())}isFullscreen(){return this.el.classList.contains(T("fullscreen"))}toggleFullscreenBtn(e){this.fullscreenbtn.hidden=!e,e||this.exitFullscreen()}close(){this.exitFullscreen(),this.header.hidden=!0,this.body.hidden=!0,this.restorebtn.hidden=!1,localStorage.setItem("phpdebugbar-open","0"),this.el.classList.add(T("closed")),this.recomputeBottomOffset()}isClosed(){return this.el.classList.contains(T("closed"))}restore(){const e=localStorage.getItem("phpdebugbar-tab");this.pendingDataSetId&&(this.dataChangeHandler(this.datasets[this.pendingDataSetId]),this.pendingDataSetId=null),this.isTab(e)?this.showTab(e):this.showTab()}recomputeBottomOffset(){if(this.options.bodyBottomInset){if(this.isClosed()){document.body.style.paddingBottom=this.bodyPaddingBottomHeight?`${this.bodyPaddingBottomHeight}px`:"",document.body.style.paddingTop=this.bodyPaddingTopHeight?`${this.bodyPaddingTopHeight}px`:"";return}if(this.options.toolbarPosition==="top"){const e=this.el.offsetHeight+(this.bodyPaddingTopHeight||0);document.body.style.paddingTop=`${e}px`,document.body.style.paddingBottom=this.bodyPaddingBottomHeight?`${this.bodyPaddingBottomHeight}px`:""}else{const e=this.el.offsetHeight+(this.bodyPaddingBottomHeight||0);document.body.style.paddingBottom=`${e}px`,document.body.style.paddingTop=this.bodyPaddingTopHeight?`${this.bodyPaddingTopHeight}px`:""}}}setDataMap(e){this.dataMap=e}addDataMap(e){Object.assign(this.dataMap,e)}setData(e){return this.datasets={},this.addDataSet(e)}addDataSet(e,t,i,E){if(!e||!e.__meta)return;if(this.isIframe&&window.top.PhpDebugBar&&window.top.PhpDebugBar.instance){window.top.PhpDebugBar.instance.addDataSet(e,t,`(iframe)${i||""}`,E);return}const g=Object.keys(this.datasets).length+1;t=t||g,e.__meta.nb=g,e.__meta.suffix=i,this.datasets[t]=e;const c=this.datesetTitleFormater.format(t,this.datasets[t],i,g);if(this.datasetSwitcherWidget)this.datasetSwitcherWidget.set("data",this.datasets);else{const u=document.createElement("option");u.value=t,u.textContent=c,this.datasetsSelect.append(u),this.datasetsSelect.hidden=!1}return(E===void 0||E)&&this.showDataSet(t),this.resize(),t}loadDataSet(e,t,i,E){if(!this.openHandler)throw new Error("loadDataSet() needs an open handler");const g=this;this.openHandler.load(e,c=>{g.addDataSet(c,e,t,E),g.resize(),i&&i(c)})}getDataSet(e){return this.datasets[e]}showDataSet(e){this.activeDatasetId=e,this.isClosed()?this.pendingDataSetId=e:(this.dataChangeHandler(this.datasets[e]),this.pendingDataSetId=null),this.datasetSwitcherWidget?this.datasetSwitcherWidget.set("activeId",e):this.datasetsSelect.value=e}dataChangeHandler(e){for(const[t,i]of Object.entries(this.dataMap)){const E=H(e,i[0],i[1]);if(t.includes(":")){const g=t.split(":");this.getControl(g[0]).set(g[1],E)}else this.getControl(t).set("data",E)}this.summaryControl&&(this.summaryControl.setAvailable(this.getSummary()!==""),this.summaryControl.isOpen&&this.summaryControl.refresh()),this.isMinimized()||this.showTab(),this.resize()}getSummarySection(e,t){const i=e?this.getControl(e):void 0;let E=(i==null?void 0:i.summaryText)||"";if(!E){const g=this.dataMap[`${e}:summary`],c=this.datasets[t!=null?t:this.activeDatasetId];E=g?h(H(c,g[0],null)):""}return E.trim()?{name:e,title:(i==null?void 0:i.get("title"))||k(e),text:E}:null}getSummarySections(e){if(!this.datasets[e!=null?e:this.activeDatasetId])return[];const t=":summary",i=Object.keys(this.dataMap).filter(E=>E.endsWith(t)).map(E=>E.slice(0,-t.length));for(const[E,g]of Object.entries(this.controls))g.summaryText&&!i.includes(E)&&i.push(E);return i.map(E=>this.getSummarySection(E,e)).filter(Boolean)}getSummary(e){const t=this.getSummarySections(e);if(!t.length)return"";const i=["# PHP DebugBar summary"],E=this.datasets[e!=null?e:this.activeDatasetId].__meta||{},g={};for(const c of["id","datetime","method"])E[c]&&(g[c]=E[c]);Object.keys(g).length&&i.push(S(g));for(const c of t)i.push(`## ${c.title} +${c.text}`);return i.join(` + +`)}setOpenHandler(e){this.openHandler=e,this.openHandler.el.setAttribute("data-theme",this.el.getAttribute("data-theme")),this.openbtn.hidden=e==null}getOpenHandler(){return this.openHandler}enableAjaxHandlerTab(){this.datasetsSelectSpan&&(this.datasetsSelectSpan.hidden=!0),this.datasetSwitcherWidget=new s.Widgets.DatasetWidget({debugbar:this}),this.openbtn.after(this.datasetSwitcherWidget.el)}}s.DebugBar=I,I.Tab=P,I.Indicator=B;class G{constructor(e,t,i){this.debugbar=e,this.headerName=t||"phpdebugbar",this.captureStreamed=!1,this.streamedContentTypes=["text/event-stream"],this.autoShow=i===void 0?!0:i,this.defaultAutoShow=this.autoShow,localStorage.getItem("phpdebugbar-ajaxhandler-autoshow")!==null&&(this.autoShow=localStorage.getItem("phpdebugbar-ajaxhandler-autoshow")==="1"),e.controls.__settings&&e.controls.__settings.get("widget").set("autoshow",this.autoShow)}handle(e,t){const i=this.getHeader(e,`${this.headerName}-stack`);return i&&JSON.parse(i).forEach(g=>{this.debugbar.loadDataSet(g," (stacked)",null,!1)}),this.loadFromId(e)||this.loadFromData(e)?!0:t&&this.debugbar.openHandler&&this.isStreamedResponse(e)?(this.loadFromRequestId(t),!0):!1}isStreamedResponse(e){const t=this.streamedContentTypes;if(!t||!t.length)return!0;const i=(this.getHeader(e,"content-type")||"").split(";")[0].trim().toLowerCase();return t.some(E=>E.trim().toLowerCase()===i)}sameOrigin(e){try{return new URL(e,location.href).origin===location.origin}catch(t){return!1}}canInjectRequestId(e){const t=this.debugbar.openHandler;if(t&&typeof t.get=="function")try{const i=t.get("url");if(i&&new URL(e,location.href).pathname===new URL(i,location.href).pathname)return!1}catch(i){}return!0}newRequestId(){return globalThis.crypto&&typeof globalThis.crypto.randomUUID=="function"&&globalThis.crypto.randomUUID()||String(Date.now())+Math.random().toString(16).slice(2)}loadFromRequestId(e,t=5){this.debugbar.openHandler.find({rid:e},0,i=>{const E=Array.isArray(i)?i.find(g=>g&&g.rid===e&&g.id):null;E?this.debugbar.loadDataSet(E.id,"(ajax)",void 0,this.autoShow):t>0&&setTimeout(()=>this.loadFromRequestId(e,t-1),150)})}getHeader(e,t){return e instanceof Response?e.headers.get(t):e instanceof XMLHttpRequest?e.getResponseHeader(t):null}setAutoShow(e){this.autoShow=e,localStorage.setItem("phpdebugbar-ajaxhandler-autoshow",e?"1":"0")}loadFromId(e){const t=this.extractIdFromHeaders(e);return t&&this.debugbar.openHandler?(this.debugbar.loadDataSet(t,"(ajax)",void 0,this.autoShow),!0):!1}extractIdFromHeaders(e){return this.getHeader(e,`${this.headerName}-id`)}loadFromData(e){const t=this.extractDataFromHeaders(e);if(!t)return!1;const i=this.parseHeaders(t);if(i.error)throw new Error(`Error loading debugbar data: ${i.error}`);return i.data&&this.debugbar.addDataSet(i.data,i.id,"(ajax)",this.autoShow),!0}extractDataFromHeaders(e){let t=this.getHeader(e,this.headerName);if(t){for(let i=1;;i++){const E=this.getHeader(e,`${this.headerName}-${i}`);if(!E)break;t+=E}return decodeURIComponent(t)}}parseHeaders(e){return JSON.parse(e)}bindToFetch(){const e=this,t=window.fetch.__debugbar_original||window.fetch,i=t.bind(window);function E(g,c){var a;let u=null;const b=g instanceof Request?g.url:g;if(e.captureStreamed&&e.sameOrigin(b)&&e.canInjectRequestId(b)){u=e.newRequestId();const m=`${e.headerName}-request-id`;if(g instanceof Request){c=et({},c||{});const o=new Headers(g.headers);new Headers(c.headers||{}).forEach((y,L)=>o.set(L,y)),o.set(m,u),g=new Request(g,Ht(et({},c),{headers:o})),c=void 0}else{c=et({},c||{});const o=new Headers(c.headers||{});o.set(m,u),c.headers=o}}const f=i(g,c);return(a=f==null?void 0:f.then)==null||a.call(f,m=>e.handle(m,u)).catch(()=>{}),f}E.__debugbar_wrapped=!0,E.__debugbar_original=t,window.fetch=E}bindToXHR(){const e=this,t=XMLHttpRequest.prototype,i=(t.open||{}).__debugbar_original||t.open;if(typeof i!="function")return;function E(g,c,u=!0,b=null,f=null){this.__debugbar_listener_attached||(this.__debugbar_listener_attached=!0,this.addEventListener("readystatechange",()=>{this.readyState===4&&e.handle(this,this.__debugbar_rid)}));const a=i.call(this,g,c,u,b,f);if(e.captureStreamed&&e.sameOrigin(c)&&e.canInjectRequestId(c)){this.__debugbar_rid=e.newRequestId();try{this.setRequestHeader(`${e.headerName}-request-id`,this.__debugbar_rid)}catch(m){}}return a}E.__debugbar_wrapped=!0,E.__debugbar_original=i,t.open=E}}s.AjaxHandler=G})();(function(){PhpDebugBar.Widgets={};const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-"),H=PhpDebugBar.Widgets.htmlize=function(g){return g.replace(/\n/g,"
").replace(/\s/g," ")};let T;const S=PhpDebugBar.Widgets.renderValue=function(g,c){return g&&typeof g=="object"?(T||(T=new PhpDebugBar.Widgets.VarDumpRenderer),T.render(g)):typeof g!="string"?c?H(JSON.stringify(g,void 0,2)):JSON.stringify(g):g};PhpDebugBar.Widgets.renderValueInto=function(g,c,u){const b=S(c,u);b instanceof Node?g.append(b):g.insertAdjacentHTML("beforeend",b)};const h=PhpDebugBar.Widgets.editorLink=function(g){const c=document.createElement("span"),u=g.line?`#${g.line}`:"";if(c.classList.add(s("filename")),c.textContent=g.filename+u,g.path&&(c.setAttribute("title",g.path+u),c.addEventListener("click",b=>{if(b.stopPropagation(),b.preventDefault(),window.getSelection().type==="Range")return"";k(g.path).then(f=>{if(!f)return;const a=document.createElement("a");a.classList.add(s("copy-clipboard-check")),c.prepend(a),setTimeout(()=>{c.removeChild(a)},2e3)})})),g.url){const b=document.createElement("a");b.classList.add(s("editor-link")),b.setAttribute(b.ajax?"title":"href",g.url),b.addEventListener("click",f=>{f.stopPropagation(),g.ajax&&(fetch(stmt.xdebug_link.url),f.preventDefault())}),c.append(b)}return c},k=PhpDebugBar.Widgets.copyToClipboard=function(g){return Wt(this,null,function*(){const c=g instanceof Element?g.innerText:g;if(navigator.clipboard&&window.isSecureContext)try{return yield navigator.clipboard.writeText(c),!0}catch(f){}let u=!1;const b=document.createElement("textarea");b.value=c,b.style.position="fixed",b.style.left="-9999px",b.style.top="-9999px",document.body.appendChild(b);try{b.focus(),b.select(),b.setSelectionRange(0,99999),u=document.execCommand("copy")}catch(f){}return document.body.removeChild(b),u})},d=PhpDebugBar.Widgets.highlight=function(g,c){if(typeof phpdebugbar_hljs=="undefined")return H(g);const u=phpdebugbar_hljs;return c&&u.getLanguage(c)?u.highlight(g,{language:c}).value:u.highlightAuto(g).value},U=PhpDebugBar.Widgets.createCodeBlock=function(g,c,u,b){const f=document.createElement("pre");f.classList.add(s("code-block"));const a=document.createElement("code");if(a.innerHTML=d(`${g} +`,c),f.append(a),!Number.isNaN(Number.parseFloat(u))){const m=g.split(` +`).length,o=document.createElement("ul");f.prepend(o);const y=Array.from(f.children);for(const L of y)L.classList.add(s("numbered-code"));for(let L=u;L100&&(m=`${m.substr(0,100)}...`);let o=null;u.textContent=m,u.addEventListener("click",()=>{if(window.getSelection().type==="Range")return"";u.classList.contains(s("pretty"))?(u.textContent=m,u.classList.remove(s("pretty"))):(o=o||U(f),u.classList.add(s("pretty")),u.innerHTML="",u.append(o))})}}PhpDebugBar.Widgets.VariableListWidget=O;class I extends _{get className(){return s("kvlist htmlvarlist")}itemRenderer(c,u,b,f){const a=document.createElement("i");a.innerHTML=b!=null?b:"";const m=document.createElement("span");m.setAttribute("title",a.textContent),m.innerHTML=b!=null?b:"",c.append(m),u.innerHTML=f&&f.value||f,f!=null&&f.xdebug_link&&u.append(h(f.xdebug_link))}}PhpDebugBar.Widgets.HtmlVariableListWidget=I;class G extends PhpDebugBar.Widget{get tagName(){return"div"}get className(){return s("tablevarlist")}render(){this.bindAttr("data",function(c){var L,R,r;if(this.el.innerHTML="",!this.has("data"))return;this.table=document.createElement("table"),this.table.classList.add(s("tablevar")),this.el.append(this.table);const u=document.createElement("tr");u.classList.add(s("header"));const b=document.createElement("td");u.append(b),this.table.append(u);let f=c.key_map||{value:"Value"};Array.isArray(f)&&(f=Object.fromEntries(f.map(C=>[C,null])));for(const[C,W]of Object.entries(f)){const N=document.createElement("td");if(N.textContent=W!=null?W:C,u.append(N),c.badges&&c.badges[C]){const l=document.createElement("span");l.textContent=c.badges[C],l.classList.add(s("badge")),N.append(l)}}const a=this;if(!c.data)return;let m=!1;for(const[C,W]of Object.entries(c.data)){const N=document.createElement("tr");N.classList.add(s("item")),a.table.append(N);const l=document.createElement("td");if(l.classList.add(s("key")),l.textContent=C,N.append(l),typeof W!="object"||W===null){const p=document.createElement("td");p.classList.add(s("value")),p.textContent=W!=null?W:"",N.append(p);continue}for(const p of Object.keys(f)){const v=document.createElement("td");v.classList.add(s("value")),v.textContent=(L=W[p])!=null?L:"",N.append(v)}if(W.xdebug_link){const p=document.createElement("td");p.classList.add(s("editor")),p.append(h(W.xdebug_link)),N.append(p),m||(m=!0,u.append(document.createElement("td")))}}if(!c.summary)return;const o=document.createElement("tr");o.classList.add(s("summary")),a.table.append(o);const y=document.createElement("td");if(y.classList.add(s("key")),o.append(y),typeof c.summary!="object"||c.summary===null){const C=document.createElement("td");C.classList.add(s("value")),C.textContent=(R=c.summary)!=null?R:"",o.append(C)}else for(const C of Object.keys(f)){const W=document.createElement("td");W.classList.add(s("value")),W.textContent=(r=c.summary[C])!=null?r:"",o.append(W)}m&&o.append(document.createElement("td"))})}}PhpDebugBar.Widgets.TableVariableListWidget=G;class w extends PhpDebugBar.Widget{get tagName(){return"iframe"}get className(){return s("iframe")}render(){this.el.setAttribute("seamless","seamless"),this.el.setAttribute("border","0"),this.el.setAttribute("width","100%"),this.el.setAttribute("height","100%"),this.bindAttr("data",function(c){this.el.setAttribute("src",c)})}}PhpDebugBar.Widgets.IFrameWidget=w;class e extends PhpDebugBar.Widget{get className(){return s("messages")}render(){const c=this;this.list=new B({itemRenderer(b,f){let a;if(f.message_json)a=document.createElement("span"),a.classList.add(s("value")),PhpDebugBar.Widgets.renderValueInto(a,f.message_json),b.append(a);else if(f.message_html)a=document.createElement("span"),a.classList.add(s("value")),a.innerHTML=f.message_html,b.append(a);else{const m=f.message;if(a=document.createElement("span"),a.classList.add(s("value")),a.textContent=m,a.classList.add(s("truncated")),b.append(a),!f.is_string||a.scrollWidth>a.clientWidth){let o=f.message;f.is_string||(o=null),b.style.cursor="pointer",b.addEventListener("click",()=>{if(window.getSelection().type==="Range")return"";a.classList.contains(s("pretty"))?(a.textContent=m,a.classList.remove(s("pretty")),a.classList.add(s("truncated"))):(o=o||U(f.message),a.classList.add(s("pretty")),a.classList.remove(s("truncated")),a.innerHTML="",a.append(o))})}}if(f.collector){const m=document.createElement("span");m.classList.add(s("collector")),m.textContent=f.collector,b.prepend(m)}if(f.label){a.classList.add(s(f.label));const m=document.createElement("span");m.classList.add(s("label")),m.textContent=f.label,b.prepend(m)}if(f.context&&Object.keys(f.context).length>0){const m=document.createElement("span");m.setAttribute("title","Context"),m.classList.add(s("context-count")),m.textContent=Object.keys(f.context).length,b.prepend(m);const o=document.createElement("table");o.classList.add(s("params")),o.hidden=!0,o.innerHTML='Context';const y=f.context_json||{};for(const L in f.context)if(typeof f.context[L]!="function"){const R=document.createElement("tr"),r=document.createElement("td");r.classList.add(s("name")),r.textContent=L,R.append(r);const C=document.createElement("td");C.classList.add(s("value")),y[L]?PhpDebugBar.Widgets.renderValueInto(C,y[L]):C.innerHTML=f.context[L],R.append(C),o.append(R)}b.append(o),b.style.cursor="pointer",b.addEventListener("click",L=>{window.getSelection().type==="Range"||L.target.closest(".sf-dump")||(o.hidden=!o.hidden)})}f.xdebug_link&&b.prepend(h(f.xdebug_link))}}),this.el.append(this.list.el),this.toolbar=document.createElement("div"),this.toolbar.classList.add(s("toolbar")),this.toolbar.innerHTML='',this.el.append(this.toolbar);const u=document.createElement("input");u.type="text",u.name="search",u.setAttribute("aria-label","Search"),u.placeholder="Search",u.addEventListener("change",function(){c.set("search",this.value)}),this.toolbar.append(u),this.bindAttr("data",function(b){this.set({excludelabel:[],excludecollector:[],search:""});const f=this.toolbar.querySelectorAll(`.${s("filter")}`);for(const R of f)R.remove();const a=[],m=[],o=this,y=function(R,r){const C=document.createElement("a");C.classList.add(s("filter")),C.classList.add(s(R)),C.textContent=r,C.setAttribute("rel",r),C.addEventListener("click",function(){o.onFilterClick(this,R)}),o.toolbar.append(C)};if(b.forEach(R=>{a.includes(R.label||"none")||a.push(R.label||"none"),m.includes(R.collector||"none")||m.push(R.collector||"none")}),a.length>1&&a.forEach(R=>y("label",R)),m.length===1)return;const L=document.createElement("a");L.classList.add(s("filter")),L.style.visibility="hidden",o.toolbar.append(L),m.forEach(R=>y("collector",R))}),this.bindAttr(["excludelabel","excludecollector","search"],function(){const b=this.get("excludelabel")||[],f=this.get("excludecollector")||[],a=this.get("search");let m=!1;const o=[];a&&a===a.toLowerCase()&&(m=!0),this.get("data").forEach(y=>{let L=y.message;y.message_json?L=JSON.stringify(y.message_json):y.message_html&&(L=y.message_html.replace(/<[^>]*>/g,"")),m&&(L=L.toLowerCase()),!b.includes(y.label||void 0)&&!f.includes(y.collector||void 0)&&(!a||L.includes(a))&&o.push(y)}),this.list.set("data",o)})}onFilterClick(c,u){c.classList.toggle(s("excluded"));const b=[],f=`.${s("filter")}.${s("excluded")}.${s(u)}`,a=this.toolbar.querySelectorAll(f);for(const m of a)b.push(m.rel==="none"||!m.rel?void 0:m.rel);this.set(`exclude${u}`,b)}}PhpDebugBar.Widgets.MessagesWidget=e;class t extends PhpDebugBar.Widget{get tagName(){return"ul"}get className(){return s("timeline")}render(){this.bindAttr("data",function(c){const u=function(f){return f<.001?`${(f*1e6).toFixed()}\u03BCs`:f<.1?`${(f*1e3).toFixed(2)}ms`:f<1?`${(f*1e3).toFixed()}ms`:`${f.toFixed(2)}s`},b=function(a){if(a===0||a===null)return"0B";const m=a<0?"-":"",o=Math.abs(a),y=Math.log(o)/Math.log(1024),L=["B","KB","MB","GB","TB"];return m+Math.round(Ut(1024,y-Math.floor(y))*100)/100+L[Math.floor(y)]};if(this.el.innerHTML="",c.measures){let f={};for(let o=0;o1?R.length+"x ":"")+y.label.replace(/\s+/g," ")+(y.duration?` (${y.duration_str}${y.memory?`/${y.memory_str}`:""})`:""),r.append(W),y.collector){const N=document.createElement("span");N.classList.add(s("collector")),N.textContent=y.collector,r.append(N)}if(C.append(r),this.el.append(C),y.params&&Object.keys(y.params).length>0){const N=document.createElement("table");N.classList.add(s("params")),N.hidden=!0,N.innerHTML='Params';for(const l in y.params)if(typeof y.params[l]!="function"){const p=document.createElement("tr"),v=document.createElement("td");v.className=s("name"),v.textContent=l,p.append(v);const X=document.createElement("td");X.className=s("value"),PhpDebugBar.Widgets.renderValueInto(X,y.params[l]),p.append(X),N.append(p)}C.append(N),C.style.cursor="pointer",C.addEventListener("click",function(l){if(window.getSelection().type==="Range"||l.target.closest(".sf-dump"))return"";const p=this.querySelector("table");p.hidden=!p.hidden})}}f=Object.entries(f).map(([o,y])=>({label:o,data:y})).sort((o,y)=>y.data.duration-o.data.duration);const a=document.createElement("table");a.classList.add(s("params"));for(const o of f){const y=Math.min((o.data.duration*100/c.duration).toFixed(2),100),L=document.createElement("i");L.textContent=o.label.replace(/\s+/g," ");const R=L.innerHTML,r=document.createElement("tr");r.innerHTML=`${o.data.count} x ${R} (${y}%)
${u(o.data.duration)}${o.data.memory?`/${b(o.data.memory)}`:""}
`,a.append(r);const C=r.querySelector(`span.${s("value")}`);C.style.width=`${y}%`}const m=document.createElement("li");m.append(a),this.el.append(m)}})}}PhpDebugBar.Widgets.TimelineWidget=t;class i extends PhpDebugBar.Widget{get className(){return s("exceptions")}render(){this.list=new B({itemRenderer(c,u){const b=document.createElement("span");if(b.classList.add(s("message")),b.textContent=u.message,u.count>1){const f=document.createElement("span");f.classList.add(s("badge")),f.textContent=`${u.count}x`,b.prepend(f)}if(c.append(b),u.file&&c.append(h(u.xdebug_link||{filename:u.file,line:u.line})),u.type){const f=document.createElement("span");f.classList.add(s("type")),f.textContent=u.type,c.append(f)}if(u.surrounding_lines){const f=u.line-3<=0?1:u.line-3,a=U(u.surrounding_lines.join(""),"php",f,u.line);a.classList.add(s("file")),a.hidden=!0,c.append(a),c.addEventListener("click",m=>{window.getSelection().type==="Range"||m.target.closest(".sf-dump")||(a.hidden=!a.hidden)})}if(u.stack_trace_json||u.stack_trace_html){const f=document.createElement("span");if(f.classList.add(s("filename")),u.stack_trace_json){const m=u.stack_trace_json,o=m._sd;m._sd=0,PhpDebugBar.Widgets.renderValueInto(f,m),m._sd=o}else f.innerHTML=u.stack_trace_html;const a=f.querySelector(".sf-dump-note");a&&(a.innerHTML=`${a.innerHTML.replace(/^array:/,'Stack Trace: ')} lines`),c.append(f)}else u.stack_trace&&u.stack_trace.split(` +`).forEach(f=>{const a=document.createElement("div"),m=document.createElement("span");m.classList.add(s("filename")),m.textContent=f,a.append(m),c.append(a)})}}),this.el.append(this.list.el),this.bindAttr("data",function(c){if(this.list.set("data",c),c.length===1){const u=this.list.el.children[0];if(u){const b=u.querySelector(`.${s("file")}`);b&&(b.hidden=!1)}}})}}PhpDebugBar.Widgets.ExceptionsWidget=i;class E extends PhpDebugBar.Widget{get className(){return s("datasets-switcher-widget")}initialize(c){this.set(c);const u=this,b=this.get("debugbar");this.badge=document.createElement("div"),this.badge.classList.add(s("datasets-badge")),this.badge.hidden=!0,this.badgeCount=document.createElement("span"),this.badgeCount.classList.add(s("datasets-badge-count")),this.badge.append(this.badgeCount),this.badgeUrl=document.createElement("span"),this.badgeUrl.classList.add(s("datasets-badge-url")),this.badge.append(this.badgeUrl),this.panel=document.createElement("div"),this.panel.classList.add(s("datasets-panel")),this.panel.hidden=!0,b.el&&this.panel.setAttribute("data-theme",b.el.getAttribute("data-theme"));const f=document.createElement("div");f.classList.add(s("datasets-panel-toolbar"));const a=document.createElement("label");a.classList.add(s("datasets-autoshow")),this.autoshowCheckbox=document.createElement("input"),this.autoshowCheckbox.type="checkbox";const m=localStorage.getItem("phpdebugbar-ajaxhandler-autoshow");this.autoshowCheckbox.checked=m!==null?m==="1":b.ajaxHandler?b.ajaxHandler.autoShow:!0,this.autoshowCheckbox.addEventListener("change",function(){b.ajaxHandler&&b.ajaxHandler.setAutoShow(this.checked),b.controls.__settings&&b.controls.__settings.get("widget").set("autoshow",this.checked),b.controls.__datasets&&b.controls.__datasets.get("widget").set("autoshow",this.checked)}),a.append(this.autoshowCheckbox),a.append(document.createTextNode(" Autoshow")),f.append(a),this.refreshBtn=document.createElement("a"),this.refreshBtn.tabIndex=0,this.refreshBtn.classList.add(s("datasets-refresh-btn")),this.refreshBtn.innerHTML='',this.refreshBtn.title="Auto-scan for new datasets",this.isScanning=!1,this.refreshBtn.addEventListener("click",L=>{L.stopPropagation(),this.isScanning?(this.isScanning=!1,this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Auto-scan for new datasets"):(this.isScanning=!0,this.refreshBtn.classList.add(s("active")),this.refreshBtn.title="Stop auto-scanning",this.scanForNewDatasets())}),f.append(this.refreshBtn);const o=document.createElement("a");o.tabIndex=0,o.classList.add(s("datasets-clear-btn")),o.textContent="Clear",o.addEventListener("click",()=>{const L=b.activeDatasetId,R=b.datasets[L];b.datasets={},R&&b.addDataSet(R,L,R.__meta.suffix,!0),this.panel.hidden=!0}),f.append(o),this.searchInput=document.createElement("input"),this.searchInput.type="search",this.searchInput.placeholder="Search",this.searchInput.classList.add(s("datasets-search")),this.searchInput.addEventListener("input",()=>{u.applySearchFilter()}),f.append(this.searchInput),this.panel.append(f),this.list=document.createElement("div"),this.list.classList.add(s("datasets-list")),this.panel.append(this.list),this.el.append(this.badge),document.body.append(this.panel);const y=()=>{const L=this.badge.getBoundingClientRect(),R=L.top,r=window.innerHeight-L.bottom,C=r>R;this.panel.style.position="fixed",this.panel.style.right=`${window.innerWidth-L.right}px`,this.panel.style.left="auto",C?(this.panel.style.top=`${L.bottom}px`,this.panel.style.bottom="auto",this.panel.style.maxHeight=`${r}px`):(this.panel.style.bottom=`${window.innerHeight-L.top}px`,this.panel.style.top="auto",this.panel.style.maxHeight=`${R}px`),this.refreshBtn.hidden=!b.openHandler};this.badge.addEventListener("click",L=>{L.target!==this.panel&&!this.panel.contains(L.target)&&(this.panel.hidden&&y(),this.panel.hidden=!this.panel.hidden)}),document.addEventListener("click",L=>{!this.badge.contains(L.target)&&!this.panel.contains(L.target)&&(this.panel.hidden=!0)})}render(){this.bindAttr("data",function(){this.updateBadge()}),this.bindAttr("activeId",function(){this.updateBadge()}),this.bindAttr("autoshow",function(){this.autoshowCheckbox&&(this.autoshowCheckbox.checked=this.get("autoshow"))})}updateBadge(){const c=this.get("debugbar"),u=this.get("data")||c.datasets,b=this.get("activeId")||c.activeDatasetId;if(!u){this.badge.hidden=!0;return}const f=Object.keys(u).length;if(f>=1){this.badge.hidden=!1;const a=u[b];if(a&&a.__meta){const o=a.__meta.uri||"",y=a.__meta.method||"GET";this.badgeUrl.textContent=`${y} ${o}`}f>1?(this.badgeCount.textContent=f,this.badgeCount.hidden=!1):this.badgeCount.hidden=!0,this.list.innerHTML="";const m=Object.keys(u).sort((o,y)=>{var r,C;const L=((r=u[o].__meta)==null?void 0:r.utime)||0;return(((C=u[y].__meta)==null?void 0:C.utime)||0)-L});for(const o of m){const y=u[o],L=document.createElement("div");L.classList.add(s("datasets-list-item"));const R=y.__meta.uri||"",r=y.__meta.method||"GET";L.setAttribute("data-url",R),L.setAttribute("data-method",r),o===b&&L.classList.add(s("active"));const C=document.createElement("span");C.classList.add(s("datasets-item-nb")),C.textContent=`#${y.__meta.nb}`,L.append(C);const W=document.createElement("span");W.classList.add(s("datasets-item-time")),W.textContent=y.__meta.datetime?y.__meta.datetime.split(" ")[1]:"",L.append(W);const N=document.createElement("div");N.classList.add(s("datasets-item-request"));const l=document.createElement("span");l.classList.add(s("datasets-item-method")),l.textContent=r,N.append(l);const p=document.createElement("span");if(p.classList.add(s("datasets-item-url")),p.textContent=R,N.append(p),y.__meta.suffix){const A=document.createElement("span");A.classList.add(s("datasets-item-suffix")),A.textContent=` ${y.__meta.suffix}`,N.append(A)}L.append(N);const v=document.createElement("div");v.classList.add(s("datasets-item-badges"));for(const[A,M]of Object.entries(c.dataMap)){const q=P(y,M[0],M[1]);if(A.includes(":")){const ee=A.split(":"),ne=ee[0];if(ee[1]==="badge"&&q>0){const ae=c.getControl(ne);if(ae){const se=document.createElement("span");if(se.classList.add(s("datasets-item-badge")),se.setAttribute("title",ae.get("title")),se.dataset.tab=ne,ae.icon){const ce=ae.icon.cloneNode(!0);ce.style.width="12px",ce.style.height="12px",se.append(ce)}const ge=document.createElement("span");ge.textContent=q,se.append(ge),v.append(se),se.addEventListener("click",ce=>{ce.stopPropagation(),c.showDataSet(o),c.showTab(ne),this.panel.hidden=!0})}}}}L.append(v);const X=document.createElement("a");X.classList.add(s("datasets-item-copy-id")),X.title=`Copy Request ID: ${o}`,X.innerHTML='',X.addEventListener("click",A=>{A.stopPropagation();const M=document.createElement("textarea");M.value=o,M.style.position="fixed",M.style.opacity="0",document.body.append(M),M.select(),document.execCommand("copy"),M.remove();const q=X.querySelector("i");q.className="phpdebugbar-icon phpdebugbar-icon-circle-check",X.classList.add(s("copied")),setTimeout(()=>{q.className="phpdebugbar-icon phpdebugbar-icon-copy",X.classList.remove(s("copied"))},2e3)}),L.append(X),L.addEventListener("click",()=>{c.showDataSet(o),this.panel.hidden=!0}),this.list.append(L)}this.applySearchFilter()}else this.badge.hidden=!0}applySearchFilter(){const c=this.searchInput.value.toLowerCase().trim(),u=this.list.querySelectorAll(`.${s("datasets-list-item")}`);for(const b of u)if(c==="")b.hidden=!1;else{const f=b.getAttribute("data-url").toLowerCase(),m=`${b.getAttribute("data-method").toLowerCase()} ${f}`,y=c.split(/\s+/).filter(L=>L.length>0).every(L=>m.includes(L));b.hidden=!y}}scanForNewDatasets(){const c=this.get("debugbar");if(!this.isScanning||!c.openHandler)return;const u=c.datasets,b=Object.values(u).reduce((a,m)=>{var o;return Math.max(a,((o=m.__meta)==null?void 0:o.utime)||0)},0),f=()=>{this.isScanning&&setTimeout(()=>this.scanForNewDatasets(),1e3)};c.openHandler.find({utime:b},0,(a,m)=>{if(m){console.error("scanForNewDatasets: find() failed",m),this.isScanning=!1,this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Error scanning";return}try{const o=a.filter(L=>L.utime>b&&!u[L.id]);o.reverse();const y=(L=0)=>{if(L>=o.length){f();return}const{id:R}=o[L],r=L===o.length-1;c.loadDataSet(R,"(scan)",()=>y(L+1),this.autoshowCheckbox.checked&&r)};o.length?y():f()}catch(o){console.error("scanForNewDatasets: unexpected error",o),this.refreshBtn.classList.remove(s("active")),this.refreshBtn.title="Error scanning",this.isScanning=!1}})}}PhpDebugBar.Widgets.DatasetWidget=E})();(function(){const s=function(H){return PhpDebugBar.utils.csscls(H,"phpdebugbar-openhandler-")};PhpDebugBar.OpenHandler=PhpDebugBar.Widget.extend({className:"phpdebugbar-openhandler",defaults:{items_per_page:20},render(){const H=this;document.body.append(this.el),this.el.style.display="none",this.closebtn=document.createElement("a"),this.closebtn.classList.add(s("closebtn")),this.closebtn.innerHTML='',this.brand=document.createElement("span"),this.brand.classList.add(s("brand")),this.brand.innerHTML='',this.table=document.createElement("tbody");const T=document.createElement("div");T.classList.add(s("header")),T.textContent="PHP DebugBar | Open",T.prepend(this.brand),T.append(this.closebtn),this.el.append(T);const S=document.createElement("table");S.innerHTML='IDDateMethodURLIPFilter data',S.append(this.table),this.el.append(S),this.actions=document.createElement("div"),this.actions.classList.add(s("actions")),this.el.append(this.actions),this.closebtn.addEventListener("click",()=>{H.hide()}),this.loadmorebtn=document.createElement("a"),this.loadmorebtn.textContent="Load more",this.actions.append(this.loadmorebtn),this.loadmorebtn.addEventListener("click",()=>{H.find(H.last_find_request,H.last_find_request.offset+H.get("items_per_page"),H.handleFind.bind(H))}),this.showonlycurrentbtn=document.createElement("a"),this.showonlycurrentbtn.textContent="Show only current URL",this.actions.append(this.showonlycurrentbtn),this.showonlycurrentbtn.addEventListener("click",()=>{H.uriInput.value=window.location.pathname,H.searchBtn.click()}),this.refreshbtn=document.createElement("a"),this.refreshbtn.textContent="Refresh",this.actions.append(this.refreshbtn),this.refreshbtn.addEventListener("click",()=>{H.refresh()}),this.clearbtn=document.createElement("a"),this.clearbtn.textContent="Clear storage",this.actions.append(this.clearbtn),this.clearbtn.addEventListener("click",()=>{H.clear(()=>{H.hide()})}),this.addSearch(),this.overlay=document.createElement("div"),this.overlay.classList.add(s("overlay")),this.overlay.style.display="none",document.body.append(this.overlay),this.overlay.addEventListener("click",()=>{H.hide()})},refresh(){this.table.innerHTML="",this.loadmorebtn.style.display="",this.find({},0,this.handleFind.bind(this))},addSearch(){const H=this,T=this.searchBtn=document.createElement("button");T.textContent="Search",T.type="submit",T.addEventListener("click",function(k){H.table.innerHTML="";const d={},U=new FormData(this.parentElement);for(const[P,B]of U.entries())B&&(d[P]=B);H.find(d,0,H.handleFind.bind(H)),k.preventDefault()});const S=document.createElement("form");S.innerHTML='
Filter results
',this.uriInput=document.createElement("input"),this.uriInput.type="text",this.uriInput.name="uri",this.uriInput.placeholder="URI, eg '/user/*'",S.append(this.uriInput),this.ipInput=document.createElement("input"),this.ipInput.type="text",this.ipInput.name="ip",this.ipInput.placeholder="IP",S.append(this.ipInput);const h=document.createElement("button");h.textContent="Reset",h.type="button",h.addEventListener("click",()=>{S.reset(),T.click()}),S.append(T),S.append(h),this.actions.append(S)},handleFind(H){const T=this;for(const S of H){const h=document.createElement("a");h.textContent="Load dataset",h.addEventListener("click",E=>{T.hide(),T.load(S.id,g=>{T.callback(S.id,g)}),E.preventDefault()});const k=document.createElement("a");k.textContent=S.method,k.addEventListener("click",E=>{T.table.innerHTML="",T.find({method:S.method},0,T.handleFind.bind(T)),E.preventDefault()});const d=document.createElement("a");d.textContent=S.uri,d.addEventListener("click",E=>{T.hide(),T.load(S.id,g=>{T.callback(S.id,g)}),E.preventDefault()});const U=document.createElement("a");U.textContent=S.ip,U.addEventListener("click",E=>{T.ipInput.value=S.ip,T.searchBtn.click(),E.preventDefault()});const P=document.createElement("a");P.textContent="Show URL",P.addEventListener("click",E=>{T.uriInput.value=S.uri,T.searchBtn.click(),E.preventDefault()});const B=document.createElement("tr"),_=document.createElement("td");_.classList.add(s("id-cell"));const O=document.createElement("span");O.classList.add(s("id-text")),O.textContent=S.id,O.title=S.id,_.append(O);const I=document.createElement("a");I.classList.add(s("copy-id")),I.title="Copy Request ID",I.innerHTML='',I.addEventListener("click",E=>{E.stopPropagation(),E.preventDefault();const g=document.createElement("textarea");g.value=S.id,g.style.position="fixed",g.style.opacity="0",document.body.append(g),g.select(),document.execCommand("copy"),g.remove();const c=I.querySelector("i");c.className="phpdebugbar-icon phpdebugbar-icon-circle-check",I.classList.add(s("copied")),setTimeout(()=>{c.className="phpdebugbar-icon phpdebugbar-icon-copy",I.classList.remove(s("copied"))},2e3)}),_.append(I),B.append(_);const G=document.createElement("td");G.textContent=S.datetime,B.append(G);const w=document.createElement("td");w.textContent=S.method,B.append(w);const e=document.createElement("td");e.append(d),B.append(e);const t=document.createElement("td");t.append(U),B.append(t);const i=document.createElement("td");i.append(P),B.append(i),T.table.append(B)}H.lengthh.json()).then(T).catch(h=>{T(null,h)})}})})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class H extends PhpDebugBar.Widget{get className(){return s("mails")}render(){this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(S,h){const k=document.createElement("span");k.classList.add(s("subject")),k.textContent=h.subject,S.append(k);const d=document.createElement("span");if(d.classList.add(s("to")),d.textContent=h.to,S.append(d),h.attachments&&h.attachments.length){const U=` Attachments: - `+d.attachments.join(` - `);d.headers=(d.headers||"")+B,delete d.attachments}if(d.body||d.html){const B=document.createElement("span");B.classList.add(s("filename")),B.textContent="";const M=document.createElement("a");M.setAttribute("title","Mail Preview"),M.textContent="View Mail",M.classList.add(s("editor-link")),M.addEventListener("click",()=>{const p=window.open("about:blank","Mail Preview","width=650,height=440,scrollbars=yes").document;let e="";if(d.headers){const _=document.createElement("pre");_.style.border="1px solid #ddd",_.style.padding="5px",_.style.overflowX="scroll";const O=document.createElement("code");O.textContent=d.headers,_.append(O),e=_.outerHTML}const t=document.createElement("pre");t.style.border="1px solid #ddd",t.style.padding="5px",t.style.overflowX="scroll",t.textContent=d.body;let r=t.outerHTML,y="";if(d.html){const _=document.createElement("details"),O=document.createElement("summary");O.textContent="Text version",_.append(O),_.append(t),r=_.outerHTML;const v=document.createElement("iframe");v.setAttribute("width","100%"),v.setAttribute("height","400px"),v.setAttribute("sandbox",""),v.setAttribute("referrerpolicy","no-referrer"),v.setAttribute("srcdoc",d.html),y=v.outerHTML}p.open(),p.write(e+r+y),p.close()}),B.append(M),g.append(B)}if(d.headers){const B=document.createElement("pre");B.classList.add(s("headers"));const M=document.createElement("code");M.textContent=d.headers,B.append(M),B.hidden=!0,g.append(B),g.addEventListener("click",()=>{B.hidden=!B.hidden})}}}),this.el.append(this.list.el),this.bindAttr("data",function(g){this.list.set("data",g)})}}PhpDebugBar.Widgets.MailsWidget=W})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class W extends PhpDebugBar.Widget{get className(){return s("sqlqueries")}onFilterClick(g){g.classList.toggle(s("excluded"));const d=g.getAttribute("rel"),w=this.list.el.querySelectorAll(`li[connection="${d}"]`);for(const c of w)c.hidden=!c.hidden}onCopyToClipboard(g){PhpDebugBar.Widgets.copyToClipboard(g.parentElement.querySelector("code")).then(d=>{if(!d){console.log("Oops, unable to copy");return}g.classList.add(s("copy-clipboard-check")),setTimeout(()=>{g.classList.remove(s("copy-clipboard-check"))},2e3)})}renderList(g,d,w){var p;const c=document.createElement("thead"),B=document.createElement("tr"),M=document.createElement("th");M.colSpan=2,M.classList.add(s("name")),M.innerHTML=d,B.append(M),c.append(B),g.append(c);const U=document.createElement("tbody");for(const e in w){const t=typeof w[e]=="function"?`${w[e].name} {}`:w[e],r=document.createElement("tr");if(typeof t=="object"&&t!==null){const y=document.createElement("td");y.classList.add("phpdebugbar-text-muted"),y.textContent=t.index||e,r.append(y);const _=document.createElement("td");if(t.namespace&&_.append(`${t.namespace}::`),_.append(t.name||t.file),t.line){const O=document.createElement("span");O.classList.add("phpdebugbar-text-muted"),O.textContent=`:${t.line}`,_.append(O)}if((p=t.xdebug_link)!=null&&p.url){const O=PhpDebugBar.Widgets.editorLink(t.xdebug_link);_.append(O.querySelector("a"))}r.append(_)}else{const y=document.createElement("td");y.classList.add("phpdebugbar-text-muted"),y.textContent=e,r.append(y);const _=document.createElement("td");_.textContent=t,r.append(_)}U.append(r)}g.append(U)}itemRenderer(g,d){if(d.type=d.type||"query",d.slow&&g.classList.add(s("sql-slow")),d.width_percent){const c=document.createElement("div");c.classList.add(s("bg-measure"));const B=document.createElement("div");B.classList.add(s("value")),B.style.left=`${d.start_percent}%`,B.style.width=`${Math.max(d.width_percent,.01)}%`,c.append(B),g.append(c)}if(d.duration_str){const c=document.createElement("span");c.setAttribute("title","Duration"),c.classList.add(s("duration")),c.textContent=d.duration_str,g.append(c)}if(d.memory_str){const c=document.createElement("span");c.setAttribute("title","Memory usage"),c.classList.add(s("memory")),c.textContent=d.memory_str,g.append(c)}if(typeof d.row_count!="undefined"){const c=document.createElement("span");c.setAttribute("title","Row count"),c.classList.add(s("row-count")),c.textContent=d.row_count,g.append(c)}if(typeof d.stmt_id!="undefined"&&d.stmt_id){const c=document.createElement("span");c.setAttribute("title","Prepared statement ID"),c.classList.add(s("stmt-id")),c.textContent=d.stmt_id,g.append(c)}if(d.connection){const c=document.createElement("span");if(c.setAttribute("title","Connection"),c.classList.add(s("database")),c.textContent=d.connection,g.append(c),g.setAttribute("connection",d.connection),!this.filters.includes(d.connection)){this.filters.push(d.connection);const B=document.createElement("a");B.classList.add(s("filter")),B.textContent=d.connection,B.setAttribute("rel",d.connection),B.addEventListener("click",()=>{this.onFilterClick(B)}),this.toolbar.append(B),this.filters.length>1&&(this.toolbar.hidden=!1)}}if(d.type==="query"){const c=document.createElement("span");c.setAttribute("title","Copy to clipboard"),c.classList.add(s("copy-clipboard")),c.style.cursor="pointer",c.innerHTML="​",c.addEventListener("click",B=>{this.onCopyToClipboard(c),B.stopPropagation()}),g.append(c)}if(d.xdebug_link?g.prepend(PhpDebugBar.Widgets.editorLink(d.xdebug_link)):typeof d.filename!="undefined"&&d.filename&&g.prepend(PhpDebugBar.Widgets.editorLink(d)),d.type!=="query"){const c=document.createElement("strong");c.classList.add(s("sql"),s(d.type)),c.textContent=d.sql,g.append(c)}else{const c=document.createElement("code");c.classList.add(s("sql")),c.innerHTML=PhpDebugBar.Widgets.highlight(d.sql,"sql"),g.append(c)}if(typeof d.is_success!="undefined"&&!d.is_success){g.classList.add(s("error"));const c=document.createElement("span");c.classList.add(s("error")),c.textContent=`[${d.error_code}] ${d.error_message}`,g.append(c)}if(d.type!=="query")return;const w=document.createElement("table");w.classList.add(s("params")),w.hidden=!0,d.params&&Object.keys(d.params).length>0&&this.renderList(w,"Params",d.params),d.backtrace&&Object.keys(d.backtrace).length>0&&this.renderList(w,"Backtrace",d.backtrace),w.querySelectorAll("tr").length||(w.style.display="none"),g.append(w),g.style.cursor="pointer",g.addEventListener("click",c=>{if(window.getSelection().type==="Range"||c.target.closest(".sf-dump"))return"";w.hidden=!w.hidden;const B=g.querySelector("code");if(B&&typeof phpdebugbar_sqlformatter!="undefined"){let M=d.sql;w.hidden||(M=phpdebugbar_sqlformatter.format(d.sql)),B.innerHTML=PhpDebugBar.Widgets.highlight(M,"sql")}})}render(){this.status=document.createElement("div"),this.status.classList.add(s("status")),this.el.append(this.status),this.toolbar=document.createElement("div"),this.toolbar.classList.add(s("toolbar")),this.el.append(this.toolbar),this.filters=[];let g="none",d=null;this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer:(w,c)=>this.itemRenderer(w,c)}),this.list.bindAttr("data",function(w){const c={};let B=0;for(let M=0;M0&&(U+=JSON.stringify(w[M].params)),w[M].connection&&(U+=`@${w[M].connection}`),c[U]=c[U]||{keys:[]},c[U].keys.push(M)}for(const M in c)if(c[M].keys.length>1){B+=c[M].keys.length;for(let U=0;U{p.classList.toggle("shown-duplicated"),p.textContent=p.classList.contains("shown-duplicated")?"Show All":U;const e=`.${s("list-item")}:not(.${s("sql-duplicate")})`,t=this.list.el.querySelectorAll(e);for(const r of t)r.hidden=!r.hidden}),M.append(p)}if(w.accumulated_duration_str){const p=document.createElement("span");p.setAttribute("title","Accumulated duration"),p.classList.add(s("duration")),p.textContent=w.accumulated_duration_str;const e=document.createElement("span");e.classList.add(s("sort-icon")),e.style.cursor="pointer",e.style.marginLeft="5px",e.textContent="Sort \u21C5",e.setAttribute("title","Sort by duration"),e.addEventListener("click",()=>{if(g==="none"?(g="desc",e.textContent="\u2193",d=[...w.statements],w.statements.sort((t,r)=>(r.duration||0)-(t.duration||0))):g==="desc"?(g="asc",e.textContent="\u2191",w.statements.sort((t,r)=>(t.duration||0)-(r.duration||0))):(g="none",e.textContent="\u21C5",d&&(w.statements=d,d=null)),this.list.set("data",w.statements),this.list.get("duplicate")){const t=M.querySelector("a."+s("duplicates"));t.textContent=U,t.classList.remove("shown-duplicated")}}),p.append(e),this.status.append(p)}if(w.memory_usage_str){const p=document.createElement("span");p.setAttribute("title","Memory usage"),p.classList.add(s("memory")),p.textContent=w.memory_usage_str,this.status.append(p)}})}}PhpDebugBar.Widgets.SQLQueriesWidget=W})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class W extends PhpDebugBar.Widget{get className(){return s("templates")}render(){this.status=document.createElement("div"),this.status.classList.add(s("status")),this.el.append(this.status),this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(g,d){const w=document.createElement("span");if(w.classList.add(s("name")),d.html?w.innerHTML=d.html:w.textContent=d.name,g.append(w),d.xdebug_link&&g.append(PhpDebugBar.Widgets.editorLink(d.xdebug_link)),d.render_time_str){const c=document.createElement("span");c.setAttribute("title","Render time"),c.classList.add(s("render-time")),c.textContent=d.render_time_str,g.append(c)}if(d.memory_str){const c=document.createElement("span");c.setAttribute("title","Memory usage"),c.classList.add(s("memory")),c.textContent=d.memory_str,g.append(c)}if(typeof d.param_count!="undefined"){const c=document.createElement("span");c.setAttribute("title","Parameter count"),c.classList.add(s("param-count")),c.textContent=d.param_count,g.append(c)}if(typeof d.type!="undefined"&&d.type){const c=document.createElement("span");c.setAttribute("title","Type"),c.classList.add(s("type")),c.textContent=d.type,g.append(c)}if(typeof d.editorLink!="undefined"&&d.editorLink){const c=document.createElement("a");c.setAttribute("href",d.editorLink),c.classList.add(s("editor-link")),c.textContent="file",c.addEventListener("click",B=>{B.stopPropagation()}),g.append(c)}if(d.params&&Object.keys(d.params).length>0){const c=document.createElement("table");c.classList.add(s("params"));const B=document.createElement("thead");B.innerHTML='Params';const M=document.createElement("tbody");c.append(B,M);for(const U in d.params)if(typeof d.params[U]!="function"){const p=document.createElement("tr"),e=document.createElement("td");e.className=s("name"),e.textContent=U,p.append(e);const t=document.createElement("td");t.className=s("value"),PhpDebugBar.Widgets.renderValueInto(t,d.params[U]),p.append(t),M.append(p)}c.hidden=!0,g.append(c),g.style.cursor="pointer",g.addEventListener("click",U=>{window.getSelection().type==="Range"||U.target.closest(".sf-dump")||(c.hidden=!c.hidden)})}}}),this.el.append(this.list.el),this.callgraph=document.createElement("div"),this.callgraph.classList.add(s("callgraph")),this.el.append(this.callgraph),this.bindAttr("data",function(g){this.list.set("data",g.templates),this.status.innerHTML="",this.callgraph.innerHTML="";const d=g.sentence||"templates were rendered",w=document.createElement("span");if(w.textContent=`${g.nb_templates} ${d}`,this.status.append(w),g.accumulated_render_time_str){const c=document.createElement("span");c.setAttribute("title","Accumulated render time"),c.classList.add(s("render-time")),c.textContent=g.accumulated_render_time_str,this.status.append(c)}if(g.memory_usage_str){const c=document.createElement("span");c.setAttribute("title","Memory usage"),c.classList.add(s("memory")),c.textContent=g.memory_usage_str,this.status.append(c)}if(g.nb_blocks>0){const c=document.createElement("div");c.textContent=`${g.nb_blocks} blocks were rendered`,this.status.append(c)}if(g.nb_macros>0){const c=document.createElement("div");c.textContent=`${g.nb_macros} macros were rendered`,this.status.append(c)}typeof g.callgraph!="undefined"&&(this.callgraph.innerHTML=g.callgraph)})}}PhpDebugBar.Widgets.TemplatesWidget=W})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class W extends PhpDebugBar.Widget{get className(){return s("httpclient")}render(){this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(g,d){const w=document.createElement("div");w.classList.add(s("request-summary")),w.style.display="flex",w.style.gap="10px",w.style.alignItems="center";const c=document.createElement("span");c.classList.add(s("method")),c.textContent=d.method,c.style.fontWeight="bold",c.style.minWidth="60px",w.append(c);const B=document.createElement("span");B.classList.add(s("url")),B.textContent=d.url,B.style.flex="1",B.style.overflow="hidden",B.style.textOverflow="ellipsis",B.style.whiteSpace="nowrap",w.append(B);const M=document.createElement("span");if(M.classList.add(s("status")),M.textContent=d.status,M.style.minWidth="40px",M.style.textAlign="center",typeof d.status=="number"&&(d.status>=200&&d.status<300?M.style.color="#4caf50":d.status>=300&&d.status<400?M.style.color="#ff9800":d.status>=400&&(M.style.color="#f44336")),w.append(M),d.duration!==null&&typeof d.duration!="undefined"){const U=document.createElement("span");U.classList.add(s("duration")),U.textContent=d.duration,U.style.minWidth="60px",U.style.textAlign="right",w.append(U)}if(g.append(w),d.details&&Object.keys(d.details).length>0){const U=document.createElement("table");U.classList.add(s("params"));const p=document.createElement("thead");p.innerHTML='Details';const e=document.createElement("tbody");U.append(p,e);for(const t in d.details)if(typeof d.details[t]!="function"){const r=document.createElement("tr"),y=document.createElement("td");y.className=s("name"),y.textContent=t,r.append(y);const _=document.createElement("td");_.className=s("value"),PhpDebugBar.Widgets.renderValueInto(_,d.details[t]),r.append(_),e.append(r)}U.hidden=!0,g.append(U),g.style.cursor="pointer",g.addEventListener("click",t=>{window.getSelection().type==="Range"||t.target.closest(".sf-dump")||(U.hidden=!U.hidden)})}}}),this.el.append(this.list.el),this.bindAttr("data",function(g){this.list.set("data",g)})}}PhpDebugBar.Widgets.HttpWidget=W})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-"),W=new Map;let S=0;const g={"&":"&","<":"<",">":">",'"':"""},d=/[&<>"]/g;class w{constructor(p){this.expandedDepth=p&&p.expandedDepth!==void 0?p.expandedDepth:0}render(p){const e=document.createElement("pre");e.className="sf-dump";const t=this.expandedDepth;return this.expandedDepth=0,e.innerHTML=this.toHtml(p,0)+` -`,this.expandedDepth=t,e}toHtml(p,e){if(p===null)return"null";switch(typeof p){case"boolean":return""+p+"";case"number":return""+this.esc(String(p))+"";case"string":return'"'+this.esc(p)+'"';case"object":return this.containerToHtml(p,e);default:return this.esc(String(p))}}containerToHtml(p,e){const t=Array.isArray(p),r=!t&&p._vd,y=!t&&p._cut||0,_=t?null:Object.keys(p),O=!t&&(r||y)?_.filter(P=>P!=="_vd"&&P!=="_cut"):_,G=(t?p.length:O.length)+y;return r?this.objectToHtml(p,O,r,y,G,e):this.arrayToHtml(p,t,O,y,G,e)}arrayToHtml(p,e,t,r,y,_){if(y===0)return"[]";const O=_ [";if(v+=""+(O?"\u25BC":"\u25B6")+"",v+=' ',v+=this.arrayPreview(p,e,t,r)+" ]",O)v+="",v+=this.arrayChildren(p,e,t,r,_),v+="";else{const G=++S;W.set(G,{v:p,arr:e,k:t,c:r,d:_,r:this,ed:this.expandedDepth}),v+=""}return v+=']',v}arrayPreview(p,e,t,r){const y=e?p.length:t.length,_=Math.min(y,8),O=[];for(let G=0;G<_;G++){const P=e?G:t[G],A=e?p[G]:p[t[G]];O.push(e?this.previewValue(A):this.esc(String(P))+": "+this.previewValue(A))}let v=O.join(", ");return(y>_||r>0)&&(v+=", \u2026"),v}arrayChildren(p,e,t,r,y){const _=e?p.length:t.length;let O="";for(let v=0;v<_;v++)v>0&&(O+=` -`),e?(O+=""+v+" => ",O+=this.toHtml(p[v],y+1)):(O+='"'+this.esc(t[v])+'" => ',O+=this.toHtml(p[t[v]],y+1));return r>0&&(O+=` -\u2026`+r),O}objectToHtml(p,e,t,r,y,_){const O=t[1]||0,v=t[2]||null,G=t[3]||null,P=t[0]===5;if(y===0&&!O)return(v?this.esc(v)+" ":"")+"{}";const A=_ {":(v&&(f+=""+this.esc(v)+" "),f+="{",O&&(R="#"+O+" ")),y===0)return f+R+"}";f+=""+R+""+(A?"\u25BC":"\u25B6")+"",f+=' ';const E=Math.min(e.length,8),i=[];for(let l=0;lE||r>0)&&(h+=", \u2026"),f+=h+" }",A)f+="",f+=this.objectChildren(p,e,G,r,_),f+="";else{const l=++S;W.set(l,{v:p,obj:!0,k:e,p:G,c:r,d:_,r:this,ed:this.expandedDepth}),f+=""}return f+='}',f}objectChildren(p,e,t,r,y){let _="";for(let O=0;O0&&(_+=` -`);const v=t?t[O]:null,G=this.esc(e[O]);v?v==="+"?_+='+"'+G+'": ':v==="~"?_+=""+G+": ":v==="*"?_+='#'+G+": ":_+='-'+G+": ":_+='+'+G+": ",_+=this.toHtml(p[e[O]],y+1)}return r>0&&(_+=` -\u2026`+r),_}previewValue(p){return p===null?"null":typeof p=="string"?'"'+this.esc(p.length>40?p.substring(0,40)+"\u2026":p)+'"':typeof p=="boolean"||typeof p=="number"?String(p):typeof p=="object"?p._vd?(p._vd[2]||"")+" {\u2026}":Array.isArray(p)?"[\u2026]":"{\u2026}":"\u2026"}esc(p){return String(p).replace(d,e=>g[e])}}PhpDebugBar.Widgets.VarDumpRenderer=w;function c(U){const p=+U.dataset.lazy;delete U.dataset.lazy;const e=W.get(p);if(!e)return;W.delete(p);const t=e.r,r=t.expandedDepth;t.expandedDepth=e.ed,e.obj?U.innerHTML=t.objectChildren(e.v,e.k,e.p,e.c,e.d):U.innerHTML=t.arrayChildren(e.v,e.arr,e.k,e.c,e.d),t.expandedDepth=r}function B(U,p){const e=U.previousElementSibling,t=U.nextElementSibling;e&&e.classList.toggle("sf-dump-hidden",p),t&&t.classList.toggle("sf-dump-hidden",!p)}document.addEventListener("click",function(U){var y,_;const p=U.target.closest("a.sf-dump-toggle")||((y=U.target.closest(".sf-dump-preview"))==null?void 0:y.previousElementSibling);if(!p)return;const e=p.closest("pre.sf-dump");if(!e||e.id)return;const t=(_=p.nextElementSibling)==null?void 0:_.nextElementSibling;if(!t||t.tagName!=="SAMP")return;U.preventDefault();const r=t.classList.contains("sf-dump-compact");if(r&&t.dataset.lazy&&c(t),U.ctrlKey||U.metaKey)if(r){let O;for(;(O=t.querySelectorAll("[data-lazy]")).length;)O.forEach(c);t.querySelectorAll("samp.sf-dump-compact").forEach(function(v){var P;v.classList.replace("sf-dump-compact","sf-dump-expanded");const G=(P=v.previousElementSibling)==null?void 0:P.previousElementSibling;G&&G.classList.contains("sf-dump-toggle")&&(G.lastElementChild.textContent="\u25BC"),B(v,!0)})}else t.querySelectorAll("samp.sf-dump-expanded").forEach(function(O){var G;O.classList.replace("sf-dump-expanded","sf-dump-compact");const v=(G=O.previousElementSibling)==null?void 0:G.previousElementSibling;v&&v.classList.contains("sf-dump-toggle")&&(v.lastElementChild.textContent="\u25B6"),B(O,!1)});t.classList.toggle("sf-dump-compact",!r),t.classList.toggle("sf-dump-expanded",r),p.lastElementChild.textContent=r?"\u25BC":"\u25B6",B(t,r)});class M extends PhpDebugBar.Widgets.KVListWidget{get className(){return s("kvlist jsonvarlist")}itemRenderer(p,e,t,r){const y=document.createElement("span");y.setAttribute("title",t),y.textContent=t,p.appendChild(y);const _=r&&r.value!==void 0?r.value:r;PhpDebugBar.Widgets.renderValueInto(e,_),r&&r.xdebug_link&&e.appendChild(PhpDebugBar.Widgets.editorLink(r.xdebug_link))}}PhpDebugBar.Widgets.JsonVariableListWidget=M})();})(); + `+h.attachments.join(` + `);h.headers=(h.headers||"")+U,delete h.attachments}if(h.body||h.html){const U=document.createElement("span");U.classList.add(s("filename")),U.textContent="";const P=document.createElement("a");P.setAttribute("title","Mail Preview"),P.textContent="View Mail",P.classList.add(s("editor-link")),P.addEventListener("click",()=>{const _=window.open("about:blank","Mail Preview","width=650,height=440,scrollbars=yes").document;let O="";if(h.headers){const e=document.createElement("pre");e.style.border="1px solid #ddd",e.style.padding="5px",e.style.overflowX="scroll";const t=document.createElement("code");t.textContent=h.headers,e.append(t),O=e.outerHTML}const I=document.createElement("pre");I.style.border="1px solid #ddd",I.style.padding="5px",I.style.overflowX="scroll",I.textContent=h.body;let G=I.outerHTML,w="";if(h.html){const e=document.createElement("details"),t=document.createElement("summary");t.textContent="Text version",e.append(t),e.append(I),G=e.outerHTML;const i=document.createElement("iframe");i.setAttribute("width","100%"),i.setAttribute("height","400px"),i.setAttribute("sandbox",""),i.setAttribute("referrerpolicy","no-referrer"),i.setAttribute("srcdoc",h.html),w=i.outerHTML}_.open(),_.write(O+G+w),_.close()}),U.append(P),S.append(U)}if(h.headers){const U=document.createElement("pre");U.classList.add(s("headers"));const P=document.createElement("code");P.textContent=h.headers,U.append(P),U.hidden=!0,S.append(U),S.addEventListener("click",()=>{U.hidden=!U.hidden})}}}),this.el.append(this.list.el),this.bindAttr("data",function(S){this.list.set("data",S)})}}PhpDebugBar.Widgets.MailsWidget=H})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class H extends PhpDebugBar.Widget{get className(){return s("sqlqueries")}onFilterClick(S){S.classList.toggle(s("excluded"));const h=S.getAttribute("rel"),k=this.list.el.querySelectorAll(`li[connection="${h}"]`);for(const d of k)d.hidden=!d.hidden}onCopyToClipboard(S){PhpDebugBar.Widgets.copyToClipboard(S.parentElement.querySelector("code")).then(h=>{if(!h){console.log("Oops, unable to copy");return}S.classList.add(s("copy-clipboard-check")),setTimeout(()=>{S.classList.remove(s("copy-clipboard-check"))},2e3)})}renderList(S,h,k){var _;const d=document.createElement("thead"),U=document.createElement("tr"),P=document.createElement("th");P.colSpan=2,P.classList.add(s("name")),P.innerHTML=h,U.append(P),d.append(U),S.append(d);const B=document.createElement("tbody");for(const O in k){const I=typeof k[O]=="function"?`${k[O].name} {}`:k[O],G=document.createElement("tr");if(typeof I=="object"&&I!==null){const w=document.createElement("td");w.classList.add("phpdebugbar-text-muted"),w.textContent=I.index||O,G.append(w);const e=document.createElement("td");if(I.namespace&&e.append(`${I.namespace}::`),e.append(I.name||I.file),I.line){const t=document.createElement("span");t.classList.add("phpdebugbar-text-muted"),t.textContent=`:${I.line}`,e.append(t)}if((_=I.xdebug_link)!=null&&_.url){const t=PhpDebugBar.Widgets.editorLink(I.xdebug_link);e.append(t.querySelector("a"))}G.append(e)}else{const w=document.createElement("td");w.classList.add("phpdebugbar-text-muted"),w.textContent=O,G.append(w);const e=document.createElement("td");e.textContent=I,G.append(e)}B.append(G)}S.append(B)}itemRenderer(S,h){if(h.type=h.type||"query",h.slow&&S.classList.add(s("sql-slow")),h.width_percent){const d=document.createElement("div");d.classList.add(s("bg-measure"));const U=document.createElement("div");U.classList.add(s("value")),U.style.left=`${h.start_percent}%`,U.style.width=`${Math.max(h.width_percent,.01)}%`,d.append(U),S.append(d)}if(h.duration_str){const d=document.createElement("span");d.setAttribute("title","Duration"),d.classList.add(s("duration")),d.textContent=h.duration_str,S.append(d)}if(h.memory_str){const d=document.createElement("span");d.setAttribute("title","Memory usage"),d.classList.add(s("memory")),d.textContent=h.memory_str,S.append(d)}if(typeof h.row_count!="undefined"){const d=document.createElement("span");d.setAttribute("title","Row count"),d.classList.add(s("row-count")),d.textContent=h.row_count,S.append(d)}if(typeof h.stmt_id!="undefined"&&h.stmt_id){const d=document.createElement("span");d.setAttribute("title","Prepared statement ID"),d.classList.add(s("stmt-id")),d.textContent=h.stmt_id,S.append(d)}if(h.connection){const d=document.createElement("span");if(d.setAttribute("title","Connection"),d.classList.add(s("database")),d.textContent=h.connection,S.append(d),S.setAttribute("connection",h.connection),!this.filters.includes(h.connection)){this.filters.push(h.connection);const U=document.createElement("a");U.classList.add(s("filter")),U.textContent=h.connection,U.setAttribute("rel",h.connection),U.addEventListener("click",()=>{this.onFilterClick(U)}),this.toolbar.append(U),this.filters.length>1&&(this.toolbar.hidden=!1)}}if(h.type==="query"){const d=document.createElement("span");d.setAttribute("title","Copy to clipboard"),d.classList.add(s("copy-clipboard")),d.style.cursor="pointer",d.innerHTML="​",d.addEventListener("click",U=>{this.onCopyToClipboard(d),U.stopPropagation()}),S.append(d)}if(h.xdebug_link?S.prepend(PhpDebugBar.Widgets.editorLink(h.xdebug_link)):typeof h.filename!="undefined"&&h.filename&&S.prepend(PhpDebugBar.Widgets.editorLink(h)),h.type!=="query"){const d=document.createElement("strong");d.classList.add(s("sql"),s(h.type)),d.textContent=h.sql,S.append(d)}else{const d=document.createElement("code");d.classList.add(s("sql")),d.innerHTML=PhpDebugBar.Widgets.highlight(h.sql,"sql"),S.append(d)}if(typeof h.is_success!="undefined"&&!h.is_success){S.classList.add(s("error"));const d=document.createElement("span");d.classList.add(s("error")),d.textContent=`[${h.error_code}] ${h.error_message}`,S.append(d)}if(h.type!=="query")return;const k=document.createElement("table");k.classList.add(s("params")),k.hidden=!0,h.params&&Object.keys(h.params).length>0&&this.renderList(k,"Params",h.params),h.backtrace&&Object.keys(h.backtrace).length>0&&this.renderList(k,"Backtrace",h.backtrace),k.querySelectorAll("tr").length||(k.style.display="none"),S.append(k),S.style.cursor="pointer",S.addEventListener("click",d=>{if(window.getSelection().type==="Range"||d.target.closest(".sf-dump"))return"";k.hidden=!k.hidden;const U=S.querySelector("code");if(U&&typeof phpdebugbar_sqlformatter!="undefined"){let P=h.sql;k.hidden||(P=phpdebugbar_sqlformatter.format(h.sql)),U.innerHTML=PhpDebugBar.Widgets.highlight(P,"sql")}})}render(){this.status=document.createElement("div"),this.status.classList.add(s("status")),this.el.append(this.status),this.toolbar=document.createElement("div"),this.toolbar.classList.add(s("toolbar")),this.el.append(this.toolbar),this.filters=[];let S="none",h=null;this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer:(k,d)=>this.itemRenderer(k,d)}),this.list.bindAttr("data",function(k){const d={};let U=0;for(let P=0;P0&&(B+=JSON.stringify(k[P].params)),k[P].connection&&(B+=`@${k[P].connection}`),d[B]=d[B]||{keys:[]},d[B].keys.push(P)}for(const P in d)if(d[P].keys.length>1){U+=d[P].keys.length;for(let B=0;B{_.classList.toggle("shown-duplicated"),_.textContent=_.classList.contains("shown-duplicated")?"Show All":B;const O=`.${s("list-item")}:not(.${s("sql-duplicate")})`,I=this.list.el.querySelectorAll(O);for(const G of I)G.hidden=!G.hidden}),P.append(_)}if(k.accumulated_duration_str){const _=document.createElement("span");_.setAttribute("title","Accumulated duration"),_.classList.add(s("duration")),_.textContent=k.accumulated_duration_str;const O=document.createElement("span");O.classList.add(s("sort-icon")),O.style.cursor="pointer",O.style.marginLeft="5px",O.textContent="Sort \u21C5",O.setAttribute("title","Sort by duration"),O.addEventListener("click",()=>{if(S==="none"?(S="desc",O.textContent="\u2193",h=[...k.statements],k.statements.sort((I,G)=>(G.duration||0)-(I.duration||0))):S==="desc"?(S="asc",O.textContent="\u2191",k.statements.sort((I,G)=>(I.duration||0)-(G.duration||0))):(S="none",O.textContent="\u21C5",h&&(k.statements=h,h=null)),this.list.set("data",k.statements),this.list.get("duplicate")){const I=P.querySelector("a."+s("duplicates"));I.textContent=B,I.classList.remove("shown-duplicated")}}),_.append(O),this.status.append(_)}if(k.memory_usage_str){const _=document.createElement("span");_.setAttribute("title","Memory usage"),_.classList.add(s("memory")),_.textContent=k.memory_usage_str,this.status.append(_)}})}}PhpDebugBar.Widgets.SQLQueriesWidget=H})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class H extends PhpDebugBar.Widget{get className(){return s("templates")}render(){this.status=document.createElement("div"),this.status.classList.add(s("status")),this.el.append(this.status),this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(S,h){const k=document.createElement("span");if(k.classList.add(s("name")),h.html?k.innerHTML=h.html:k.textContent=h.name,S.append(k),h.xdebug_link&&S.append(PhpDebugBar.Widgets.editorLink(h.xdebug_link)),h.render_time_str){const d=document.createElement("span");d.setAttribute("title","Render time"),d.classList.add(s("render-time")),d.textContent=h.render_time_str,S.append(d)}if(h.memory_str){const d=document.createElement("span");d.setAttribute("title","Memory usage"),d.classList.add(s("memory")),d.textContent=h.memory_str,S.append(d)}if(typeof h.param_count!="undefined"){const d=document.createElement("span");d.setAttribute("title","Parameter count"),d.classList.add(s("param-count")),d.textContent=h.param_count,S.append(d)}if(typeof h.type!="undefined"&&h.type){const d=document.createElement("span");d.setAttribute("title","Type"),d.classList.add(s("type")),d.textContent=h.type,S.append(d)}if(typeof h.editorLink!="undefined"&&h.editorLink){const d=document.createElement("a");d.setAttribute("href",h.editorLink),d.classList.add(s("editor-link")),d.textContent="file",d.addEventListener("click",U=>{U.stopPropagation()}),S.append(d)}if(h.params&&Object.keys(h.params).length>0){const d=document.createElement("table");d.classList.add(s("params"));const U=document.createElement("thead");U.innerHTML='Params';const P=document.createElement("tbody");d.append(U,P);for(const B in h.params)if(typeof h.params[B]!="function"){const _=document.createElement("tr"),O=document.createElement("td");O.className=s("name"),O.textContent=B,_.append(O);const I=document.createElement("td");I.className=s("value"),PhpDebugBar.Widgets.renderValueInto(I,h.params[B]),_.append(I),P.append(_)}d.hidden=!0,S.append(d),S.style.cursor="pointer",S.addEventListener("click",B=>{window.getSelection().type==="Range"||B.target.closest(".sf-dump")||(d.hidden=!d.hidden)})}}}),this.el.append(this.list.el),this.callgraph=document.createElement("div"),this.callgraph.classList.add(s("callgraph")),this.el.append(this.callgraph),this.bindAttr("data",function(S){this.list.set("data",S.templates),this.status.innerHTML="",this.callgraph.innerHTML="";const h=S.sentence||"templates were rendered",k=document.createElement("span");if(k.textContent=`${S.nb_templates} ${h}`,this.status.append(k),S.accumulated_render_time_str){const d=document.createElement("span");d.setAttribute("title","Accumulated render time"),d.classList.add(s("render-time")),d.textContent=S.accumulated_render_time_str,this.status.append(d)}if(S.memory_usage_str){const d=document.createElement("span");d.setAttribute("title","Memory usage"),d.classList.add(s("memory")),d.textContent=S.memory_usage_str,this.status.append(d)}if(S.nb_blocks>0){const d=document.createElement("div");d.textContent=`${S.nb_blocks} blocks were rendered`,this.status.append(d)}if(S.nb_macros>0){const d=document.createElement("div");d.textContent=`${S.nb_macros} macros were rendered`,this.status.append(d)}typeof S.callgraph!="undefined"&&(this.callgraph.innerHTML=S.callgraph)})}}PhpDebugBar.Widgets.TemplatesWidget=H})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-");class H extends PhpDebugBar.Widget{get className(){return s("httpclient")}render(){this.list=new PhpDebugBar.Widgets.ListWidget({itemRenderer(S,h){const k=document.createElement("div");k.classList.add(s("request-summary")),k.style.display="flex",k.style.gap="10px",k.style.alignItems="center";const d=document.createElement("span");d.classList.add(s("method")),d.textContent=h.method,d.style.fontWeight="bold",d.style.minWidth="60px",k.append(d);const U=document.createElement("span");U.classList.add(s("url")),U.textContent=h.url,U.style.flex="1",U.style.overflow="hidden",U.style.textOverflow="ellipsis",U.style.whiteSpace="nowrap",k.append(U);const P=document.createElement("span");if(P.classList.add(s("status")),P.textContent=h.status,P.style.minWidth="40px",P.style.textAlign="center",typeof h.status=="number"&&(h.status>=200&&h.status<300?P.style.color="#4caf50":h.status>=300&&h.status<400?P.style.color="#ff9800":h.status>=400&&(P.style.color="#f44336")),k.append(P),h.duration!==null&&typeof h.duration!="undefined"){const B=document.createElement("span");B.classList.add(s("duration")),B.textContent=h.duration,B.style.minWidth="60px",B.style.textAlign="right",k.append(B)}if(S.append(k),h.details&&Object.keys(h.details).length>0){const B=document.createElement("table");B.classList.add(s("params"));const _=document.createElement("thead");_.innerHTML='Details';const O=document.createElement("tbody");B.append(_,O);for(const I in h.details)if(typeof h.details[I]!="function"){const G=document.createElement("tr"),w=document.createElement("td");w.className=s("name"),w.textContent=I,G.append(w);const e=document.createElement("td");e.className=s("value"),PhpDebugBar.Widgets.renderValueInto(e,h.details[I]),G.append(e),O.append(G)}B.hidden=!0,S.append(B),S.style.cursor="pointer",S.addEventListener("click",I=>{window.getSelection().type==="Range"||I.target.closest(".sf-dump")||(B.hidden=!B.hidden)})}}}),this.el.append(this.list.el),this.bindAttr("data",function(S){this.list.set("data",S)})}}PhpDebugBar.Widgets.HttpWidget=H})();(function(){const s=PhpDebugBar.utils.makecsscls("phpdebugbar-widgets-"),H=new Map;let T=0;const S={"&":"&","<":"<",">":">",'"':"""},h=/[&<>"]/g;class k{constructor(_){this.expandedDepth=_&&_.expandedDepth!==void 0?_.expandedDepth:0}render(_){const O=document.createElement("pre");O.className="sf-dump";const I=this.expandedDepth;return this.expandedDepth=0,O.innerHTML=this.toHtml(_,0)+` +`,this.expandedDepth=I,O}toHtml(_,O){if(_===null)return"null";switch(typeof _){case"boolean":return""+_+"";case"number":return""+this.esc(String(_))+"";case"string":return'"'+this.esc(_)+'"';case"object":return this.containerToHtml(_,O);default:return this.esc(String(_))}}containerToHtml(_,O){const I=Array.isArray(_),G=!I&&_._vd,w=!I&&_._cut||0,e=I?null:Object.keys(_),t=!I&&(G||w)?e.filter(g=>g!=="_vd"&&g!=="_cut"):e,E=(I?_.length:t.length)+w;return G?this.objectToHtml(_,t,G,w,E,O):this.arrayToHtml(_,I,t,w,E,O)}arrayToHtml(_,O,I,G,w,e){if(w===0)return"[]";const t=e [";if(i+=""+(t?"\u25BC":"\u25B6")+"",i+=' ',i+=this.arrayPreview(_,O,I,G)+" ]",t)i+="",i+=this.arrayChildren(_,O,I,G,e),i+="";else{const E=++T;H.set(E,{v:_,arr:O,k:I,c:G,d:e,r:this,ed:this.expandedDepth}),i+=""}return i+=']',i}arrayPreview(_,O,I,G){const w=O?_.length:I.length,e=Math.min(w,8),t=[];for(let E=0;Ee||G>0)&&(i+=", \u2026"),i}arrayChildren(_,O,I,G,w){const e=O?_.length:I.length;let t="";for(let i=0;i0&&(t+=` +`),O?(t+=""+i+" => ",t+=this.toHtml(_[i],w+1)):(t+='"'+this.esc(I[i])+'" => ',t+=this.toHtml(_[I[i]],w+1));return G>0&&(t+=` +\u2026`+G),t}objectToHtml(_,O,I,G,w,e){const t=I[1]||0,i=I[2]||null,E=I[3]||null,g=I[0]===5;if(w===0&&!t)return(i?this.esc(i)+" ":"")+"{}";const c=e {":(i&&(u+=""+this.esc(i)+" "),u+="{",t&&(b="#"+t+" ")),w===0)return u+b+"}";u+=""+b+""+(c?"\u25BC":"\u25B6")+"",u+=' ';const f=Math.min(O.length,8),a=[];for(let o=0;of||G>0)&&(m+=", \u2026"),u+=m+" }",c)u+="",u+=this.objectChildren(_,O,E,G,e),u+="";else{const o=++T;H.set(o,{v:_,obj:!0,k:O,p:E,c:G,d:e,r:this,ed:this.expandedDepth}),u+=""}return u+='}',u}objectChildren(_,O,I,G,w){let e="";for(let t=0;t0&&(e+=` +`);const i=I?I[t]:null,E=this.esc(O[t]);i?i==="+"?e+='+"'+E+'": ':i==="~"?e+=""+E+": ":i==="*"?e+='#'+E+": ":e+='-'+E+": ":e+='+'+E+": ",e+=this.toHtml(_[O[t]],w+1)}return G>0&&(e+=` +\u2026`+G),e}previewValue(_){return _===null?"null":typeof _=="string"?'"'+this.esc(_.length>40?_.substring(0,40)+"\u2026":_)+'"':typeof _=="boolean"||typeof _=="number"?String(_):typeof _=="object"?_._vd?(_._vd[2]||"")+" {\u2026}":Array.isArray(_)?"[\u2026]":"{\u2026}":"\u2026"}esc(_){return String(_).replace(h,O=>S[O])}}PhpDebugBar.Widgets.VarDumpRenderer=k;function d(B){const _=+B.dataset.lazy;delete B.dataset.lazy;const O=H.get(_);if(!O)return;H.delete(_);const I=O.r,G=I.expandedDepth;I.expandedDepth=O.ed,O.obj?B.innerHTML=I.objectChildren(O.v,O.k,O.p,O.c,O.d):B.innerHTML=I.arrayChildren(O.v,O.arr,O.k,O.c,O.d),I.expandedDepth=G}function U(B,_){const O=B.previousElementSibling,I=B.nextElementSibling;O&&O.classList.toggle("sf-dump-hidden",_),I&&I.classList.toggle("sf-dump-hidden",!_)}document.addEventListener("click",function(B){var w,e;const _=B.target.closest("a.sf-dump-toggle")||((w=B.target.closest(".sf-dump-preview"))==null?void 0:w.previousElementSibling);if(!_)return;const O=_.closest("pre.sf-dump");if(!O||O.id)return;const I=(e=_.nextElementSibling)==null?void 0:e.nextElementSibling;if(!I||I.tagName!=="SAMP")return;B.preventDefault();const G=I.classList.contains("sf-dump-compact");if(G&&I.dataset.lazy&&d(I),B.ctrlKey||B.metaKey)if(G){let t;for(;(t=I.querySelectorAll("[data-lazy]")).length;)t.forEach(d);I.querySelectorAll("samp.sf-dump-compact").forEach(function(i){var g;i.classList.replace("sf-dump-compact","sf-dump-expanded");const E=(g=i.previousElementSibling)==null?void 0:g.previousElementSibling;E&&E.classList.contains("sf-dump-toggle")&&(E.lastElementChild.textContent="\u25BC"),U(i,!0)})}else I.querySelectorAll("samp.sf-dump-expanded").forEach(function(t){var E;t.classList.replace("sf-dump-expanded","sf-dump-compact");const i=(E=t.previousElementSibling)==null?void 0:E.previousElementSibling;i&&i.classList.contains("sf-dump-toggle")&&(i.lastElementChild.textContent="\u25B6"),U(t,!1)});I.classList.toggle("sf-dump-compact",!G),I.classList.toggle("sf-dump-expanded",G),_.lastElementChild.textContent=G?"\u25BC":"\u25B6",U(I,G)});class P extends PhpDebugBar.Widgets.KVListWidget{get className(){return s("kvlist jsonvarlist")}itemRenderer(_,O,I,G){const w=document.createElement("span");w.setAttribute("title",I),w.textContent=I,_.appendChild(w);const e=G&&G.value!==void 0?G.value:G;PhpDebugBar.Widgets.renderValueInto(O,e),G&&G.xdebug_link&&O.appendChild(PhpDebugBar.Widgets.editorLink(G.xdebug_link))}}PhpDebugBar.Widgets.JsonVariableListWidget=P})();})(); diff --git a/resources/icons.css b/resources/icons.css index 2e836382..fbd79f36 100644 --- a/resources/icons.css +++ b/resources/icons.css @@ -22,6 +22,7 @@ --debugbar-icon-inbox: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206a2%202%200%200%201%202%20-2h12a2%202%200%200%201%202%202v12a2%202%200%200%201%20-2%202h-12a2%202%200%200%201%20-2%20-2l0%20-12%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2013h3l3%203h4l3%20-3h3%22%20%2F%3E%20%3C%2Fsvg%3E'); --debugbar-icon-leaf: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2021c.5%20-4.5%202.5%20-8%207%20-10%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018c6.218%200%2010.5%20-3.288%2011%20-12v-2h-4.014c-9%200%20-11.986%204%20-12%209c0%201%200%203%202%205h3l.014%200%22%20%2F%3E%20%3C%2Fsvg%3E'); --debugbar-icon-list: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M9%206l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2012l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M9%2018l11%200%22%20%2F%3E%20%3Cpath%20d%3D%22M5%206l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2012l0%20.01%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2018l0%20.01%22%20%2F%3E%20%3C%2Fsvg%3E'); + --debugbar-icon-list-details: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M13%205h8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%209h5%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2015h8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%2019h5%22%20%2F%3E%20%3Cpath%20d%3D%22M3%205a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2015a1%201%200%200%201%201%20-1h4a1%201%200%200%201%201%201v4a1%201%200%200%201%20-1%201h-4a1%201%200%200%201%20-1%20-1l0%20-4%22%20%2F%3E%20%3C%2Fsvg%3E'); --debugbar-icon-logs: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2012h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%206h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M4%2018h.01%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2018h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2012h2%22%20%2F%3E%20%3Cpath%20d%3D%22M8%206h2%22%20%2F%3E%20%3Cpath%20d%3D%22M14%206h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2012h6%22%20%2F%3E%20%3Cpath%20d%3D%22M14%2018h6%22%20%2F%3E%20%3C%2Fsvg%3E'); --debugbar-icon-mobiledata: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M16%2012v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M8%2020v-8%22%20%2F%3E%20%3Cpath%20d%3D%22M13%207l3%20-3l3%203%22%20%2F%3E%20%3Cpath%20d%3D%22M5%2017l3%203l3%20-3%22%20%2F%3E%20%3C%2Fsvg%3E'); --debugbar-icon-search: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22currentColor%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20%3E%20%3Cpath%20stroke%3D%22none%22%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%20%2F%3E%20%3Cpath%20d%3D%22M3%2010a7%207%200%201%200%2014%200a7%207%200%201%200%20-14%200%22%20%2F%3E%20%3Cpath%20d%3D%22M21%2021l-6%20-6%22%20%2F%3E%20%3C%2Fsvg%3E'); @@ -144,6 +145,11 @@ mask-image: var(--debugbar-icon-list); } +.phpdebugbar-icon-list-details::before { + -webkit-mask-image: var(--debugbar-icon-list-details); + mask-image: var(--debugbar-icon-list-details); +} + .phpdebugbar-icon-logs::before { -webkit-mask-image: var(--debugbar-icon-logs); mask-image: var(--debugbar-icon-logs); diff --git a/src/DataCollector/DataCollector.php b/src/DataCollector/DataCollector.php index 6423883e..9cae7d86 100644 --- a/src/DataCollector/DataCollector.php +++ b/src/DataCollector/DataCollector.php @@ -25,6 +25,7 @@ abstract class DataCollector implements DataCollectorInterface use HasDataFormatter; use HasXdebugLinks; use HidesMaskedValues; + use SummarizesData; public static ?DataFormatterInterface $defaultDataFormatter = null; } diff --git a/src/DataCollector/ExceptionsCollector.php b/src/DataCollector/ExceptionsCollector.php index b654865d..c9c24494 100644 --- a/src/DataCollector/ExceptionsCollector.php +++ b/src/DataCollector/ExceptionsCollector.php @@ -141,12 +141,84 @@ public function getExceptions(): array public function collect(): array { + $exceptions = array_map([$this, 'formatThrowableData'], $this->exceptions); + return [ 'count' => count($this->exceptions), - 'exceptions' => array_map([$this, 'formatThrowableData'], $this->exceptions), + 'exceptions' => $exceptions, + 'summary' => $this->buildSummary($exceptions), ]; } + /** + * What was thrown and where, with a few frames of context. + * + * Full traces are mostly vendor noise, so only the first application frames are kept. + * + * @param array> $exceptions + * + * @return array + */ + protected function buildSummary(array $exceptions, int $max = 5, int $maxFrames = 5): array + { + if (!$exceptions) { + return []; + } + + $summary = ['count' => count($exceptions)]; + + $items = []; + foreach (array_slice($exceptions, 0, $max) as $exception) { + $item = [ + 'type' => $exception['type'] ?? 'Unknown', + 'message' => $exception['message'] ?? '', + 'at' => ($exception['file'] ?? '?') . ':' . ($exception['line'] ?? '?'), + ]; + + if (($exception['count'] ?? 1) > 1) { + $item['occurrences'] = $exception['count']; + } + + $trace = $this->summarizeTrace($exception['stack_trace'] ?? null, $maxFrames); + if ($trace) { + $item['trace'] = $trace; + } + + $items[] = $item; + } + + if ($items) { + $summary['exceptions'] = $items; + } + + $extra = count($exceptions) - $max; + if ($extra > 0) { + $summary['not_shown'] = $extra; + } + + return $summary; + } + + /** + * Keeps the first application frames of a formatted stack trace, falling back to + * the raw frames when everything is vendor code. + * + * @return array + */ + protected function summarizeTrace(?string $stackTrace, int $maxFrames): array + { + if (!$stackTrace) { + return []; + } + + $frames = array_values(array_filter(array_map('trim', explode("\n", $stackTrace)))); + $app = array_values(array_filter($frames, function ($frame): bool { + return !str_contains($frame, '/vendor/') && !str_contains($frame, '\\vendor\\'); + })); + + return array_slice($app ?: $frames, 0, $maxFrames); + } + /** * Returns Throwable trace as an formated array * @@ -269,6 +341,9 @@ public function getWidgets(): array 'map' => "$name.count", 'default' => 'null', ], + "$name:summary" => [ + 'map' => "$name.summary", + ], ]; } } diff --git a/src/DataCollector/HidesMaskedValues.php b/src/DataCollector/HidesMaskedValues.php index 4c67a0fa..676ca50c 100644 --- a/src/DataCollector/HidesMaskedValues.php +++ b/src/DataCollector/HidesMaskedValues.php @@ -29,6 +29,34 @@ public function hideMaskedValues(array $data, ?string $prefix = null): mixed return $data; } + /** + * Masks the values of sensitive query string parameters within a URI. + * + * Only the values are replaced; keys, ordering and encoding are preserved so + * the result stays recognisable as the original request. + */ + public function hideMaskedUri(string $uri): string + { + $pos = strpos($uri, '?'); + if ($pos === false || $pos === strlen($uri) - 1) { + return $uri; + } + + $path = substr($uri, 0, $pos + 1); + $pairs = explode('&', substr($uri, $pos + 1)); + + foreach ($pairs as $i => $pair) { + [$key, $value] = array_pad(explode('=', $pair, 2), 2, null); + if ($value === null || !$this->isMaskedKey(urldecode($key))) { + continue; + } + // Not re-encoded: the mask is a display artifact, and %2A%2A%2A reads as noise + $pairs[$i] = $key . '=' . $this->maskValue(urldecode($value)); + } + + return $path . implode('&', $pairs); + } + public function addMaskedKeys(array $keys): void { foreach ($keys as $key) { diff --git a/src/DataCollector/HttpCollector.php b/src/DataCollector/HttpCollector.php index 1084ca66..15175f04 100644 --- a/src/DataCollector/HttpCollector.php +++ b/src/DataCollector/HttpCollector.php @@ -41,6 +41,9 @@ public function getWidgets(): array 'map' => $name . '.nb_requests', 'default' => 0, ], + "$name:summary" => [ + 'map' => $name . '.summary', + ], ]; } @@ -78,6 +81,52 @@ public function collect(): array return [ 'nb_requests' => count($this->requests), 'requests' => $this->requests, + 'summary' => $this->buildSummary(), ]; } + + /** + * One line per outgoing call, failures first so they are not buried. + * + * @return array + */ + protected function buildSummary(int $max = 15): array + { + if (!$this->requests) { + return []; + } + + $summary = ['requests' => count($this->requests)]; + + $failed = []; + $lines = []; + foreach ($this->requests as $request) { + $line = sprintf( + '%s %s -> %s%s', + $request['method'], + $this->summarizeText((string) $request['url'], 120), + $request['status'] ?? '?', + $request['duration'] ? ' (' . $request['duration'] . ')' : '', + ); + + if ($request['status'] === null || $request['status'] >= 400) { + $failed[] = $line; + } else { + $lines[] = $line; + } + } + + if ($failed) { + $summary['failed'] = count($failed); + } + + $calls = array_merge($failed, $lines); + $extra = count($calls) - $max; + $summary['calls'] = array_slice($calls, 0, $max); + if ($extra > 0) { + $summary['not_shown'] = $extra; + } + + return $summary; + } } diff --git a/src/DataCollector/MemoryCollector.php b/src/DataCollector/MemoryCollector.php index 4d07111e..666f64e9 100644 --- a/src/DataCollector/MemoryCollector.php +++ b/src/DataCollector/MemoryCollector.php @@ -85,9 +85,49 @@ public function collect(): array return [ 'peak_usage' => $this->getPeakUsage(), 'peak_usage_str' => $this->getDataFormatter()->formatBytes($this->getPeakUsage(), $this->precision), + 'summary' => $this->buildSummary(), ]; } + /** + * Peak usage on its own says little; relative to the limit it is actionable. + * + * @return array + */ + protected function buildSummary(): array + { + $peak = $this->getPeakUsage(); + $summary = [ + 'peak_usage' => $this->getDataFormatter()->formatBytes($peak, $this->precision), + ]; + + $limit = $this->getMemoryLimit(); + if ($limit > 0) { + $summary['limit'] = $this->getDataFormatter()->formatBytes($limit); + $summary['limit_used'] = round($peak / $limit * 100) . '%'; + } + + return $summary; + } + + /** + * Returns the memory_limit in bytes, or -1 when unlimited or unparseable. + */ + protected function getMemoryLimit(): int + { + $limit = trim((string) ini_get('memory_limit')); + if ($limit === '' || !preg_match('/^(\d+)\s*([KMG])?$/i', $limit, $matches)) { + return -1; + } + + return (int) $matches[1] * match (strtoupper($matches[2] ?? '')) { + 'G' => 1024 ** 3, + 'M' => 1024 ** 2, + 'K' => 1024, + default => 1, + }; + } + public function getName(): string { return 'memory'; @@ -102,6 +142,9 @@ public function getWidgets(): array "map" => "memory.peak_usage_str", "default" => "'0B'", ], + "memory:summary" => [ + "map" => "memory.summary", + ], ]; } } diff --git a/src/DataCollector/MessagesCollector.php b/src/DataCollector/MessagesCollector.php index add95aee..613cf1bb 100644 --- a/src/DataCollector/MessagesCollector.php +++ b/src/DataCollector/MessagesCollector.php @@ -27,6 +27,7 @@ class MessagesCollector extends AbstractLogger implements DataCollectorInterface use HasDataFormatter; use HasXdebugLinks; use HasTimeDataCollector; + use SummarizesData; protected string $name; @@ -306,15 +307,67 @@ public function clear(): void $this->messages = []; } + /** Levels whose message text is worth quoting verbatim in a summary. */ + protected const IMPORTANT_LABELS = ['emergency', 'alert', 'critical', 'error', 'warning']; + public function collect(): array { $messages = $this->getMessages(); return [ 'count' => count($messages), 'messages' => $messages, + 'summary' => $this->buildSummary($messages), ]; } + /** + * Counts per level, plus the text of everything at warning or above. + * + * Errors and warnings are few and are the reason anyone opens this tab, so they are + * quoted in full; debug/info noise is reduced to a count. + * + * @param array> $messages + * + * @return array + */ + protected function buildSummary(array $messages, int $max = 10): array + { + if (!$messages) { + return []; + } + + $summary = ['count' => count($messages)]; + + $counts = []; + $important = []; + foreach ($messages as $message) { + $label = (string) ($message['label'] ?? 'info'); + $counts[$label] = ($counts[$label] ?? 0) + 1; + + if (!in_array(strtolower($label), static::IMPORTANT_LABELS, true)) { + continue; + } + + $text = $message['message'] ?? null; + $important[] = strtoupper($label) . ': ' . ($text === null + ? '(non-string message, see the panel)' + : $this->summarizeText((string) $text)); + } + + arsort($counts); + $summary['by_label'] = $counts; + + if ($important) { + $extra = count($important) - $max; + $summary['important'] = array_slice($important, 0, $max); + if ($extra > 0) { + $summary['not_shown'] = $extra; + } + } + + return $summary; + } + public function getName(): string { return $this->name; @@ -334,6 +387,9 @@ public function getWidgets(): array "map" => "$name.count", "default" => "null", ], + "$name:summary" => [ + "map" => "$name.summary", + ], ]; } } diff --git a/src/DataCollector/ObjectCountCollector.php b/src/DataCollector/ObjectCountCollector.php index 83cab1e4..71e23046 100644 --- a/src/DataCollector/ObjectCountCollector.php +++ b/src/DataCollector/ObjectCountCollector.php @@ -81,6 +81,8 @@ public function collect(): array $collect['badges'] = $this->classSummary; } + $collect['summary'] = $this->buildSummary(); + if (! $this->getXdebugLinkTemplate()) { return $collect; } @@ -96,6 +98,35 @@ public function collect(): array return $collect; } + /** + * The heaviest counts, which read as an N+1 signal next to the query count. + * + * @return array + */ + protected function buildSummary(int $max = 5): array + { + if (!$this->classList) { + return []; + } + + $summary = ['count' => $this->classCount]; + + $lines = []; + foreach (array_slice($this->classList, 0, $max, true) as $class => $counts) { + $lines[] = $class . ' = ' . array_sum($counts); + } + if ($lines) { + $summary['top'] = $lines; + } + + $extra = count($this->classList) - $max; + if ($extra > 0) { + $summary['not_shown'] = $extra; + } + + return $summary; + } + public function getName(): string { return $this->name; @@ -116,6 +147,9 @@ public function getWidgets(): array 'map' => "$name.count", 'default' => 0, ], + "$name:summary" => [ + 'map' => "$name.summary", + ], ]; } } diff --git a/src/DataCollector/PDO/PDOCollector.php b/src/DataCollector/PDO/PDOCollector.php index 318dc4b5..6d0cd90f 100644 --- a/src/DataCollector/PDO/PDOCollector.php +++ b/src/DataCollector/PDO/PDOCollector.php @@ -124,6 +124,7 @@ public function collect(): array $data = [ 'nb_statements' => 0, 'nb_failed_statements' => 0, + 'nb_duplicate_statements' => 0, 'accumulated_duration' => 0, 'memory_usage' => 0, 'peak_memory_usage' => 0, @@ -134,6 +135,7 @@ public function collect(): array $pdodata = $this->collectPDO($pdo, $name); $data['nb_statements'] += $pdodata['nb_statements']; $data['nb_failed_statements'] += $pdodata['nb_failed_statements']; + $data['nb_duplicate_statements'] += $pdodata['nb_duplicate_statements']; $data['accumulated_duration'] += $pdodata['accumulated_duration']; $data['memory_usage'] += $pdodata['memory_usage']; $data['peak_memory_usage'] = max($data['peak_memory_usage'], $pdodata['peak_memory_usage']); @@ -149,10 +151,69 @@ public function collect(): array $data['accumulated_duration_str'] = $this->getDataFormatter()->formatDuration($data['accumulated_duration']); $data['memory_usage_str'] = $this->getDataFormatter()->formatBytes($data['memory_usage']); $data['peak_memory_usage_str'] = $this->getDataFormatter()->formatBytes($data['peak_memory_usage']); + $data['summary'] = $this->buildSummary($data); return $data; } + /** + * The query story in a handful of lines: how many, how long, what repeated and what failed. + * + * Duplicate counting happens per connection on the raw SQL (see collectPDO), so it still + * spots N+1 patterns when statements are rendered with their bindings inlined. + * + * @param array $data + * + * @return array + */ + protected function buildSummary(array $data, int $slowest = 3, int $maxErrors = 5): array + { + if ($data['nb_statements'] === 0) { + return []; + } + + $summary = [ + 'statements' => $data['nb_statements'], + 'duration' => $data['accumulated_duration_str'], + ]; + + if ($data['nb_duplicate_statements'] > 0) { + $summary['duplicates'] = $data['nb_duplicate_statements']; + } + if ($data['nb_failed_statements'] > 0) { + $summary['failed'] = $data['nb_failed_statements']; + } + + $statements = $data['statements']; + usort($statements, fn($a, $b) => ($b['duration'] ?? 0) <=> ($a['duration'] ?? 0)); + + $lines = []; + foreach (array_slice($statements, 0, $slowest) as $statement) { + $lines[] = $this->summarizeText($statement['sql'] ?? '', 120) + . ' = ' . ($statement['duration_str'] ?? '?'); + } + if ($lines) { + $summary['slowest'] = $lines; + } + + // Failed statements are the likeliest to be missing fields, so nothing is assumed. + $errors = []; + foreach ($data['statements'] as $statement) { + if (!($statement['is_success'] ?? true)) { + $errors[] = $this->summarizeText($statement['sql'] ?? '', 120) + . ' -> ' . ($statement['error_message'] ?? 'unknown error'); + } + } + if ($errors) { + $extra = count($errors) - $maxErrors; + $summary['errors'] = $extra > 0 + ? array_merge(array_slice($errors, 0, $maxErrors), ["(+{$extra} more)"]) + : $errors; + } + + return $summary; + } + /** * Collects data from a single TraceablePDO instance */ @@ -164,9 +225,11 @@ protected function collectPDO(TraceablePDO $pdo, ?string $connectionName = null) $connectionName = 'pdo ' . $connectionName; } $stmts = []; + $sqlCounts = []; foreach ($pdo->getExecutedStatements() as $stmt) { $sql = $stmt->getSql(); + $sqlCounts[$sql] = ($sqlCounts[$sql] ?? 0) + 1; $params = $stmt->getParameters(); if ($this->renderSqlWithParams) { $sql = $this->getQueryFormatter()->formatSqlWithBindings($sql, $params, $pdo); @@ -217,6 +280,7 @@ protected function collectPDO(TraceablePDO $pdo, ?string $connectionName = null) return [ 'nb_statements' => count($stmts), 'nb_failed_statements' => count($pdo->getFailedExecutedStatements()), + 'nb_duplicate_statements' => array_sum($sqlCounts) - count($sqlCounts), 'accumulated_duration' => $totalTime, 'accumulated_duration_str' => $this->getDataFormatter()->formatDuration($totalTime), 'memory_usage' => $pdo->getMemoryUsage(), @@ -245,6 +309,9 @@ public function getWidgets(): array "map" => "pdo.nb_statements", "default" => 0, ], + "database:summary" => [ + "map" => "pdo.summary", + ], ]; } diff --git a/src/DataCollector/RequestDataCollector.php b/src/DataCollector/RequestDataCollector.php index ea01fabb..f5f6d7a6 100644 --- a/src/DataCollector/RequestDataCollector.php +++ b/src/DataCollector/RequestDataCollector.php @@ -51,9 +51,51 @@ public function collect(): array 'data' => $data, 'tooltip' => null, 'badge' => null, + 'summary' => $this->buildSummary($requestUri ?? null), ]; } + /** + * Builds the summary for this request. + * + * Summaries are meant to be copied out of the browser (into an issue, a chat or an + * LLM), so only parameter *names* are listed here; the values stay in the panel. + * The URI is the one exception, and its query string is masked. + * + * @return array + */ + protected function buildSummary(?string $requestUri): array + { + $status = http_response_code(); + + return array_filter([ + 'method' => $_SERVER['REQUEST_METHOD'] ?? (php_sapi_name() === 'cli' ? 'CLI' : null), + 'uri' => $requestUri !== null ? $this->hideMaskedUri($requestUri) : null, + 'status' => is_int($status) ? $status : null, + 'get' => $this->summarizeKeys($_GET), + 'post' => $this->summarizeKeys($_POST), + 'cookie' => $this->summarizeKeys($_COOKIE), + 'session' => $this->summarizeKeys($_SESSION ?? []), + ], fn($value) => $value !== null); + } + + /** + * Lists the keys of a superglobal, capped so a large session doesn't flood the summary. + */ + protected function summarizeKeys(array $values, int $max = 10): ?string + { + if (!$values) { + return null; + } + + $keys = array_map('strval', array_keys($values)); + $extra = count($keys) - $max; + + return $extra > 0 + ? implode(', ', array_slice($keys, 0, $max)) . " (+{$extra} more)" + : implode(', ', $keys); + } + public function setShowUriIndicator(bool $showUriIndicator = true): void { $this->showUriIndicator = $showUriIndicator; @@ -93,6 +135,9 @@ public function getWidgets(): array "map" => "request.badge", "default" => "null", ], + 'request:summary' => [ + "map" => "request.summary", + ] ]; if ($this->showUriIndicator) { diff --git a/src/DataCollector/SummarizesData.php b/src/DataCollector/SummarizesData.php new file mode 100644 index 00000000..fed32f55 --- /dev/null +++ b/src/DataCollector/SummarizesData.php @@ -0,0 +1,24 @@ + $maxLength ? mb_substr($text, 0, $maxLength - 1) . '…' : $text; + } +} diff --git a/src/DataCollector/TemplateCollector.php b/src/DataCollector/TemplateCollector.php index c6f3b934..c73efba3 100644 --- a/src/DataCollector/TemplateCollector.php +++ b/src/DataCollector/TemplateCollector.php @@ -51,6 +51,9 @@ public function getWidgets(): array 'map' => $name . '.nb_templates', 'default' => 0, ], + "$name:summary" => [ + 'map' => $name . '.summary', + ], ]; } @@ -122,6 +125,40 @@ public function collect(): array 'count' => count($this->templates), 'nb_templates' => count($this->templates), 'templates' => $templates, + 'summary' => $this->buildSummary(), ]; } + + /** + * How many templates rendered, and which ones rendered more than once. + * + * @return array + */ + protected function buildSummary(int $max = 5): array + { + if (!$this->templates) { + return []; + } + + $summary = ['rendered' => count($this->templates)]; + + $counts = []; + foreach ($this->templates as $template) { + $name = (string) $template['name']; + $counts[$name] = ($counts[$name] ?? 0) + 1; + } + + $repeated = array_filter($counts, fn($count) => $count > 1); + arsort($repeated); + + $lines = []; + foreach (array_slice($repeated, 0, $max, true) as $name => $count) { + $lines[] = $count . 'x ' . $name; + } + if ($lines) { + $summary['repeated'] = $lines; + } + + return $summary; + } } diff --git a/src/DataCollector/TimeDataCollector.php b/src/DataCollector/TimeDataCollector.php index 0099b71f..59662988 100644 --- a/src/DataCollector/TimeDataCollector.php +++ b/src/DataCollector/TimeDataCollector.php @@ -246,9 +246,44 @@ public function collect(): array 'duration' => $this->getRequestDuration(), 'duration_str' => $this->getDataFormatter()->formatDuration($this->getRequestDuration()), 'measures' => $this->measures, + 'summary' => $this->buildSummary(), ]; } + /** + * Where the time went: the total, and the handful of measures that account for it. + * + * @return array + */ + protected function buildSummary(int $slowest = 3): array + { + $duration = $this->getRequestDuration(); + + $summary = [ + 'duration' => $this->getDataFormatter()->formatDuration($duration), + 'measures' => count($this->measures), + ]; + + $measures = $this->measures; + usort($measures, fn($a, $b) => $b['duration'] <=> $a['duration']); + + $lines = []; + foreach (array_slice($measures, 0, $slowest) as $measure) { + // Measures added with an explicit start/end can outlast the request itself, + // and a share above 100% reads as a bug, so it is left off in that case + $share = $duration > 0 ? round($measure['duration'] / $duration * 100) : 0; + $lines[] = $share > 0 && $share <= 100 + ? sprintf('%s = %s (%d%%)', $measure['label'], $measure['duration_str'], $share) + : sprintf('%s = %s', $measure['label'], $measure['duration_str']); + } + + if ($lines) { + $summary['slowest'] = $lines; + } + + return $summary; + } + public function getName(): string { return 'time'; @@ -270,6 +305,9 @@ public function getWidgets(): array "map" => "time", "default" => "{}", ], + "timeline:summary" => [ + "map" => "time.summary", + ], ]; } } diff --git a/src/DebugBar.php b/src/DebugBar.php index 1303399e..5e3bd547 100644 --- a/src/DebugBar.php +++ b/src/DebugBar.php @@ -310,6 +310,19 @@ public function getData(): array return $this->data; } + /** + * Returns the collected summaries as plain text, ready to paste into an issue, + * a chat or a prompt. + * + * Will collect the data if none have been collected yet. + * + * @param null|array $data Dataset to summarize, defaults to the current one + */ + public function getSummary(?array $data = null): string + { + return (new SummaryFormatter($this))->format($data ?? $this->getData()); + } + public function reset(): void { $this->requestId = null; diff --git a/src/JavascriptRenderer.php b/src/JavascriptRenderer.php index 618f982a..c4ed250a 100644 --- a/src/JavascriptRenderer.php +++ b/src/JavascriptRenderer.php @@ -1449,8 +1449,8 @@ protected function getJsControlsDefinitionCode(string $varname): string ); } - if (isset($options['map']) && isset($options['default'])) { - $dataMap[$name] = [$options['map'], $options['default']]; + if (isset($options['map'])) { + $dataMap[$name] = [$options['map'], $options['default'] ?? 'null']; } } diff --git a/src/OpenHandler.php b/src/OpenHandler.php index 179029ce..9796aac6 100644 --- a/src/OpenHandler.php +++ b/src/OpenHandler.php @@ -59,24 +59,30 @@ public function handle(?array $request = null, bool $echo = true, bool $sendHead throw new DebugBarException("DebugBar must have a storage backend to use OpenHandler"); } - try { - $response = match ($op) { - 'find' => $this->find($request), - 'get' => $this->get($request), - 'clear' => $this->clear(), - }; - } catch (\UnhandledMatchError $e) { - throw new DebugBarException("Invalid operation '{$request['op']}'"); - } + if ($op === 'summary') { + $response = $this->summary($request); + $contentType = 'text/plain; charset=utf-8'; + } else { + try { + $data = match ($op) { + 'find' => $this->find($request), + 'get' => $this->get($request), + 'clear' => $this->clear(), + }; + } catch (\UnhandledMatchError $e) { + throw new DebugBarException("Invalid operation '{$request['op']}'"); + } - $response = json_encode($response); - if ($response === false) { - throw new DebugBarException("Invalid JSON response"); + $response = json_encode($data); + if ($response === false) { + throw new DebugBarException("Invalid JSON response"); + } + $contentType = 'application/json'; } if ($sendHeader) { $this->debugBar->getHttpDriver()->setHeaders([ - 'Content-Type' => 'application/json', + 'Content-Type' => $contentType, ]); } @@ -130,6 +136,44 @@ protected function get(array $request): array return $this->storage->get((string) $request['id']); } + /** + * Summary operation + * + * Returns a stored dataset as plain text rather than JSON, so tooling that can't + * render the bar - a terminal, a CI job, an agent driving the app over HTTP - can + * read what happened during a request. Omit 'id' to summarize the latest dataset. + * + * @param array $request + * + * @throws DebugBarException + */ + protected function summary(array $request): string + { + $id = isset($request['id']) ? (string) $request['id'] : $this->getLatestId(); + if ($id === null) { + throw new DebugBarException("No dataset to summarize"); + } + + return $this->debugBar->getSummary($this->storage->get($id)); + } + + /** + * Returns the id of the most recently stored dataset, if any. + */ + protected function getLatestId(): ?string + { + $latest = $this->storage->find([], 1, 0); + $meta = reset($latest); + if (!is_array($meta)) { + return null; + } + + // Storage backends return metadata rows, but some return whole datasets + $id = $meta['id'] ?? $meta['__meta']['id'] ?? null; + + return $id !== null ? (string) $id : null; + } + /** * Clear operation */ diff --git a/src/SummaryFormatter.php b/src/SummaryFormatter.php new file mode 100644 index 00000000..b198ae7b --- /dev/null +++ b/src/SummaryFormatter.php @@ -0,0 +1,228 @@ +:summary` widget for it. This formatter turns those into something you can + * paste into an issue, a chat, or a prompt, which is also what `OpenHandler` serves for + * the `summary` operation. + */ +class SummaryFormatter +{ + /** Safety net so a misbehaving collector can't produce an unpastable wall of text. */ + public const MAX_LENGTH = 20000; + + protected DebugBar $debugBar; + + public function __construct(DebugBar $debugBar) + { + $this->debugBar = $debugBar; + } + + /** + * Formats a dataset (as returned by DebugBar::getData() or a storage backend). + * + * @param array $data + */ + public function format(array $data, int $maxLength = self::MAX_LENGTH): string + { + $meta = is_array($data['__meta'] ?? null) ? $data['__meta'] : []; + + $blocks = ['# PHP DebugBar summary']; + + // The raw URI in __meta is unmasked, so it is deliberately not repeated here; + // the request collector contributes a masked one. The client IP is left out for + // the same reason: summaries are meant to be pasted into issues, chats and prompts. + $header = array_filter([ + 'id' => $meta['id'] ?? null, + 'datetime' => $meta['datetime'] ?? null, + 'method' => $meta['method'] ?? null, + ], fn($value) => $value !== null && $value !== ''); + + if ($header) { + $blocks[] = self::formatValue($header); + } + + foreach ($this->getSections($data) as $title => $summary) { + $body = self::formatValue($summary); + if (trim($body) === '') { + continue; + } + $blocks[] = "## {$title}\n{$body}"; + } + + $text = implode("\n\n", $blocks); + + if (mb_strlen($text) > $maxLength) { + $text = mb_substr($text, 0, $maxLength) . "\n\n(summary truncated)"; + } + + return $text; + } + + /** + * Returns the summaries in a dataset, keyed by the title of the control owning them. + * + * @param array $data + * + * @return array + */ + public function getSections(array $data): array + { + $sections = []; + $seen = []; + + foreach ($this->getSummaryMaps() as $title => $map) { + $summary = $this->getDictValue($data, $map); + if ($summary === null || $summary === [] || $summary === '') { + continue; + } + $sections[$title] = $summary; + $seen[$map] = true; + } + + // Datasets opened from storage may predate the current collector set, or come from + // an app that registers collectors this process doesn't know. Pick those up too. + foreach ($data as $name => $collected) { + $map = "{$name}.summary"; + if ($name === '__meta' || !is_array($collected) || isset($seen[$map])) { + continue; + } + $summary = $collected['summary'] ?? null; + if ($summary === null || $summary === [] || $summary === '') { + continue; + } + $sections[self::titleize((string) $name)] = $summary; + } + + return $sections; + } + + /** + * Maps every declared `:summary` widget to its dotted data path. + * + * @return array title => map + */ + protected function getSummaryMaps(): array + { + $widgets = []; + foreach ($this->debugBar->getCollectors() as $collector) { + if ($collector instanceof Renderable) { + $widgets = array_merge($widgets, $collector->getWidgets()); + } + } + + $maps = []; + foreach ($widgets as $name => $options) { + if (!str_ends_with((string) $name, ':summary') || !isset($options['map'])) { + continue; + } + + $control = substr((string) $name, 0, -strlen(':summary')); + $title = $widgets[$control]['title'] ?? self::titleize($control); + $maps[$title] = (string) $options['map']; + } + + return $maps; + } + + /** + * Formats a summary value as indented plain text. + * + * Lists become `- item` lines and maps become `key = value` lines, matching the + * rendering in the javascript bar so both produce the same text. + */ + public static function formatValue(mixed $value, string $indent = ''): string + { + if ($value instanceof \stdClass) { + $value = (array) $value; + } + + if (!is_array($value)) { + return $indent . self::formatScalar($value); + } + + $lines = []; + $isList = array_is_list($value); + + foreach ($value as $key => $item) { + $nested = is_array($item) || $item instanceof \stdClass; + + if ($isList) { + if (!$nested) { + $lines[] = $indent . '- ' . self::formatScalar($item); + continue; + } + // Hoist the first line of the nested block onto the bullet, YAML style. + $block = self::formatValue($item, $indent . ' '); + if (trim($block) === '') { + continue; + } + $lines[] = substr_replace($block, '- ', strlen($indent), 2); + continue; + } + + if ($nested) { + $lines[] = $indent . $key . ':'; + $lines[] = self::formatValue($item, $indent . ' '); + continue; + } + + $lines[] = $indent . $key . ' = ' . self::formatScalar($item); + } + + return implode("\n", $lines); + } + + protected static function formatScalar(mixed $value): string + { + return match (true) { + $value === null => 'null', + is_bool($value) => $value ? 'true' : 'false', + is_scalar($value) => (string) $value, + default => json_encode($value) ?: '', + }; + } + + protected static function titleize(string $name): string + { + return ucfirst(str_replace(['_', '-'], ' ', $name)); + } + + /** + * Resolves a dotted path within a dataset. + * + * @param array $data + */ + protected function getDictValue(array $data, string $path): mixed + { + $value = $data; + foreach (explode('.', $path) as $part) { + if (is_object($value)) { + $value = (array) $value; + } + if (!is_array($value) || !array_key_exists($part, $value)) { + return null; + } + $value = $value[$part]; + } + + return $value; + } +} diff --git a/tests/Tests/DataCollector/RequestDataCollectorTest.php b/tests/Tests/DataCollector/RequestDataCollectorTest.php new file mode 100644 index 00000000..df16e622 --- /dev/null +++ b/tests/Tests/DataCollector/RequestDataCollectorTest.php @@ -0,0 +1,87 @@ +collector = new RequestDataCollector(); + } + + public function testLeavesUrisWithoutSensitiveParamsAlone(): void + { + $uri = '/orders?page=2&sort=created_at'; + + $this->assertEquals($uri, $this->collector->hideMaskedUri($uri)); + } + + public function testLeavesUrisWithoutAQueryStringAlone(): void + { + $this->assertEquals('/orders', $this->collector->hideMaskedUri('/orders')); + $this->assertEquals('/orders?', $this->collector->hideMaskedUri('/orders?')); + } + + public function testMasksSensitiveQueryParams(): void + { + $this->assertEquals( + '/callback?state=xyz&access_token=ab***yz', + $this->collector->hideMaskedUri('/callback?state=xyz&access_token=abcdefghijklmnopqrstuvwxyz') + ); + } + + public function testMasksNestedAndEncodedParamNames(): void + { + $this->assertEquals( + '/search?filter%5Bpassword%5D=hu***', + $this->collector->hideMaskedUri('/search?filter%5Bpassword%5D=hunter2') + ); + } + + public function testMasksExplicitlyAddedKeys(): void + { + $this->collector->addMaskedKeys(['email']); + + $this->assertEquals( + '/users?email=ba***nl', + $this->collector->hideMaskedUri('/users?email=barry@fruitcake.nl') + ); + } + + public function testKeepsValuelessParams(): void + { + $this->assertEquals('/orders?debug&token=****', $this->collector->hideMaskedUri('/orders?debug&token=abcd')); + } + + public function testSummaryListsParamNamesButNotValues(): void + { + $_GET = ['page' => '2', 'q' => 'secret search term']; + $_SERVER['REQUEST_URI'] = '/search'; + + $summary = $this->collector->collect()['summary']; + + $this->assertEquals('page, q', $summary['get']); + $this->assertStringNotContainsString('secret search term', json_encode($summary)); + + $_GET = []; + unset($_SERVER['REQUEST_URI']); + } + + public function testSummaryCapsLongKeyLists(): void + { + $_SESSION = array_fill_keys(array_map(fn($i) => "key$i", range(1, 13)), 'x'); + + $summary = $this->collector->collect()['summary']; + + $this->assertStringEndsWith('(+3 more)', $summary['session']); + + $_SESSION = []; + } +} diff --git a/tests/Tests/OpenHandlerTest.php b/tests/Tests/OpenHandlerTest.php index 6b679a8f..a881f66f 100644 --- a/tests/Tests/OpenHandlerTest.php +++ b/tests/Tests/OpenHandlerTest.php @@ -6,6 +6,7 @@ use DebugBar\DebugBarException; use DebugBar\OpenHandler; +use DebugBar\Tests\DataCollector\MockCollector; use DebugBar\Tests\Storage\MockStorage; class OpenHandlerTest extends DebugBarTestCase @@ -43,6 +44,35 @@ public function testGetMissingId(): void $this->openHandler->handle(['op' => 'get'], false, false); } + public function testSummary(): void + { + $this->debugbar->addCollector(new MockCollector( + ['summary' => ['answer' => 42]], + 'mock', + ['mock' => ['widget' => 'Foo'], 'mock:summary' => ['map' => 'mock.summary']] + )); + $this->debugbar->getStorage()->save('bar', ['__meta' => ['id' => 'bar'], 'mock' => ['summary' => ['answer' => 42]]]); + + $result = $this->openHandler->handle(['op' => 'summary', 'id' => 'bar'], false, false); + + $this->assertStringContainsString('# PHP DebugBar summary', $result); + $this->assertStringContainsString("## Mock\nanswer = 42", $result); + } + + public function testSummarySendsPlainText(): void + { + $this->openHandler->handle(['op' => 'summary', 'id' => 'foo'], false, true); + + $this->assertEquals('text/plain; charset=utf-8', $this->httpDriver->headers['Content-Type']); + } + + public function testSummaryWithoutIdUsesTheLatestDataset(): void + { + $result = $this->openHandler->handle(['op' => 'summary'], false, false); + + $this->assertStringContainsString('id = foo', $result); + } + public function testClear(): void { $result = $this->openHandler->handle(['op' => 'clear'], false, false); diff --git a/tests/Tests/SummaryFormatterTest.php b/tests/Tests/SummaryFormatterTest.php new file mode 100644 index 00000000..e2ac35e6 --- /dev/null +++ b/tests/Tests/SummaryFormatterTest.php @@ -0,0 +1,158 @@ +assertEquals( + "count = 2\nfailed = false", + SummaryFormatter::formatValue(['count' => 2, 'failed' => false]) + ); + } + + public function testFormatsListsAsBullets(): void + { + $this->assertEquals( + "- first\n- second", + SummaryFormatter::formatValue(['first', 'second']) + ); + } + + public function testIndentsNestedValues(): void + { + $summary = [ + 'count' => 1, + 'exceptions' => [ + ['type' => 'RuntimeException', 'at' => 'Foo.php:12', 'trace' => ['Bar.php(3)']], + ], + ]; + + $this->assertEquals( + implode("\n", [ + 'count = 1', + 'exceptions:', + ' - type = RuntimeException', + ' at = Foo.php:12', + ' trace:', + ' - Bar.php(3)', + ]), + SummaryFormatter::formatValue($summary) + ); + } + + public function testFormatsNullAndScalars(): void + { + $this->assertEquals('null', SummaryFormatter::formatValue(null)); + $this->assertEquals('true', SummaryFormatter::formatValue(true)); + $this->assertEquals('12', SummaryFormatter::formatValue(12)); + } + + public function testGetSummaryUsesDeclaredSummaryWidgets(): void + { + $this->debugbar->addCollector(new MockCollector( + ['summary' => ['answer' => 42]], + 'mock', + ['mock' => ['widget' => 'Foo', 'map' => 'mock'], 'mock:summary' => ['map' => 'mock.summary']] + )); + + $summary = $this->debugbar->getSummary(); + + $this->assertStringContainsString('# PHP DebugBar summary', $summary); + $this->assertStringContainsString("## Mock\nanswer = 42", $summary); + } + + public function testGetSummaryPrefersTheDeclaredControlTitle(): void + { + $this->debugbar->addCollector(new MockCollector( + ['summary' => ['answer' => 42]], + 'mock', + ['mock' => ['widget' => 'Foo', 'title' => 'Custom title'], 'mock:summary' => ['map' => 'mock.summary']] + )); + + $this->assertStringContainsString('## Custom title', $this->debugbar->getSummary()); + } + + public function testGetSummaryFallsBackToDatasetsFromUnknownCollectors(): void + { + $formatter = new SummaryFormatter($this->debugbar); + + $sections = $formatter->getSections([ + '__meta' => ['id' => 'abc'], + 'unregistered' => ['summary' => ['hello' => 'world']], + ]); + + $this->assertEquals(['Unregistered' => ['hello' => 'world']], $sections); + } + + public function testGetSummarySkipsCollectorsWithoutASummary(): void + { + $this->debugbar->addCollector(new MessagesCollector()); + + $summary = $this->debugbar->getSummary(); + + // A collector with nothing to say contributes no section + $this->assertStringNotContainsString('## Messages', $summary); + } + + public function testGetSummaryIncludesMetaButNotTheUnmaskedUri(): void + { + $_SERVER['REQUEST_URI'] = '/checkout?token=super-secret-value'; + $this->debugbar->addCollector(new RequestDataCollector()); + + $summary = $this->debugbar->getSummary(); + + $this->assertStringContainsString('datetime = ', $summary); + $this->assertStringNotContainsString('super-secret-value', $summary); + $this->assertStringContainsString('uri = /checkout?token=su***ue', $summary); + + unset($_SERVER['REQUEST_URI']); + } + + public function testTruncatesOverlongSummaries(): void + { + $this->debugbar->addCollector(new MockCollector( + ['summary' => ['big' => str_repeat('x', 500)]], + 'mock', + ['mock' => ['widget' => 'Foo'], 'mock:summary' => ['map' => 'mock.summary']] + )); + + $formatter = new SummaryFormatter($this->debugbar); + $summary = $formatter->format($this->debugbar->getData(), 100); + + $this->assertStringEndsWith("\n\n(summary truncated)", $summary); + } + + public function testHeaderCarriesMethodButNeverTheClientIp(): void + { + $summary = $this->debugbar->getSummary([ + '__meta' => [ + 'id' => 'abc', + 'datetime' => '2026-08-20 14:34:29', + 'method' => 'POST', + 'uri' => '/checkout?token=secret', + 'ip' => '203.0.113.4', + ], + ]); + + $this->assertStringContainsString('method = POST', $summary); + $this->assertStringNotContainsString('203.0.113.4', $summary); + $this->assertStringNotContainsString('token=secret', $summary); + } + + public function testNestedEmptyListItemDoesNotProduceABareBullet(): void + { + $formatted = SummaryFormatter::formatValue(['a', [], ['k' => 'v']]); + + $this->assertStringNotContainsString("-\n", $formatted); + $this->assertSame("- a\n- k = v", $formatted); + } +} diff --git a/tests/Tests/full_init.html b/tests/Tests/full_init.html index 55917f57..d198cc1d 100644 --- a/tests/Tests/full_init.html +++ b/tests/Tests/full_init.html @@ -7,6 +7,7 @@ phpdebugbar.setDataMap({ "messages": ["messages.messages", []], "messages:badge": ["messages.count", null], +"messages:summary": ["messages.summary", null], "time": ["time", "0s"] }); phpdebugbar.restoreState();