{ "version": 3, "sources": ["../../../node_modules/.aspect_rules_js/lit-html@3.2.0/node_modules/lit-html/src/lit-html.ts", "../../../node_modules/.aspect_rules_js/lit@3.2.0/node_modules/lit/html.js", "../../../node_modules/.aspect_rules_js/lit-html@3.2.0/node_modules/lit-html/src/directives/choose.ts", "../../../node_modules/.aspect_rules_js/lit@3.2.0/node_modules/lit/directives/choose.js", "../../../elements-sk/modules/define.ts", "../../../elements-sk/modules/upgradeProperty.ts", "../../../infra-sk/modules/ElementSk/ElementSk.ts", "../../../infra-sk/modules/ElementSk/index.ts", "../../../elements-sk/modules/toast-sk/toast-sk.ts", "../../../elements-sk/modules/toast-sk/index.ts", "../../../elements-sk/modules/error-toast-sk/error-toast-sk.ts", "../../../elements-sk/modules/error-toast-sk/index.ts", "../../../elements-sk/modules/icons/add-alert-icon-sk/add-alert-icon-sk.ts", "../../../elements-sk/modules/icons/add-alert-icon-sk/index.ts", "../../../elements-sk/modules/icons/build-icon-sk/build-icon-sk.ts", "../../../elements-sk/modules/icons/build-icon-sk/index.ts", "../../../elements-sk/modules/icons/bug-report-icon-sk/bug-report-icon-sk.ts", "../../../elements-sk/modules/icons/bug-report-icon-sk/index.ts", "../../../elements-sk/modules/icons/event-icon-sk/event-icon-sk.ts", "../../../elements-sk/modules/icons/event-icon-sk/index.ts", "../../../elements-sk/modules/icons/favorite-icon-sk/favorite-icon-sk.ts", "../../../elements-sk/modules/icons/favorite-icon-sk/index.ts", "../../../elements-sk/modules/icons/folder-icon-sk/folder-icon-sk.ts", "../../../elements-sk/modules/icons/folder-icon-sk/index.ts", "../../../elements-sk/modules/icons/help-icon-sk/help-icon-sk.ts", "../../../elements-sk/modules/icons/help-icon-sk/index.ts", "../../../elements-sk/modules/icons/home-icon-sk/home-icon-sk.ts", "../../../elements-sk/modules/icons/home-icon-sk/index.ts", "../../../elements-sk/modules/icons/multiline-chart-icon-sk/multiline-chart-icon-sk.ts", "../../../elements-sk/modules/icons/multiline-chart-icon-sk/index.ts", "../../../elements-sk/modules/icons/sort-icon-sk/sort-icon-sk.ts", "../../../elements-sk/modules/icons/sort-icon-sk/index.ts", "../../../elements-sk/modules/icons/trending-up-icon-sk/trending-up-icon-sk.ts", "../../../elements-sk/modules/icons/trending-up-icon-sk/index.ts", "../../../elements-sk/modules/errorMessage.ts", "../../../infra-sk/modules/url/index.ts", "../../../infra-sk/modules/alogin-sk/alogin-sk.ts", "../../../infra-sk/modules/alogin-sk/index.ts", "../../../elements-sk/modules/icons/invert-colors-icon-sk/invert-colors-icon-sk.ts", "../../../elements-sk/modules/icons/invert-colors-icon-sk/index.ts", "../../../infra-sk/modules/theme-chooser-sk/theme-chooser-sk.ts", "../../../infra-sk/modules/theme-chooser-sk/index.ts", "../../../elements-sk/modules/icons/menu-icon-sk/menu-icon-sk.ts", "../../../elements-sk/modules/icons/menu-icon-sk/index.ts", "../../../infra-sk/modules/app-sk/app-sk.ts", "../../../infra-sk/modules/app-sk/index.ts", "../../modules/window/window.ts", "../../modules/perf-scaffold-sk/perf-scaffold-sk.ts", "../../modules/perf-scaffold-sk/index.ts", "../../../infra-sk/modules/query.ts", "../../../infra-sk/modules/object.ts", "../../../infra-sk/modules/jsonOrThrow.ts", "../../../infra-sk/modules/dom.ts", "../../../infra-sk/modules/stateReflector.ts", "../../modules/errorMessage/index.ts", "../../../elements-sk/modules/spinner-sk/spinner-sk.ts", "../../../elements-sk/modules/spinner-sk/index.ts", "../../../elements-sk/modules/collapse-sk/collapse-sk.ts", "../../../elements-sk/modules/collapse-sk/index.ts", "../../../infra-sk/modules/human.ts", "../../modules/json/index.ts", "../../../node_modules/.aspect_rules_js/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/custom-element.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/css-tag.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/reactive-element.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/property.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/state.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/base.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/query.ts", "../../../node_modules/.aspect_rules_js/@lit+reactive-element@2.0.4/node_modules/@lit/reactive-element/src/decorators/query-assigned-elements.ts", "../../../node_modules/.aspect_rules_js/lit@3.2.0/node_modules/lit/decorators.js", "../../../node_modules/.aspect_rules_js/lit-element@4.1.0/node_modules/lit-element/src/lit-element.ts", "../../../node_modules/.aspect_rules_js/lit@3.2.0/node_modules/lit/index.js", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/controller/attachable-controller.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/focus/internal/focus-ring.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/focus/internal/focus-ring-styles.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/focus/md-focus-ring.ts", "../../../node_modules/.aspect_rules_js/lit-html@3.2.0/node_modules/lit-html/src/directive.ts", "../../../node_modules/.aspect_rules_js/lit-html@3.2.0/node_modules/lit-html/src/directives/class-map.ts", "../../../node_modules/.aspect_rules_js/lit@3.2.0/node_modules/lit/directives/class-map.js", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/motion/animation.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/ripple/internal/ripple.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/ripple/internal/ripple-styles.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/ripple/ripple.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/aria/aria.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/aria/delegate.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/labs/behaviors/element-internals.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/controller/form-submitter.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/internal/events/form-label-activation.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/button/internal/button.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/button/internal/outlined-button.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/button/internal/outlined-styles.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/button/internal/shared-styles.ts", "../../../node_modules/.aspect_rules_js/@material+web@2.1.0/node_modules/@material/web/button/outlined-button.ts", "../../modules/commit-detail-sk/commit-detail-sk.ts", "../../modules/commit-detail-sk/index.ts", "../../modules/commit-detail-panel-sk/commit-detail-panel-sk.ts", "../../modules/commit-detail-panel-sk/index.ts", "../../../node_modules/.aspect_rules_js/d3-array@2.12.1/node_modules/d3-array/dist/d3-array.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/init.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/ordinal.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/band.js", "../../../node_modules/.aspect_rules_js/d3-color@3.1.0/node_modules/d3-color/src/define.js", "../../../node_modules/.aspect_rules_js/d3-color@3.1.0/node_modules/d3-color/src/color.js", "../../../node_modules/.aspect_rules_js/d3-color@3.1.0/node_modules/d3-color/src/index.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/basis.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/basisClosed.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/constant.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/color.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/rgb.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/numberArray.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/array.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/date.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/number.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/object.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/string.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/value.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/round.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/piecewise.js", "../../../node_modules/.aspect_rules_js/d3-interpolate@3.0.0/node_modules/d3-interpolate/src/index.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/number.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatDecimal.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/exponent.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatGroup.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatNumerals.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatSpecifier.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatTrim.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatPrefixAuto.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatRounded.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/formatTypes.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/identity.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/locale.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/defaultLocale.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/precisionFixed.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/precisionPrefix.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/precisionRound.js", "../../../node_modules/.aspect_rules_js/d3-format@2.0.0/node_modules/d3-format/src/index.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/tickFormat.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/identity.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/nice.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/log.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/pow.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/radial.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/quantile.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/quantize.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/threshold.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/interval.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/millisecond.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/second.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/minute.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/hour.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/day.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/week.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/month.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/year.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcMinute.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcHour.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcDay.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcWeek.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcMonth.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/utcYear.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/ticks.js", "../../../node_modules/.aspect_rules_js/d3-time@2.1.1/node_modules/d3-time/src/index.js", "../../../node_modules/.aspect_rules_js/d3-time-format@3.0.0/node_modules/d3-time-format/src/locale.js", "../../../node_modules/.aspect_rules_js/d3-time-format@3.0.0/node_modules/d3-time-format/src/defaultLocale.js", "../../../node_modules/.aspect_rules_js/d3-time-format@3.0.0/node_modules/d3-time-format/src/index.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/time.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/utcTime.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/sequential.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/sequentialQuantile.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/diverging.js", "../../../node_modules/.aspect_rules_js/d3-scale@4.0.2/node_modules/d3-scale/src/index.js", "../../modules/plot-simple-sk/kd.ts", "../../modules/const/const.ts", "../../modules/common/plot-builder.ts", "../../modules/plot-simple-sk/plot-simple-sk.ts", "../../modules/plot-simple-sk/index.ts", "../../../elements-sk/modules/icons/check-circle-icon-sk/check-circle-icon-sk.ts", "../../../elements-sk/modules/icons/check-circle-icon-sk/index.ts", "../../../elements-sk/modules/icons/cancel-icon-sk/cancel-icon-sk.ts", "../../../elements-sk/modules/icons/cancel-icon-sk/index.ts", "../../modules/triage2-sk/triage2-sk.ts", "../../modules/triage2-sk/index.ts", "../../modules/word-cloud-sk/word-cloud-sk.ts", "../../modules/word-cloud-sk/index.ts", "../../modules/cid/cid.ts", "../../modules/commit-range-sk/commit-range-sk.ts", "../../modules/commit-range-sk/index.ts", "../../modules/plot-simple-sk/ticks.ts", "../../modules/cluster-summary2-sk/cluster-summary2-sk.ts", "../../modules/cluster-summary2-sk/index.ts", "../../../elements-sk/modules/icons/date-range-icon-sk/date-range-icon-sk.ts", "../../../elements-sk/modules/icons/date-range-icon-sk/index.ts", "../../../elements-sk/modules/icons/navigate-before-icon-sk/navigate-before-icon-sk.ts", "../../../elements-sk/modules/icons/navigate-before-icon-sk/index.ts", "../../../elements-sk/modules/icons/navigate-next-icon-sk/navigate-next-icon-sk.ts", "../../../elements-sk/modules/icons/navigate-next-icon-sk/index.ts", "../../modules/calendar-sk/calendar-sk.ts", "../../modules/calendar-sk/index.ts", "../../modules/calendar-input-sk/calendar-input-sk.ts", "../../modules/calendar-input-sk/index.ts", "../../modules/day-range-sk/day-range-sk.ts", "../../modules/day-range-sk/index.ts", "../../modules/tricon2-sk/tricon2-sk.ts", "../../modules/tricon2-sk/index.ts", "../../modules/triage-status-sk/triage-status-sk.ts", "../../modules/triage-status-sk/index.ts", "../../modules/triage-page-sk/triage-page-sk.ts", "../../modules/triage-page-sk/index.ts", "../triage.ts"], "sourcesContent": ["/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\n// IMPORTANT: these imports must be type-only\nimport type {Directive, DirectiveResult, PartInfo} from './directive.js';\nimport type {TrustedHTML, TrustedTypesWindow} from 'trusted-types/lib';\n\nconst DEV_MODE = true;\nconst ENABLE_EXTRA_SECURITY_HOOKS = true;\nconst ENABLE_SHADYDOM_NOPATCH = true;\nconst NODE_MODE = false;\n\n// Allows minifiers to rename references to globalThis\nconst global = globalThis;\n\n/**\n * Contains types that are part of the unstable debug API.\n *\n * Everything in this API is not stable and may change or be removed in the future,\n * even on patch releases.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace LitUnstable {\n /**\n * When Lit is running in dev mode and `window.emitLitDebugLogEvents` is true,\n * we will emit 'lit-debug' events to window, with live details about the update and render\n * lifecycle. These can be useful for writing debug tooling and visualizations.\n *\n * Please be aware that running with window.emitLitDebugLogEvents has performance overhead,\n * making certain operations that are normally very cheap (like a no-op render) much slower,\n * because we must copy data and dispatch events.\n */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace DebugLog {\n export type Entry =\n | TemplatePrep\n | TemplateInstantiated\n | TemplateInstantiatedAndUpdated\n | TemplateUpdating\n | BeginRender\n | EndRender\n | CommitPartEntry\n | SetPartValue;\n export interface TemplatePrep {\n kind: 'template prep';\n template: Template;\n strings: TemplateStringsArray;\n clonableTemplate: HTMLTemplateElement;\n parts: TemplatePart[];\n }\n export interface BeginRender {\n kind: 'begin render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart | undefined;\n }\n export interface EndRender {\n kind: 'end render';\n id: number;\n value: unknown;\n container: HTMLElement | DocumentFragment;\n options: RenderOptions | undefined;\n part: ChildPart;\n }\n export interface TemplateInstantiated {\n kind: 'template instantiated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array;\n values: unknown[];\n }\n export interface TemplateInstantiatedAndUpdated {\n kind: 'template instantiated and updated';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n fragment: Node;\n parts: Array;\n values: unknown[];\n }\n export interface TemplateUpdating {\n kind: 'template updating';\n template: Template | CompiledTemplate;\n instance: TemplateInstance;\n options: RenderOptions | undefined;\n parts: Array;\n values: unknown[];\n }\n export interface SetPartValue {\n kind: 'set part';\n part: Part;\n value: unknown;\n valueIndex: number;\n values: unknown[];\n templateInstance: TemplateInstance;\n }\n\n export type CommitPartEntry =\n | CommitNothingToChildEntry\n | CommitText\n | CommitNode\n | CommitAttribute\n | CommitProperty\n | CommitBooleanAttribute\n | CommitEventListener\n | CommitToElementBinding;\n\n export interface CommitNothingToChildEntry {\n kind: 'commit nothing to child';\n start: ChildNode;\n end: ChildNode | null;\n parent: Disconnectable | undefined;\n options: RenderOptions | undefined;\n }\n\n export interface CommitText {\n kind: 'commit text';\n node: Text;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitNode {\n kind: 'commit node';\n start: Node;\n parent: Disconnectable | undefined;\n value: Node;\n options: RenderOptions | undefined;\n }\n\n export interface CommitAttribute {\n kind: 'commit attribute';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitProperty {\n kind: 'commit property';\n element: Element;\n name: string;\n value: unknown;\n options: RenderOptions | undefined;\n }\n\n export interface CommitBooleanAttribute {\n kind: 'commit boolean attribute';\n element: Element;\n name: string;\n value: boolean;\n options: RenderOptions | undefined;\n }\n\n export interface CommitEventListener {\n kind: 'commit event listener';\n element: Element;\n name: string;\n value: unknown;\n oldListener: unknown;\n options: RenderOptions | undefined;\n // True if we're removing the old event listener (e.g. because settings changed, or value is nothing)\n removeListener: boolean;\n // True if we're adding a new event listener (e.g. because first render, or settings changed)\n addListener: boolean;\n }\n\n export interface CommitToElementBinding {\n kind: 'commit to element binding';\n element: Element;\n value: unknown;\n options: RenderOptions | undefined;\n }\n }\n}\n\ninterface DebugLoggingWindow {\n // Even in dev mode, we generally don't want to emit these events, as that's\n // another level of cost, so only emit them when DEV_MODE is true _and_ when\n // window.emitLitDebugEvents is true.\n emitLitDebugLogEvents?: boolean;\n}\n\n/**\n * Useful for visualizing and logging insights into what the Lit template system is doing.\n *\n * Compiled out of prod mode builds.\n */\nconst debugLogEvent = DEV_MODE\n ? (event: LitUnstable.DebugLog.Entry) => {\n const shouldEmit = (global as unknown as DebugLoggingWindow)\n .emitLitDebugLogEvents;\n if (!shouldEmit) {\n return;\n }\n global.dispatchEvent(\n new CustomEvent('lit-debug', {\n detail: event,\n }),\n );\n }\n : undefined;\n// Used for connecting beginRender and endRender events when there are nested\n// renders when errors are thrown preventing an endRender event from being\n// called.\nlet debugLogRenderId = 0;\n\nlet issueWarning: (code: string, warning: string) => void;\n\nif (DEV_MODE) {\n global.litIssuedWarnings ??= new Set();\n\n // Issue a warning, if we haven't already.\n issueWarning = (code: string, warning: string) => {\n warning += code\n ? ` See https://lit.dev/msg/${code} for more information.`\n : '';\n if (!global.litIssuedWarnings!.has(warning)) {\n console.warn(warning);\n global.litIssuedWarnings!.add(warning);\n }\n };\n\n issueWarning(\n 'dev-mode',\n `Lit is in dev mode. Not recommended for production!`,\n );\n}\n\nconst wrap =\n ENABLE_SHADYDOM_NOPATCH &&\n global.ShadyDOM?.inUse &&\n global.ShadyDOM?.noPatch === true\n ? (global.ShadyDOM!.wrap as (node: T) => T)\n : (node: T) => node;\n\nconst trustedTypes = (global as unknown as TrustedTypesWindow).trustedTypes;\n\n/**\n * Our TrustedTypePolicy for HTML which is declared using the html template\n * tag function.\n *\n * That HTML is a developer-authored constant, and is parsed with innerHTML\n * before any untrusted expressions have been mixed in. Therefor it is\n * considered safe by construction.\n */\nconst policy = trustedTypes\n ? trustedTypes.createPolicy('lit-html', {\n createHTML: (s) => s,\n })\n : undefined;\n\n/**\n * Used to sanitize any value before it is written into the DOM. This can be\n * used to implement a security policy of allowed and disallowed values in\n * order to prevent XSS attacks.\n *\n * One way of using this callback would be to check attributes and properties\n * against a list of high risk fields, and require that values written to such\n * fields be instances of a class which is safe by construction. Closure's Safe\n * HTML Types is one implementation of this technique (\n * https://github.com/google/safe-html-types/blob/master/doc/safehtml-types.md).\n * The TrustedTypes polyfill in API-only mode could also be used as a basis\n * for this technique (https://github.com/WICG/trusted-types).\n *\n * @param node The HTML node (usually either a #text node or an Element) that\n * is being written to. Note that this is just an exemplar node, the write\n * may take place against another instance of the same class of node.\n * @param name The name of an attribute or property (for example, 'href').\n * @param type Indicates whether the write that's about to be performed will\n * be to a property or a node.\n * @return A function that will sanitize this class of writes.\n */\nexport type SanitizerFactory = (\n node: Node,\n name: string,\n type: 'property' | 'attribute',\n) => ValueSanitizer;\n\n/**\n * A function which can sanitize values that will be written to a specific kind\n * of DOM sink.\n *\n * See SanitizerFactory.\n *\n * @param value The value to sanitize. Will be the actual value passed into\n * the lit-html template literal, so this could be of any type.\n * @return The value to write to the DOM. Usually the same as the input value,\n * unless sanitization is needed.\n */\nexport type ValueSanitizer = (value: unknown) => unknown;\n\nconst identityFunction: ValueSanitizer = (value: unknown) => value;\nconst noopSanitizer: SanitizerFactory = (\n _node: Node,\n _name: string,\n _type: 'property' | 'attribute',\n) => identityFunction;\n\n/** Sets the global sanitizer factory. */\nconst setSanitizer = (newSanitizer: SanitizerFactory) => {\n if (!ENABLE_EXTRA_SECURITY_HOOKS) {\n return;\n }\n if (sanitizerFactoryInternal !== noopSanitizer) {\n throw new Error(\n `Attempted to overwrite existing lit-html security policy.` +\n ` setSanitizeDOMValueFactory should be called at most once.`,\n );\n }\n sanitizerFactoryInternal = newSanitizer;\n};\n\n/**\n * Only used in internal tests, not a part of the public API.\n */\nconst _testOnlyClearSanitizerFactoryDoNotCallOrElse = () => {\n sanitizerFactoryInternal = noopSanitizer;\n};\n\nconst createSanitizer: SanitizerFactory = (node, name, type) => {\n return sanitizerFactoryInternal(node, name, type);\n};\n\n// Added to an attribute name to mark the attribute as bound so we can find\n// it easily.\nconst boundAttributeSuffix = '$lit$';\n\n// This marker is used in many syntactic positions in HTML, so it must be\n// a valid element name and attribute name. We don't support dynamic names (yet)\n// but this at least ensures that the parse tree is closer to the template\n// intention.\nconst marker = `lit$${Math.random().toFixed(9).slice(2)}$`;\n\n// String used to tell if a comment is a marker comment\nconst markerMatch = '?' + marker;\n\n// Text used to insert a comment marker node. We use processing instruction\n// syntax because it's slightly smaller, but parses as a comment node.\nconst nodeMarker = `<${markerMatch}>`;\n\nconst d =\n NODE_MODE && global.document === undefined\n ? ({\n createTreeWalker() {\n return {};\n },\n } as unknown as Document)\n : document;\n\n// Creates a dynamic marker. We never have to search for these in the DOM.\nconst createMarker = () => d.createComment('');\n\n// https://tc39.github.io/ecma262/#sec-typeof-operator\ntype Primitive = null | undefined | boolean | number | string | symbol | bigint;\nconst isPrimitive = (value: unknown): value is Primitive =>\n value === null || (typeof value != 'object' && typeof value != 'function');\nconst isArray = Array.isArray;\nconst isIterable = (value: unknown): value is Iterable =>\n isArray(value) ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n typeof (value as any)?.[Symbol.iterator] === 'function';\n\nconst SPACE_CHAR = `[ \\t\\n\\f\\r]`;\nconst ATTR_VALUE_CHAR = `[^ \\t\\n\\f\\r\"'\\`<>=]`;\nconst NAME_CHAR = `[^\\\\s\"'>=/]`;\n\n// These regexes represent the five parsing states that we care about in the\n// Template's HTML scanner. They match the *end* of the state they're named\n// after.\n// Depending on the match, we transition to a new state. If there's no match,\n// we stay in the same state.\n// Note that the regexes are stateful. We utilize lastIndex and sync it\n// across the multiple regexes used. In addition to the five regexes below\n// we also dynamically create a regex to find the matching end tags for raw\n// text elements.\n\n/**\n * End of text is: `<` followed by:\n * (comment start) or (tag) or (dynamic tag binding)\n */\nconst textEndRegex = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nconst COMMENT_START = 1;\nconst TAG_NAME = 2;\nconst DYNAMIC_TAG_NAME = 3;\n\nconst commentEndRegex = /-->/g;\n/**\n * Comments not started with