graphdb-workbench 3.5.1 → 3.5.2-RC1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/58328.495346dc138da6b93429.bundle.js +3 -0
- package/dist/58328.495346dc138da6b93429.bundle.js.LICENSE.txt +3 -0
- package/dist/58328.495346dc138da6b93429.bundle.js.map +1 -0
- package/dist/{64709.fba061d1e333d77d2644.bundle.js → 64709.136fc8d3c21ff69ff822.bundle.js} +2 -2
- package/dist/{64709.fba061d1e333d77d2644.bundle.js.map → 64709.136fc8d3c21ff69ff822.bundle.js.map} +1 -1
- package/dist/65677.c1ea0f6e8f772febd882.bundle.js +2 -0
- package/dist/65677.c1ea0f6e8f772febd882.bundle.js.map +1 -0
- package/dist/80933.328c7da6dc73b2e325c9.bundle.js +2 -0
- package/dist/80933.328c7da6dc73b2e325c9.bundle.js.map +1 -0
- package/dist/82917.0b95b09ecc63b7cb82ce.bundle.js +2 -0
- package/dist/{82917.020f840fc63c2066169e.bundle.js.map → 82917.0b95b09ecc63b7cb82ce.bundle.js.map} +1 -1
- package/dist/86099.8133c5cac5f0298b89d4.bundle.js +2 -0
- package/dist/86099.8133c5cac5f0298b89d4.bundle.js.map +1 -0
- package/dist/{88480.3e4e19eb2d01bd50419b.bundle.js → 88480.2cfe6c79601364adfac7.bundle.js} +2 -2
- package/dist/88480.2cfe6c79601364adfac7.bundle.js.map +1 -0
- package/dist/api/license-checker.json +2 -2
- package/dist/api/ontotext-workbench-api.js +1 -1
- package/dist/api/ontotext-workbench-api.js.LICENSE.txt +3 -1
- package/dist/api/ontotext-workbench-api.js.map +1 -1
- package/dist/assets/i18n/language-config.json +1 -1
- package/dist/index.html +9 -9
- package/dist/js/angular/clustermanagement/templates/cluster-configuration/cluster-configuration.html +1 -1
- package/dist/js/angular/clustermanagement/templates/cluster-configuration/multi-region.html +1 -1
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/security/templates/users.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/legacyWorkbench.928caa8ef8c39e6325b6.js +3 -0
- package/dist/{legacyWorkbench.22aacd4da951e43b2876.js.map → legacyWorkbench.928caa8ef8c39e6325b6.js.map} +1 -1
- package/dist/license-checker.json +41 -64
- package/dist/{main.3665e695a5c0d2e9b4c0.js → main.4c6d44c6c627653cc709.js} +3 -3
- package/dist/{main.3665e695a5c0d2e9b4c0.js.map → main.4c6d44c6c627653cc709.js.map} +1 -1
- package/dist/pages/aclmanagement.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +2 -2
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/sparql-templates.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger5/index.html +11 -11
- package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
- package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js.LICENSE.txt +3 -1
- package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
- package/dist/shared-components/esm/onto-dialog_2.entry.js.LICENSE.txt +3 -1
- package/dist/shared-components/shared-components/p-cbf554fc.entry.js +2 -0
- package/dist/shared-components/shared-components/p-cbf554fc.entry.js.LICENSE.txt +3 -0
- package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
- package/dist/workbench/license-checker.json +8 -8
- package/package.json +1 -1
- package/dist/58328.7302691773ae44944db5.bundle.js +0 -3
- package/dist/58328.7302691773ae44944db5.bundle.js.LICENSE.txt +0 -1
- package/dist/58328.7302691773ae44944db5.bundle.js.map +0 -1
- package/dist/65677.646a9ee2a63ba19c0fd3.bundle.js +0 -2
- package/dist/65677.646a9ee2a63ba19c0fd3.bundle.js.map +0 -1
- package/dist/80933.542ad26ccd92fdc2c05d.bundle.js +0 -2
- package/dist/80933.542ad26ccd92fdc2c05d.bundle.js.map +0 -1
- package/dist/82917.020f840fc63c2066169e.bundle.js +0 -2
- package/dist/86099.959943bc458a7ef148e9.bundle.js +0 -2
- package/dist/86099.959943bc458a7ef148e9.bundle.js.map +0 -1
- package/dist/88480.3e4e19eb2d01bd50419b.bundle.js.map +0 -1
- package/dist/legacyWorkbench.22aacd4da951e43b2876.js +0 -3
- package/dist/shared-components/shared-components/p-ac76c94f.entry.js +0 -2
- package/dist/shared-components/shared-components/p-ac76c94f.entry.js.LICENSE.txt +0 -1
- /package/dist/{legacyWorkbench.22aacd4da951e43b2876.js.LICENSE.txt → legacyWorkbench.928caa8ef8c39e6325b6.js.LICENSE.txt} +0 -0
- /package/dist/{main.3665e695a5c0d2e9b4c0.js.LICENSE.txt → main.4c6d44c6c627653cc709.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 58328.495346dc138da6b93429.bundle.js.LICENSE.txt */
|
|
2
|
+
export const __webpack_esm_id__=58328;export const __webpack_esm_ids__=[58328];export const __webpack_esm_modules__={76500(e,t,n){n.d(t,{H:()=>r});const o='button, [href], input:not([type="hidden"]), select, textarea, [tabindex]:not([tabindex="-1"])';class r{static setDocumentBodyOverflow(e){const t=document.body.style.overflow;return document.body.style.overflow=e,t}static hideDocumentBodyOverflow(){return r.setDocumentBodyOverflow("hidden")}static focusNextElement(e,t=o){const n=Array.from(e.querySelectorAll(t));if(n.length>0){const e=n.indexOf(document.activeElement),t=n[(e+1)%n.length];t&&t.focus()}}static focusPreviousElement(e,t=o){const n=Array.from(e.querySelectorAll(t));if(n.length>0){const e=n.indexOf(document.activeElement),t=n[(e-1+n.length)%n.length];t&&t.focus()}}static preventLeavingDialog(e,t){"Tab"===t.key&&(t.preventDefault(),t.shiftKey?r.focusPreviousElement(e):r.focusNextElement(e))}static focusElement(e){const t=document.querySelector(e);null==t||t.focus()}static scrollElementIntoView(e,t={block:"nearest"}){const n=document.querySelector(e);n&&n.scrollIntoView(t)}static waitForElement(e){return new Promise((t,n)=>{const o=new MutationObserver(()=>{try{const n=document.querySelector(e);n&&(o.disconnect(),t(n))}catch(e){o.disconnect(),n(e)}});o.observe(document.body,{subtree:!0,childList:!0,attributes:!0})})}}},58328(e,t,n){n.r(t),n.d(t,{onto_dialog:()=>l,onto_toggle_switch:()=>_e});var o=n(18072),r=n(76500),i=n(54096),a=n(51494);n(57154);const l=class{constructor(e){(0,o.r)(this,e),this.handleClose=e=>{this.config.onClose(e)}}componentDidLoad(){this.documentOverflow=r.H.hideDocumentBodyOverflow(),this.hostElement.addEventListener("keydown",this.preventLeavingDialog.bind(this))}disconnectedCallback(){this.hostElement.removeEventListener("keydown",this.preventLeavingDialog.bind(this)),r.H.setDocumentBodyOverflow(this.documentOverflow)}render(){return(0,o.h)(o.a,{key:"ab4b8093c0997aa2f6edc28df2fae1a518ba67ba",tabindex:"-1"},(0,o.h)("div",{key:"e500065a811dcd5540867cb6bcd490b4dc75cba4",class:`dialog-overlay ${this.config.modalClass?this.config.modalClass:""}`},(0,o.h)("dialog",{key:"4625bdcee25d1acb13a2483c1378d7624660cc2a",class:"dialog"},(0,o.h)("header",{key:"2a4f6a9f6c1792414199fd7f7b58034bcc697597",class:"dialog-header"},(0,o.h)("h3",{key:"7c5f1aecf01f2da7c8acd7cd3cea551c5f54902a",class:"dialog-title"},this.config.dialogTitle),this.config.onClose&&(0,o.h)("button",{key:"db2545a17c48cfe37132b4e18347e8a6f4b5e046","data-test":"close-dialog-btn",class:"close-btn onto-btn",onClick:this.handleClose},(0,o.h)("i",{key:"73f463091799ff17faf7bea9e5d523a7fae5dc81",class:"ri-close-line ri-2x"}))),(0,o.h)("main",{key:"c238ecbc94d02b4d1a7459751eb0a8cf78c2ef01",class:"dialog-body"},(0,o.h)("slot",{key:"99ede8e5090b26c63aa3f6add30505177b0eff5a",name:"body"})),(0,o.h)("footer",{key:"b4718b33ff8b4f2a9124a10a5dca4bdb468057fd",class:"dialog-footer"},(0,o.h)("slot",{key:"8f583242179fd0fc33aba35bf7ad3a655849d75b",name:"footer"})))))}preventLeavingDialog(e){r.H.preventLeavingDialog(this.hostElement,e)}get hostElement(){return(0,o.d)(this)}};l.style=".dialog-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:9998;margin-left:-10px;background-color:rgba(0, 0, 0, 0.5);font-family:var(--main-font), sans-serif;font-weight:var(--main-font-weight);color:var(--gw-secondary-base, var(--base-text-color))}.dialog{z-index:1001;max-width:60vw;max-height:90vh;font-family:inherit;font-weight:inherit;display:flex;flex-direction:column;position:relative;justify-content:space-between;border:none;color:var(--gw-dialog-color);background-color:var(--gw-dialog-background);box-shadow:0 5px 15px rgba(0, 0, 0, 0.5)}.dialog .dialog-header{display:flex;justify-content:space-between;padding:15px;font-size:20px}.dialog .dialog-header .dialog-title{margin:0.5rem 0;font-weight:400}.dialog .dialog-header .close-btn{padding:0;cursor:pointer;background:0 0;border:0}.dialog .dialog-body{padding:0 15px 15px;overflow:auto}.dialog .dialog-footer{display:flex;justify-content:flex-end;padding:15px}";class s{static deepEqual(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if("object"==typeof e&&"object"==typeof t){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!s.deepEqual(e[n],t[n]))return!1;return!0}if(!Array.isArray(e)&&!Array.isArray(t)){const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(const o of n)if(!(o in t)||!s.deepEqual(e[o],t[o]))return!1;return!0}return!1}return!1}static deepCopy(e){if("object"!=typeof e||null==e||"function"==typeof e)return e;if(s.hasCopyMethod(e))return e.copy();const t=s.copyBuiltInType(e);return null!==t?t:s.copyPlainObject(e)}static copyBuiltInType(e){return Array.isArray(e)?e.map(e=>s.deepCopy(e)):e instanceof Date?new Date(e.getTime()):e instanceof RegExp?new RegExp(e.source,e.flags):e instanceof Map?new Map(Array.from(e.entries()).map(([e,t])=>[s.deepCopy(e),s.deepCopy(t)])):e instanceof Set?new Set(Array.from(e.values()).map(e=>s.deepCopy(e))):null}static copyPlainObject(e){const t=Object.create(Object.getPrototypeOf(e));for(const n of Object.keys(e))t[n]=s.deepCopy(e[n]);return t}static hasCopyMethod(e){return"object"==typeof e&&null!==e&&Object.prototype.hasOwnProperty.call(e,"copy")&&"function"==typeof e.copy}static mergeWithDefaults(e,t){if("object"!=typeof e||null===e)return e;const n=s.deepCopy(e);return Object.keys(t).forEach(e=>{const o=n[e],r=t[e];s.isNullOrUndefined(o)?n[e]=s.deepCopy(r):s.canRecursivelyMerge(o,r)&&(n[e]=s.mergeWithDefaults(o,r))}),n}static canRecursivelyMerge(e,t){return"object"==typeof e&&null!==e&&"object"==typeof t&&null!==t&&!Array.isArray(e)&&!Array.isArray(t)}}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i,a,l=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t);else for(;!(s=(o=i.call(n)).done)&&(l.push(o.value),l.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}s.isNullOrUndefined=e=>null==e;const f=Object.entries,d=Object.setPrototypeOf,p=Object.isFrozen,m=Object.getPrototypeOf,h=Object.getOwnPropertyDescriptor;let g=Object.freeze,y=Object.seal,b=Object.create,w="undefined"!=typeof Reflect&&Reflect,v=w.apply,T=w.construct;g||(g=function(e){return e}),y||(y=function(e){return e}),v||(v=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return e.apply(t,o)}),T||(T=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];return new e(...n)});const A=W(Array.prototype.forEach),S=W(Array.prototype.lastIndexOf),k=W(Array.prototype.pop),E=W(Array.prototype.push),x=W(Array.prototype.splice),O=Array.isArray,C=W(String.prototype.toLowerCase),_=W(String.prototype.toString),D=W(String.prototype.match),N=W(String.prototype.replace),R=W(String.prototype.indexOf),L=W(String.prototype.trim),I=W(Number.prototype.toString),z=W(Boolean.prototype.toString),M="undefined"==typeof BigInt?null:W(BigInt.prototype.toString),P="undefined"==typeof Symbol?null:W(Symbol.prototype.toString),j=W(Object.prototype.hasOwnProperty),U=W(Object.prototype.toString),B=W(RegExp.prototype.test),F=(H=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return T(H,t)});var H;function W(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return v(e,t,o)}}function Y(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:C;if(d&&d(e,null),!O(t))return e;let o=t.length;for(;o--;){let r=t[o];if("string"==typeof r){const e=n(r);e!==r&&(p(t)||(t[o]=e),r=e)}e[r]=!0}return e}function G(e){for(let t=0;t<e.length;t++)j(e,t)||(e[t]=null);return e}function q(e){const t=b(null);for(const o of f(e)){var n=u(o,2);const r=n[0],i=n[1];j(e,r)&&(O(i)?t[r]=G(i):i&&"object"==typeof i&&i.constructor===Object?t[r]=q(i):t[r]=i)}return t}function K(e,t){for(;null!==e;){const n=h(e,t);if(n){if(n.get)return W(n.get);if("function"==typeof n.value)return W(n.value)}e=m(e)}return function(){return null}}const $=g(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),V=g(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),X=g(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),J=g(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Z=g(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Q=g(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),ee=g(["#text"]),te=g(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),ne=g(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),oe=g(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),re=g(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),ie=y(/{{[\w\W]*|^[\w\W]*}}/g),ae=y(/<%[\w\W]*|^[\w\W]*%>/g),le=y(/\${[\w\W]*/g),se=y(/^data-[\-\w.\u00B7-\uFFFF]+$/),ce=y(/^aria-[\-\w]+$/),ue=y(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),fe=y(/^(?:\w+script|data):/i),de=y(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),pe=y(/^html$/i),me=y(/^[a-z][.\w]*(-[.\w]+)+$/i),he=y(/<[/\w!]/g),ge=y(/<[/\w]/g),ye=y(/<\/no(script|embed|frames)/i),be=y(/\/>/i),we=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],ve=g(Y({},we)),Te=function(){const e={};return A(we,t=>{e[t]=y(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),g(e)}(),Ae=function(){return"undefined"==typeof window?null:window},Se=function(e,t,n,o){return j(e,t)&&O(e[t])?Y(o.base?q(o.base):{},e[t],o.transform):n},ke=function(e,t,n){const o=j(e,t)?e[t]:void 0;return o&&"object"==typeof o?q(o):n()};var Ee=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ae();const n=t=>e(t);if(n.version="3.4.16",n.removed=[],!t||!t.document||9!==t.document.nodeType||!t.Element)return n.isSupported=!1,n;let o=t.document;const r=o,i=r.currentScript,a=t.HTMLTemplateElement,l=t.Node,s=t.Element,c=t.NodeFilter,u=t.DOMParser,d=t.trustedTypes,p=s.prototype,m=K(p,"cloneNode"),h=K(p,"remove"),w=K(p,"removeAttributeNode"),v=K(p,"nextSibling"),T=K(p,"childNodes"),H=K(p,"parentNode"),W=K(p,"shadowRoot"),G=K(p,"attributes"),we=l&&l.prototype?K(l.prototype,"nodeType"):null,Ee=l&&l.prototype?K(l.prototype,"nodeName"):null,xe=l&&l.prototype?K(l.prototype,"ownerDocument"):null,Oe=function(e){return we?we(e):e.nodeType},Ce=function(e){return Ee?Ee(e):e.nodeName};if("function"==typeof a){const e=o.createElement("template");e.content&&e.content.ownerDocument&&(o=e.content.ownerDocument)}let _e,De,Ne="",Re=!1,Le=0;const Ie=function(){if(Le>0)throw F('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},ze=function(e){Ie(),Le++;try{return _e.createHTML(e)}finally{Le--}},Me=o,Pe=Me.implementation,je=Me.createNodeIterator,Ue=Me.createDocumentFragment,Be=Me.getElementsByTagName,Fe=r.importNode;let He={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"==typeof f&&"function"==typeof H&&Pe&&void 0!==Pe.createHTMLDocument;const We=ie,Ye=ae,Ge=le,qe=se,Ke=ce,$e=fe,Ve=de,Xe=me;let Je=ue,Ze=null;const Qe=Y({},[...$,...V,...X,...Z,...ee]);let et=null;const tt=Y({},[...te,...ne,...oe,...re]);let nt=Object.seal(b(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ot=null,rt=null;const it=Object.seal(b(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let at=!0,lt=!0,st=!1,ct=!0,ut=!1,ft=!0,dt=!1,pt=!1,mt=null,ht=null,gt=!1,yt=!1,bt=!1,wt=!1,vt=!0,Tt=!1;const At="user-content-";let St=!0,kt=!1,Et={},xt=null;const Ot=Y({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]);let Ct=null;const _t=Y({},["audio","video","img","source","image","track"]);let Dt=null;const Nt=Y({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Rt="http://www.w3.org/1998/Math/MathML",Lt="http://www.w3.org/2000/svg",It="http://www.w3.org/1999/xhtml";let zt=It,Mt=!1,Pt=null;const jt=Y({},[Rt,Lt,It],_),Ut=g(["mi","mo","mn","ms","mtext"]);let Bt=Y({},Ut);const Ft=g(["annotation-xml"]);let Ht=Y({},Ft);const Wt=Y({},["title","style","font","a","script"]);let Yt=null;const Gt=["application/xhtml+xml","text/html"];let qt=null,Kt=null;const $t=o.createElement("form"),Vt=function(e){return e instanceof RegExp||e instanceof Function},Xt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Kt&&Kt===e)return;e&&"object"==typeof e||(e={}),e=q(e),Yt=-1===Gt.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,qt="application/xhtml+xml"===Yt?_:C,Ze=Se(e,"ALLOWED_TAGS",Qe,{transform:qt}),et=Se(e,"ALLOWED_ATTR",tt,{transform:qt}),Pt=Se(e,"ALLOWED_NAMESPACES",jt,{transform:_}),Dt=Se(e,"ADD_URI_SAFE_ATTR",Nt,{transform:qt,base:Nt}),Ct=Se(e,"ADD_DATA_URI_TAGS",_t,{transform:qt,base:_t}),xt=Se(e,"FORBID_CONTENTS",Ot,{transform:qt}),ot=Se(e,"FORBID_TAGS",q({}),{transform:qt}),rt=Se(e,"FORBID_ATTR",q({}),{transform:qt}),Et=!!j(e,"USE_PROFILES")&&(e.USE_PROFILES&&"object"==typeof e.USE_PROFILES?q(e.USE_PROFILES):e.USE_PROFILES),at=!1!==e.ALLOW_ARIA_ATTR,lt=!1!==e.ALLOW_DATA_ATTR,st=e.ALLOW_UNKNOWN_PROTOCOLS||!1,ct=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ut=e.SAFE_FOR_TEMPLATES||!1,ft=!1!==e.SAFE_FOR_XML,dt=e.WHOLE_DOCUMENT||!1,yt=e.RETURN_DOM||!1,bt=e.RETURN_DOM_FRAGMENT||!1,wt=e.RETURN_TRUSTED_TYPE||!1,gt=e.FORCE_BODY||!1,vt=!1!==e.SANITIZE_DOM,Tt=e.SANITIZE_NAMED_PROPS||!1,St=!1!==e.KEEP_CONTENT,kt=e.IN_PLACE||!1,Je=function(e){try{return B(e,""),!0}catch(e){return!1}}(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:ue,zt="string"==typeof e.NAMESPACE?e.NAMESPACE:It,Bt=ke(e,"MATHML_TEXT_INTEGRATION_POINTS",()=>Y({},Ut)),Ht=ke(e,"HTML_INTEGRATION_POINTS",()=>Y({},Ft));const t=ke(e,"CUSTOM_ELEMENT_HANDLING",()=>b(null));if(nt=b(null),j(t,"tagNameCheck")&&Vt(t.tagNameCheck)&&(nt.tagNameCheck=t.tagNameCheck),j(t,"attributeNameCheck")&&Vt(t.attributeNameCheck)&&(nt.attributeNameCheck=t.attributeNameCheck),j(t,"allowCustomizedBuiltInElements")&&"boolean"==typeof t.allowCustomizedBuiltInElements&&(nt.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),y(nt),ut&&(lt=!1),bt&&(yt=!0),Et&&(Ze=Y({},ee),et=b(null),!0===Et.html&&(Y(Ze,$),Y(et,te)),!0===Et.svg&&(Y(Ze,V),Y(et,ne),Y(et,re)),!0===Et.svgFilters&&(Y(Ze,X),Y(et,ne),Y(et,re)),!0===Et.mathMl&&(Y(Ze,Z),Y(et,oe),Y(et,re))),it.tagCheck=null,it.attributeCheck=null,j(e,"ADD_TAGS")&&("function"==typeof e.ADD_TAGS?it.tagCheck=e.ADD_TAGS:O(e.ADD_TAGS)&&(Ze===Qe&&(Ze=q(Ze)),Y(Ze,e.ADD_TAGS,qt))),j(e,"ADD_ATTR")&&("function"==typeof e.ADD_ATTR?it.attributeCheck=e.ADD_ATTR:O(e.ADD_ATTR)&&(et===tt&&(et=q(et)),Y(et,e.ADD_ATTR,qt))),j(e,"ADD_FORBID_CONTENTS")&&O(e.ADD_FORBID_CONTENTS)&&(xt===Ot&&(xt=q(xt)),Y(xt,e.ADD_FORBID_CONTENTS,qt)),St&&(Ze["#text"]=!0),dt&&Y(Ze,["html","head","body"]),Ze.table&&(Y(Ze,["tbody"]),delete ot.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw F('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw F('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');const t=_e;_e=e.TRUSTED_TYPES_POLICY;try{Ne=ze("")}catch(e){throw _e=t,e}}else null===e.TRUSTED_TYPES_POLICY?(_e=void 0,Ne=""):(void 0===_e&&(Re||(De=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(d,i),Re=!0),_e=De),_e&&"string"==typeof Ne&&(Ne=ze("")));g&&g(e),Kt=e},Jt=Y({},[...V,...X,...J]),Zt=Y({},[...Z,...Q]),Qt=function(e){E(n.removed,{element:e});try{H(e).removeChild(e)}catch(t){if(h(e),!H(e))throw F("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},en=function(e,t,n){try{w(e,t)}catch(t){try{e.removeAttribute(n)}catch(e){}}},tn=function(e){rn(e);const t=T(e);if(t){const e=[];A(t,t=>{E(e,t)}),A(e,e=>{try{h(e)}catch(e){}})}const n=G(e);if(n)for(let t=n.length-1;t>=0;--t){const o=n[t],r=o&&o.name;"string"==typeof r&&en(e,o,r)}},nn=function(e,t,o){if(!o)try{o=t.getAttributeNode(e)}catch(e){o=null}E(n.removed,{attribute:o||null,from:t});try{o?w(t,o):t.removeAttribute(e)}catch(n){try{t.removeAttribute(e)}catch(e){}}if("is"===e)if(yt||bt)try{Qt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},on=function(e){const t=G(e);if(t)for(let n=t.length-1;n>=0;--n){const o=t[n],r=o&&o.name;"string"!=typeof r||et[qt(r)]||en(e,o,r)}},rn=function(e){const t=[e];for(;t.length>0;){const e=t.pop();1===Oe(e)&&on(e);const n=T(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},an=function(e,t){return!!ft&&("patchsrc"===e||"for"===e&&"label"!==t&&"output"!==t)},ln=function(e){let t=null,n=null;if(gt)e="<remove></remove>"+e;else{const t=D(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===Yt&&zt===It&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const r=_e?ze(e):e;if(zt===It)try{t=(new u).parseFromString(r,Yt)}catch(e){}if(!t||!t.documentElement){t=Pe.createDocument(zt,"template",null);try{t.documentElement.innerHTML=Mt?Ne:r}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(o.createTextNode(n),i.childNodes[0]||null),zt===It?Be.call(t,dt?"html":"body")[0]:dt?t.documentElement:i},sn=function(e){const t=xe?xe(e):e.ownerDocument;return je.call(t||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},cn=function(e){return e=N(e,We," "),e=N(e,Ye," "),N(e,Ge," ")},un=function(e){var t;e.normalize();const n=xe?xe(e):e.ownerDocument,o=je.call(n||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null);let r=o.nextNode();for(;r;)r.data=cn(r.data),r=o.nextNode();const i=null===(t=e.querySelectorAll)||void 0===t?void 0:t.call(e,"template");i&&A(i,e=>{dn(e.content)&&un(e.content)})},fn=function(e){const t=Ee?Ee(e):null;return"string"==typeof t&&"form"===qt(t)&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||e.attributes!==G(e)||"function"!=typeof e.removeAttribute||"function"!=typeof e.removeAttributeNode||"function"!=typeof e.getAttributeNode||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes||e.nodeType!==we(e)||e.childNodes!==T(e))},dn=function(e){if(!we||"object"!=typeof e||null===e)return!1;try{return 11===we(e)}catch(e){return!1}},pn=function(e){if(!we||"object"!=typeof e||null===e)return!1;try{return"number"==typeof we(e)}catch(e){return!1}};function mn(e,t,o){0!==e.length&&A(e,e=>{e.call(n,t,o,Kt)})}const hn=function(e,t){if(e instanceof RegExp)return B(e,t);if(e instanceof Function){for(var n=arguments.length,o=new Array(n>2?n-2:0),r=2;r<n;r++)o[r-2]=arguments[r];return Boolean(e(t,...o))}return!1},gn=function(e,t,n,o){return 0===e.length?t:t===n||t===o?q(t):t},yn=function(e,t){return e!==t&&null===H(e)&&(kt&&rn(e),!0)},bn=function(e,t){if(mn(He.beforeSanitizeElements,e,null),yn(e,t))return!0;if(fn(e))return Qt(e),!0;const o=qt(Ce(e));if(Ze=gn(He.uponSanitizeElement,Ze,Qe,mt),mn(He.uponSanitizeElement,e,{tagName:o,allowedTags:Ze}),yn(e,t))return!0;if(function(e,t){return!!(ft&&e.hasChildNodes()&&!pn(e.firstElementChild)&&B(he,e.textContent)&&B(he,e.innerHTML))||!!(ft&&e.namespaceURI===It&&ve[t]&&(pn(e.firstElementChild)||"string"==typeof e.textContent&&B(Te[t],e.textContent)))||7===e.nodeType||!(!ft||8!==e.nodeType||!B(ge,e.data))}(e,o))return Qt(e),!0;if(ot[o]||!(it.tagCheck instanceof Function&&it.tagCheck(o))&&!Ze[o]){const n=function(e,t,n){if(!ot[t]&&Tn(t)&&hn(nt.tagNameCheck,t))return!1;if(St&&!xt[t]){const t=H(e),o=T(e);if(o&&t)for(let r=o.length-1;r>=0;--r){const i=e===n?m(o[r],!0):o[r];t.insertBefore(i,v(e))}}return Qt(e),!0}(e,o,t);return!(!1!==n||(mn(He.afterSanitizeElements,e,null),!yn(e,t)))||n}if(1===Oe(e)&&!function(e){let t=H(e);t&&t.tagName||(t={namespaceURI:zt,tagName:"template"});const n=C(e.tagName),o=C(t.tagName);return!!Pt[e.namespaceURI]&&(e.namespaceURI===Lt?function(e,t,n){return t.namespaceURI===It?"svg"===e:t.namespaceURI===Rt?"svg"===e&&("annotation-xml"===n||Bt[n]):Boolean(Jt[e])}(n,t,o):e.namespaceURI===Rt?function(e,t,n){return t.namespaceURI===It?"math"===e:t.namespaceURI===Lt?"math"===e&&Ht[n]:Boolean(Zt[e])}(n,t,o):e.namespaceURI===It?function(e,t,n){return!(t.namespaceURI===Lt&&!Ht[n])&&!(t.namespaceURI===Rt&&!Bt[n])&&!Zt[e]&&(Wt[e]||!Jt[e])}(n,t,o):!("application/xhtml+xml"!==Yt||!Pt[e.namespaceURI]))}(e))return Qt(e),!0;if(("noscript"===o||"noembed"===o||"noframes"===o)&&B(ye,e.innerHTML))return Qt(e),!0;if(ut&&3===e.nodeType){const t=cn(e.textContent);e.textContent!==t&&(E(n.removed,{element:e.cloneNode()}),e.textContent=t)}return mn(He.afterSanitizeElements,e,null),yn(e,t)},wn=function(e,t,n){if(rt[t])return!1;if(an(t,e))return!1;if(vt&&("id"===t||"name"===t)&&(n in o||n in $t))return!1;const r=et[t]||it.attributeCheck instanceof Function&&it.attributeCheck(t,e);return!(!lt||!B(qe,t))||!(!at||!B(Ke,t))||(r?!(!Dt[t]&&!B(Je,N(n,Ve,""))&&("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==R(n,"data:")||!Ct[e])&&(!st||B($e,N(n,Ve,"")))&&n):Tn(e)&&hn(nt.tagNameCheck,e)&&hn(nt.attributeNameCheck,t,e)||"is"===t&&nt.allowCustomizedBuiltInElements&&hn(nt.tagNameCheck,n))},vn=Y({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Tn=function(e){return!vn[C(e)]&&B(Xe,e)},An=function(e,t,n,o){if(_e&&"object"==typeof d&&"function"==typeof d.getAttributeType&&!n)switch(d.getAttributeType(e,t)){case"TrustedHTML":return ze(o);case"TrustedScriptURL":return function(e){Ie(),Le++;try{return _e.createScriptURL(e)}finally{Le--}}(o)}return o},Sn=function(e,t,n,o){try{return n?e.setAttributeNS(n,t,o):e.setAttribute(t,o),!fn(e)||(Qt(e),!1)}catch(n){return nn(t,e),!1}},kn=function(e,t){if(mn(He.beforeSanitizeAttributes,e,null),yn(e,t))return;const o=e.attributes;if(!o||fn(e))return;et=gn(He.uponSanitizeAttribute,et,tt,ht);const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:et,forceKeepAttr:void 0};let i=o.length;const a=qt(e.nodeName);for(;i--;){const t=o[i],l=t.name,s=t.namespaceURI,c=t.value,u=qt(l),f=c;let d="value"===l?f:L(f),p=!1;r.attrName=u,r.attrValue=d,r.keepAttr=!0,r.forceKeepAttr=void 0,mn(He.uponSanitizeAttribute,e,r),d=r.attrValue,!Tt||"id"!==u&&"name"!==u||0===R(d,At)||(nn(l,e,t),d=At+d,p=!0),ft&&B(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)||"attributename"===u&&D(d,"href")?nn(l,e,t):r.forceKeepAttr||(!r.keepAttr||!ct&&B(be,d)?nn(l,e,t):(ut&&(d=cn(d)),wn(a,u,d)?(d=An(a,u,s,d),d!==f&&Sn(e,l,s,d)&&p&&k(n.removed)):nn(l,e,t)))}mn(He.afterSanitizeAttributes,e,null),yn(e,t)},En=function(e){let t=null;const n=sn(e);for(mn(He.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(mn(He.uponSanitizeShadowNode,t,null),bn(t,e),kn(t,e),dn(t.content)&&En(t.content),1===Oe(t)){const e=W(t);dn(e)&&(xn(e),En(e))}mn(He.afterSanitizeShadowDOM,e,null)},xn=function(e){const t=[{node:e,shadow:null}];for(;t.length>0;){const e=t.pop();if(e.shadow){En(e.shadow);continue}const n=e.node,o=1===Oe(n),r=T(n);if(r)for(let e=r.length-1;e>=0;--e)t.push({node:r[e],shadow:null});if(o){const e=Ee?Ee(n):null;if("string"==typeof e&&"template"===qt(e)){const e=n.content;dn(e)&&t.push({node:e,shadow:null})}}if(o){const e=W(n);dn(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=null,i=null,a=null,l=null;if(Mt=!e,Mt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!pn(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return I(e);case"boolean":return z(e);case"bigint":return M?M(e):"0";case"symbol":return P?P(e):"Symbol()";case"undefined":default:return U(e);case"function":case"object":{if(null===e)return U(e);const t=e,n=K(t,"toString");if("function"==typeof n){const e=n(t);return"string"==typeof e?e:U(e)}return U(e)}}}(e)))throw F("dirty is not a string, aborting");if(!n.isSupported)return e;pt?(Ze=mt,et=ht):Xt(t),(He.uponSanitizeElement.length>0||He.uponSanitizeAttribute.length>0)&&(Ze=q(Ze)),He.uponSanitizeAttribute.length>0&&(et=q(et)),n.removed=[];const s=kt&&"string"!=typeof e&&pn(e);if(s){!function(e){if(!ft)return;const t=[e];for(;t.length>0;){const e=t.pop(),n=Oe(e);if(7===n||8===n&&B(ge,e.data)){try{h(e)}catch(e){}continue}if(1===n){const t=e,n=qt(Ce(e));try{t.hasAttribute&&t.hasAttribute("patchsrc")&&t.removeAttribute("patchsrc"),t.hasAttribute&&t.hasAttribute("for")&&an("for",n)&&t.removeAttribute("for")}catch(e){}}const o=T(e);if(o)for(let e=o.length-1;e>=0;--e)t.push(o[e])}}(e);const t=Ce(e);if("string"==typeof t){const n=qt(t);if(!Ze[n]||ot[n])throw tn(e),F("root node is forbidden and cannot be sanitized in-place")}if(fn(e))throw tn(e),F("root node is clobbered and cannot be sanitized in-place");try{xn(e)}catch(t){throw tn(e),t}}else if(pn(e))o=ln("\x3c!----\x3e"),i=o.ownerDocument.importNode(e,!0),1===i.nodeType&&"BODY"===i.nodeName||"HTML"===i.nodeName?o=i:o.appendChild(i),xn(o);else{if(!yt&&!ut&&!dt&&-1===e.indexOf("<"))return _e&&wt?ze(e):e;if(o=ln(e),!o)return yt?null:wt?Ne:""}o&>&&Qt(o.firstChild);const c=s?e:o;try{const e=sn(c);for(;a=e.nextNode();)bn(a,c),kn(a,c),dn(a.content)&&En(a.content)}catch(t){throw s&&(tn(e),A(n.removed,e=>{e.element&&rn(e.element)})),t}if(s){let t=!1;if(A(n.removed,n=>{n.element&&(n.element===e&&(t=!0),rn(n.element))}),t)throw F("a node selected for removal could not be safely returned; refusing to sanitize in place");return ut&&un(e),e}if(yt){if(ut&&un(o),bt)for(l=Ue.call(o.ownerDocument);o.firstChild;)l.appendChild(o.firstChild);else l=o;return(et.shadowroot||et.shadowrootmode)&&(l=Fe.call(r,l,!0)),l}let u=dt?o.outerHTML:o.innerHTML;return dt&&Ze["!doctype"]&&o.ownerDocument&&o.ownerDocument.doctype&&o.ownerDocument.doctype.name&&B(pe,o.ownerDocument.doctype.name)&&(u="<!DOCTYPE "+o.ownerDocument.doctype.name+">\n"+u),ut&&(u=cn(u)),_e&&wt?ze(u):u},n.setConfig=function(){Xt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),pt=!0,mt=Ze,ht=et},n.clearConfig=function(){Kt=null,pt=!1,mt=null,ht=null,_e=De,Ne=""},n.isValidAttribute=function(e,t,n){Kt||Xt({});const o=qt(e),r=qt(t);return wn(o,r,n)},n.addHook=function(e,t){"function"==typeof t&&j(He,e)&&E(He[e],t)},n.removeHook=function(e,t){if(j(He,e)){if(void 0!==t){const n=S(He[e],t);return-1===n?void 0:x(He[e],n,1)[0]}return k(He[e])}},n.removeHooks=function(e){j(He,e)&&(He[e]=[])},n.removeAllHooks=function(){He={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();Ee(globalThis).addHook("afterSanitizeAttributes",e=>{"_blank"===e.getAttribute("target")?e.setAttribute("rel","noopener noreferrer"):e.hasAttribute("target")||!e.hasAttribute("xlink:href")&&!e.hasAttribute("href")||e.setAttribute("xlink:show","new")});class xe{copy(){return s.deepCopy(this)}}class Oe extends xe{constructor(e=[]){super(),this.items=e}size(){return this.items.length}getItems(){return this.items}getFirstItem(){return this.items[0]}sort(e){this.items.sort(e)}filter(e){return this.items.filter(e)}find(e){return this.items.find(e)}isEmpty(){return 0===this.items.length}addToStart(e){this.items.unshift(e)}addItems(e){this.items.push(...e)}remove(e){const t=this.items.indexOf(e);-1!==t&&this.items.splice(t,1)}removeAll(){this.items=[]}}class Ce extends Oe{constructor(e){super(e)}add(e){this.items.push(e)}remove(e){this.items=this.items.filter(t=>t!==e)}addAll(e){this.items.push(...e)}unsubscribeAll(){this.items.forEach(e=>e()),this.items=[]}}const _e=class{constructor(e){(0,o.r)(this,e),this.toggleChanged=(0,o.c)(this,"toggleChanged"),this.subscriptions=new Ce,this.checked=!1,this.toggle=()=>{this.checked=!this.checked,this.toggleChanged.emit({checked:this.checked,context:this.context})}}subscribeToLanguageChange(){this.tooltipTranslationKey&&this.subscriptions.add(i.T.onTranslate(this.tooltipTranslationKey,[],e=>{this.tooltipLabel=e}))}disconnectedCallback(){this.subscriptions.unsubscribeAll()}connectedCallback(){this.subscribeToLanguageChange()}render(){return(0,o.h)("section",{key:"f1ece951e2329509c1e7bdb32a53c79ddf4cf1c2"},this.labelKey&&(0,o.h)("label",{key:"d9095af3d86bfe0d975064d7190d7831cd19b0df"},(0,o.h)("strong",{key:"f5dd47be55d2f9df3b02d3ea2f635676085998de"},(0,o.h)("translate-label",{key:"e419321511358b26628510c8f734cab0e11b0d2f",labelKey:this.labelKey})," ")),(0,o.h)("button",{key:"82488ad21b82be29d4e3a51f511c15c4f401a012",class:"toggle-switch",onClick:this.toggle,"tooltip-append-to":"parent","tooltip-content":this.tooltipLabel,"tooltip-placement":a.O.TOP},(0,o.h)("input",{key:"cdcee57b9bbd362c9f309df7361b9be752e9d125",type:"checkbox",checked:this.checked}),(0,o.h)("label",{key:"b76a4e0d310c72bd971303296ac9129e48413c7f"})))}};_e.style='.toggle-switch{all:unset;clear:both;margin:0 5px;width:36px}.toggle-switch:focus{outline:none;box-shadow:none}.toggle-switch:focus-visible{outline:none;box-shadow:none}.toggle-switch input:empty{display:none}.toggle-switch input:empty~label{position:relative;cursor:pointer;user-select:none;margin:0.05em 0.6em -0.05em 0;vertical-align:text-bottom}.toggle-switch input:empty~label:before{display:block;content:" ";width:2.2em;height:1.25em;background-color:var(--gw-toggleswitch-background);border-radius:10em;transition:all 100ms ease-in}.toggle-switch input:empty~label:after{position:absolute;display:block;top:0.08em;left:0.1em;content:" ";width:0.9em;height:0.9em;background-color:var(--gw-toggleswitch-handle-background);border:1px solid var(--gw-toggleswitch-background);border-radius:50%;transition:all 100ms ease-in}.toggle-switch input:checked~label:before{background-color:var(--gw-toggleswitch-checked-background)}.toggle-switch input:checked~label:after{left:1em;background-color:var(--gw-toggleswitch-handle-checked-background);border:1px solid var(--gw-toggleswitch-checked-background)}'},51494(e,t,n){var o;n.d(t,{O:()=>o}),function(e){e.LEFT="left",e.RIGHT="right",e.TOP="top",e.BOTTOM="bottom",e.AUTO="auto"}(o||(o={}))},54096(e,t,n){n.d(t,{L:()=>i,T:()=>l,s:()=>r});var o=n(57154);function r(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value}class i{static get logger(){return o.Loggers.getLoggerInstance("SharedComponents")}}class a{constructor(){this.languageContextService=o.ServiceProvider.get(o.LanguageContextService),this.translationChangedObservers={},this.logger=i.logger,this.defaultBundle=this.languageContextService.getDefaultBundle(),this.subscribeToBundleChange()}onTranslate(e,t=[],n=()=>{}){this.translationChangedObservers[e]=this.translationChangedObservers[e]||[];const o={parameters:t,callback:n};return this.translationChangedObservers[e].push(o),n(this.translate(e,t)),()=>{const t=this.translationChangedObservers[e].indexOf(o);-1!==t&&this.translationChangedObservers[e].splice(t,1)}}translate(e,t){return this.translateInLocale(e,t)}translateInLocale(e,t){let n=this.translateFromBundle(this.currentBundle,e);return n||(n=this.translateFromBundle(this.defaultBundle,e)),n?(n=this.applyParameters(n,t),r(n)):(this.logger.warn(`Missing translation for key: [${e}]`),e)}translateFromBundle(e,t){if(!e)return;let n=e[t];return"string"!=typeof n&&(n=this.translateAsJsonObject(e,t)),n}translateAsJsonObject(e,t){if(!t)return;let n=t.split(".");return this.getTranslation(e,n)}getTranslation(e,t){if(!t||!e)return;const n=e[t.splice(0,1)[0]];return 0===t.length?n:"string"!=typeof n?t.length>0?this.getTranslation(n,t):n:void 0}applyParameters(e,t){return t?t.reduce((e,t)=>a.replaceAll(e,t),e):e}static replaceAll(e,t){return t?e.split(`{{${t.key}}}`).join(t.value):e}notifyTranslationsChanged(){Object.keys(this.translationChangedObservers).forEach(e=>{(this.translationChangedObservers[e]||[]).forEach(t=>t.callback(this.translate(e,t.parameters)))})}subscribeToBundleChange(){this.languageChangeSubscription=this.languageContextService.onLanguageBundleChanged(e=>{e&&(this.currentBundle=e,this.notifyTranslationsChanged())})}destroy(){this.languageChangeSubscription&&this.languageChangeSubscription()}}const l=new a}};
|
|
3
|
+
//# sourceMappingURL=58328.495346dc138da6b93429.bundle.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */
|
|
2
|
+
|
|
3
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"58328.495346dc138da6b93429.bundle.js","mappings":"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sG,GAC9C,GAAIC,EAAM,CACT,GAAIA,EAAKC,IAAK,OAAOnD,EAAQkD,EAAKC,KAClC,GAA0B,mBAAfD,EAAKjH,MAAsB,OAAO+D,EAAQkD,EAAKjH,MAC3D,CACAU,EAASL,EAAeK,EACzB,CAIA,OAHA,WACC,OAAO,IACR,CAED,CASA,MAAMyG,EAASrE,EAAO,CACrB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAEKsE,EAAQtE,EAAO,CACpB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,eACA,cACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,YACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAEKuE,EAAavE,EAAO,CACzB,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAEKwE,EAAgBxE,EAAO,CAC5B,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAEKyE,EAAWzE,EAAO,CACvB,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAEK0E,EAAmB1E,EAAO,CAC/B,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAEK2E,GAAO3E,EAAO,CAAC,UACf4E,GAAO5E,EAAO,CACnB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,UACA,aACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,cACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,QACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,OACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,UAEK6E,GAAM7E,EAAO,CAClB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,oBACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,YACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,iBACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,mBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,gBACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAEK8E,GAAS9E,EAAO,CACrB,SACA,cACA,QACA,WACA,QACA,cACA,cACA,gBACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SACA,gBACA,SACA,SACA,iBACA,YACA,WACA,cACA,UACA,UACA,gBACA,WACA,WACA,OACA,WACA,WACA,aACA,UACA,SACA,SACA,cACA,gBACA,uBACA,YACA,YACA,aACA,WACA,iBACA,iBACA,YACA,UACA,QACA,UAEK+E,GAAM/E,EAAO,C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","sources":["webpack://root-config/./packages/shared-components/dist/esm/html-util-C8DO915D.js","webpack://root-config/./packages/shared-components/dist/esm/onto-dialog_2.entry.js","webpack://root-config/./packages/shared-components/dist/esm/onto-tooltip-placement-D_J2-9CG.js","webpack://root-config/./packages/shared-components/dist/esm/translation.service-CyWR_ReZ.js"],"sourcesContent":["const INTERACTIVE_ELEMENTS_SELECTOR = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nclass HtmlUtil {\n /**\n * Setter for the document body overflow property.\n *\n * @param newOverflow - the new overflow value.\n *\n * @return the old overflow value.\n */\n static setDocumentBodyOverflow(newOverflow) {\n const oldOverflow = document.body.style.overflow;\n document.body.style.overflow = newOverflow;\n return oldOverflow;\n }\n /**\n * Hides the document body overflow.\n *\n * @return the value of overflow before set it to hidden.\n */\n static hideDocumentBodyOverflow() {\n return HtmlUtil.setDocumentBodyOverflow('hidden');\n }\n /**\n * Focuses the next element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusNextElement(parentElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR) {\n const focusableElements = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const nextIndex = (currentIndex + 1) % focusableElements.length;\n const nextActiveElement = focusableElements[nextIndex];\n if (nextActiveElement) {\n nextActiveElement.focus();\n }\n }\n }\n /**\n * Focuses the previous element within a specified parent element based on the <code>activeElementSelector</code>, that selects all elements to be focused.\n *\n * @param parentElement - The parent element containing the focusable elements.\n * @param activeElementSelector - The CSS selector for identifying focusable elements.\n */\n static focusPreviousElement(parentElement, activeElementSelector = INTERACTIVE_ELEMENTS_SELECTOR) {\n const focusableElements = Array.from(parentElement.querySelectorAll(activeElementSelector));\n if (focusableElements.length > 0) {\n const currentIndex = focusableElements.indexOf(document.activeElement);\n const previousIndex = (currentIndex - 1 + focusableElements.length) % focusableElements.length;\n const previousActiveElement = focusableElements[previousIndex];\n if (previousActiveElement) {\n previousActiveElement.focus();\n }\n }\n }\n static preventLeavingDialog(hostElement, ev) {\n if (ev.key === 'Tab') {\n ev.preventDefault();\n if (ev.shiftKey) {\n HtmlUtil.focusPreviousElement(hostElement);\n }\n else {\n HtmlUtil.focusNextElement(hostElement);\n }\n }\n }\n /**\n * Focuses an element in the document based on the provided CSS selector.\n *\n * @param selector - A CSS selector string used to identify the element to focus.\n * This should be a valid CSS selector that uniquely identifies the target element.\n */\n static focusElement(selector) {\n const element = document.querySelector(selector);\n element === null || element === void 0 ? void 0 : element.focus();\n }\n /**\n * Scrolls an element into the visible area of its scrollable container.\n *\n * @param elementSelector - A CSS selector string used to identify the element to scroll into view.\n * This should be a valid CSS selector that uniquely identifies the target element.\n * @param options the scroll into view options.\n */\n static scrollElementIntoView(elementSelector, options = { block: 'nearest' }) {\n const element = document.querySelector(elementSelector);\n if (!element) {\n return;\n }\n element.scrollIntoView(options);\n }\n /**\n * Waits for an element to appear in the DOM by observing DOM mutations.\n * This function creates a MutationObserver that watches for changes in the document body\n * and resolves with the element once it becomes available.\n *\n * @param selector - A CSS selector string used to identify the element to wait for.\n * This should be a valid CSS selector that uniquely identifies the target element.\n *\n * @returns A Promise that resolves with the found HTMLElement when it appears in the DOM,\n * or rejects if an error occurs during the observation process.\n */\n static waitForElement(selector) {\n return new Promise((resolve, reject) => {\n const observer = new MutationObserver(() => {\n try {\n const element = document.querySelector(selector);\n if (element) {\n observer.disconnect();\n resolve(element);\n }\n }\n catch (error) {\n observer.disconnect();\n reject(error);\n }\n });\n observer.observe(document.body, { subtree: true, childList: true, attributes: true });\n });\n }\n}\n\nexport { HtmlUtil as H };\n","import { r as registerInstance, h, a as Host, d as getElement, c as createEvent } from './index-BntG-4Sv.js';\nimport { H as HtmlUtil } from './html-util-C8DO915D.js';\nimport { T as TranslationService } from './translation.service-CyWR_ReZ.js';\nimport { O as OntoTooltipPlacement } from './onto-tooltip-placement-D_J2-9CG.js';\nimport '@ontotext/workbench-api';\n\nconst ontoDialogCss = \".dialog-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:9998;margin-left:-10px;background-color:rgba(0, 0, 0, 0.5);font-family:var(--main-font), sans-serif;font-weight:var(--main-font-weight);color:var(--gw-secondary-base, var(--base-text-color))}.dialog{z-index:1001;max-width:60vw;max-height:90vh;font-family:inherit;font-weight:inherit;display:flex;flex-direction:column;position:relative;justify-content:space-between;border:none;color:var(--gw-dialog-color);background-color:var(--gw-dialog-background);box-shadow:0 5px 15px rgba(0, 0, 0, 0.5)}.dialog .dialog-header{display:flex;justify-content:space-between;padding:15px;font-size:20px}.dialog .dialog-header .dialog-title{margin:0.5rem 0;font-weight:400}.dialog .dialog-header .close-btn{padding:0;cursor:pointer;background:0 0;border:0}.dialog .dialog-body{padding:0 15px 15px;overflow:auto}.dialog .dialog-footer{display:flex;justify-content:flex-end;padding:15px}\";\n\nconst OntoDialog = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.handleClose = (evt) => {\n this.config.onClose(evt);\n };\n }\n componentDidLoad() {\n this.documentOverflow = HtmlUtil.hideDocumentBodyOverflow();\n this.hostElement.addEventListener('keydown', this.preventLeavingDialog.bind(this));\n }\n disconnectedCallback() {\n this.hostElement.removeEventListener('keydown', this.preventLeavingDialog.bind(this));\n HtmlUtil.setDocumentBodyOverflow(this.documentOverflow);\n }\n render() {\n return (h(Host, { key: 'ab4b8093c0997aa2f6edc28df2fae1a518ba67ba', tabindex: \"-1\" }, h(\"div\", { key: 'e500065a811dcd5540867cb6bcd490b4dc75cba4', class: `dialog-overlay ${this.config.modalClass ? this.config.modalClass : ''}` }, h(\"dialog\", { key: '4625bdcee25d1acb13a2483c1378d7624660cc2a', class: \"dialog\" }, h(\"header\", { key: '2a4f6a9f6c1792414199fd7f7b58034bcc697597', class: \"dialog-header\" }, h(\"h3\", { key: '7c5f1aecf01f2da7c8acd7cd3cea551c5f54902a', class: \"dialog-title\" }, this.config.dialogTitle), this.config.onClose && (h(\"button\", { key: 'db2545a17c48cfe37132b4e18347e8a6f4b5e046', \"data-test\": 'close-dialog-btn', class: \"close-btn onto-btn\", onClick: this.handleClose }, h(\"i\", { key: '73f463091799ff17faf7bea9e5d523a7fae5dc81', class: \"ri-close-line ri-2x\" })))), h(\"main\", { key: 'c238ecbc94d02b4d1a7459751eb0a8cf78c2ef01', class: \"dialog-body\" }, h(\"slot\", { key: '99ede8e5090b26c63aa3f6add30505177b0eff5a', name: \"body\" })), h(\"footer\", { key: 'b4718b33ff8b4f2a9124a10a5dca4bdb468057fd', class: \"dialog-footer\" }, h(\"slot\", { key: '8f583242179fd0fc33aba35bf7ad3a655849d75b', name: \"footer\" }))))));\n }\n preventLeavingDialog(ev) {\n HtmlUtil.preventLeavingDialog(this.hostElement, ev);\n }\n get hostElement() { return getElement(this); }\n};\nOntoDialog.style = ontoDialogCss;\n\nclass ObjectUtil {\n /**\n * Performs a deep equality check between two values.\n *\n * This function compares two values to determine if they are deeply equal.\n * It supports comparison of primitives, arrays, and objects, including nested structures.\n *\n * @param obj1 - The first value to compare.\n * @param obj2 - The second value to compare.\n * @returns `true` if both values are deeply equal, otherwise `false`.\n *\n * @example\n * // Comparing two deeply nested objects\n * const obj1 = { a: 1, b: { c: [1, 2, 3], d: { e: 'hello' } } };\n * const obj2 = { a: 1, b: { c: [1, 2, 3], d: { e: 'hello' } } };\n * console.log(deepEqual(obj1, obj2)); // true\n *\n * @example\n * // Comparing two arrays with different values\n * const arr1 = [1, 2, 3];\n * const arr2 = [1, 2, 4];\n * console.log(deepEqual(arr1, arr2)); // false\n */\n static deepEqual(obj1, obj2) {\n // Check if both values are strictly equal (handles primitives and references)\n if (obj1 === obj2) {\n return true;\n }\n // Check if either value is null or undefined\n if (obj1 === null || obj1 === undefined || obj2 === null || obj2 === undefined) {\n return false;\n }\n // Check if both values are objects\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n // Ensure both have the same constructor (handles different types of objects, like Date, RegExp)\n if (obj1.constructor !== obj2.constructor) {\n return false;\n }\n // Handle arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n // Check if both arrays have the same length\n if (obj1.length !== obj2.length) {\n return false;\n }\n // Compare each element recursively\n for (let i = 0; i < obj1.length; i++) {\n if (!ObjectUtil.deepEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n // Handle plain objects\n if (!Array.isArray(obj1) && !Array.isArray(obj2)) {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n // Check if both objects have the same number of keys\n if (keys1.length !== keys2.length) {\n return false;\n }\n // Check if all keys and values are deeply equal\n for (const key of keys1) {\n if (!(key in obj2) || // Ensure the key exists in obj2\n !ObjectUtil.deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n }\n // If one is an array and the other is not, they are not equal\n return false;\n }\n // Default case: Not equal\n return false;\n }\n /**\n * Creates a deep copy of the given object.\n *\n * This method recursively copies all properties and values of the object,\n * handling different types such as primitives, arrays, plain objects, and built-in types.\n * It ensures that the copied object does not share references with the original object,\n * meaning that all nested structures are also copied independently.\n *\n * Special handling:\n * - Objects with a `copy()` method will use that method for cloning\n * - Date objects are cloned preserving their time value\n * - RegExp objects are cloned with their pattern and flags\n * - Map and Set objects are deeply cloned with their contents\n * - Arrays are deeply cloned with all elements\n * - Plain objects are recursively cloned\n *\n * @param obj - The object to be deeply copied. Can be any type, including primitives,\n * arrays, objects, or built-in types.\n * @returns A deep copy of the object. If the input is a primitive, null, undefined,\n * or a function, the original value is returned as-is.\n */\n static deepCopy(obj) {\n // Handle primitives, null, undefined, and functions\n if (typeof obj !== 'object' || obj === null || obj === undefined || typeof obj === 'function') {\n return obj;\n }\n // Check if object has a custom copy method\n if (ObjectUtil.hasCopyMethod(obj)) {\n return obj.copy();\n }\n // Try to handle built-in types (including arrays)\n const builtInCopy = ObjectUtil.copyBuiltInType(obj);\n if (builtInCopy !== null) {\n return builtInCopy;\n }\n // Handle plain objects or objects with a prototype\n return ObjectUtil.copyPlainObject(obj);\n }\n /**\n * Attempts to copy built-in types like Array, Date, RegExp, Map, and Set.\n * @param obj - The object to copy.\n * @returns A copy of the object if it's a built-in type, or null if it's not a recognized built-in type.\n */\n static copyBuiltInType(obj) {\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map(item => ObjectUtil.deepCopy(item));\n }\n // Handle Date objects\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n // Handle RegExp objects\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags);\n }\n // Handle Map objects\n if (obj instanceof Map) {\n return new Map(Array.from(obj.entries()).map(([key, value]) => [\n ObjectUtil.deepCopy(key),\n ObjectUtil.deepCopy(value)\n ]));\n }\n // Handle Set objects\n if (obj instanceof Set) {\n return new Set(Array.from(obj.values()).map(value => ObjectUtil.deepCopy(value)));\n }\n return null;\n }\n /**\n * Creates a deep copy of a plain object.\n * @param obj - The object to copy.\n * @returns A deep copy of the object.\n */\n static copyPlainObject(obj) {\n const result = Object.create(Object.getPrototypeOf(obj));\n // Recursively copy each key-value pair\n for (const key of Object.keys(obj)) {\n result[key] = ObjectUtil.deepCopy(obj[key]);\n }\n return result;\n }\n /**\n * Type guard to check if the value has a 'copy' method.\n * @param value - The value to check.\n * @returns True if the value has a 'copy' method, false otherwise.\n */\n static hasCopyMethod(value) {\n return typeof value === 'object' && value !== null && Object.prototype.hasOwnProperty.call(value, 'copy') && typeof value.copy === 'function';\n }\n /**\n * Merges an object with default values.\n *\n * For each property in `defaults`, if the value in `object` is `null` or `undefined`,\n * the default value is used instead.\n *\n * Nested objects are merged recursively.\n * Arrays and other non-plain values are treated as single values and are not merged.\n *\n * The returned object is a new object and does not share references with the inputs.\n *\n * @template T - The shape of the object being merged\n * @param object - Source object whose values take precedence over defaults\n * @param defaults - Default values applied when properties are missing or null\n * @returns A new object containing the merged result\n *\n * @example\n * ObjectUtil.mergeWithDefaults(\n * { a: 1 },\n * { a: 10, b: 20 }\n * );\n * // { a: 1, b: 20 }\n */\n static mergeWithDefaults(object, defaults) {\n if (typeof object !== 'object' || object === null) {\n return object;\n }\n // Deep copy to avoid any shared references\n const result = ObjectUtil.deepCopy(object);\n Object.keys(defaults).forEach((key) => {\n const objValue = result[key];\n const defaultValue = defaults[key];\n if (ObjectUtil.isNullOrUndefined(objValue)) {\n result[key] = ObjectUtil.deepCopy(defaultValue);\n }\n else if (ObjectUtil.canRecursivelyMerge(objValue, defaultValue)) {\n result[key] = ObjectUtil.mergeWithDefaults(objValue, defaultValue);\n }\n });\n return result;\n }\n /**\n * Determines whether two values can be recursively merged.\n *\n * Only plain objects (non-null, non-array values) are considered mergeable.\n *\n * @param a - First value to check\n * @param b - Second value to check\n * @returns True if both values are plain objects suitable for deep merging\n */\n static canRecursivelyMerge(a, b) {\n return (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null && !Array.isArray(a) && !Array.isArray(b));\n }\n}\n/**\n * Checks if the given object is null or undefined.\n * @param obj - The object to check.\n * @returns True if the object is null or undefined, false otherwise.\n */\nObjectUtil.isNullOrUndefined = (obj) => {\n return obj === null || obj === undefined;\n};\n\n/*! @license DOMPurify 3.4.16 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.16/LICENSE */\nfunction _arrayLikeToArray(r, a) {\n\t(null == a || a > r.length) && (a = r.length);\n\tfor (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n\treturn n;\n}\nfunction _arrayWithHoles(r) {\n\tif (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n\tvar t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n\tif (null != t) {\n\t\tvar e, n, i, u, a = [], f = true, o = false;\n\t\ttry {\n\t\t\tif (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = true);\n\t\t} catch (r) {\n\t\t\to = true, n = r;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n\t\t\t} finally {\n\t\t\t\tif (o) throw n;\n\t\t\t}\n\t\t}\n\t\treturn a;\n\t}\n}\nfunction _nonIterableRest() {\n\tthrow new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\nfunction _slicedToArray(r, e) {\n\treturn _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n\tif (r) {\n\t\tif (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n\t\tvar t = {}.toString.call(r).slice(8, -1);\n\t\treturn \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n\t}\n}\nconst entries = Object.entries;\nconst setPrototypeOf = Object.setPrototypeOf;\nconst isFrozen = Object.isFrozen;\nconst getPrototypeOf = Object.getPrototypeOf;\nconst getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze;\nlet seal = Object.seal;\nlet create = Object.create;\nlet _ref = typeof Reflect !== \"undefined\" && Reflect;\nlet apply = _ref.apply;\nlet construct = _ref.construct;\nif (!freeze) freeze = function freeze(x) {\n\treturn x;\n};\nif (!seal) seal = function seal(x) {\n\treturn x;\n};\nif (!apply) apply = function apply(func, thisArg) {\n\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\treturn func.apply(thisArg, args);\n};\nif (!construct) construct = function construct(Func) {\n\tfor (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];\n\treturn new Func(...args);\n};\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === \"undefined\" ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === \"undefined\" ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n* Creates a new function that calls the given function with a specified thisArg and arguments.\n*\n* @param func - The function to be wrapped and called.\n* @returns A new function that calls the given function with a specified thisArg and arguments.\n*/\nfunction unapply(func) {\n\treturn function(thisArg) {\n\t\tif (thisArg instanceof RegExp) thisArg.lastIndex = 0;\n\t\tfor (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];\n\t\treturn apply(func, thisArg, args);\n\t};\n}\n/**\n* Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n*\n* @param func - The constructor function to be wrapped and called.\n* @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n*/\nfunction unconstruct(Func) {\n\treturn function() {\n\t\tfor (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];\n\t\treturn construct(Func, args);\n\t};\n}\n/**\n* Add properties to a lookup table\n*\n* @param set - The set to which elements will be added.\n* @param array - The array containing elements to be added to the set.\n* @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n* @returns The modified set with added elements.\n*/\nfunction addToSet(set, array) {\n\tlet transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;\n\tif (setPrototypeOf) setPrototypeOf(set, null);\n\tif (!arrayIsArray(array)) return set;\n\tlet l = array.length;\n\twhile (l--) {\n\t\tlet element = array[l];\n\t\tif (typeof element === \"string\") {\n\t\t\tconst lcElement = transformCaseFunc(element);\n\t\t\tif (lcElement !== element) {\n\t\t\t\tif (!isFrozen(array)) array[l] = lcElement;\n\t\t\t\telement = lcElement;\n\t\t\t}\n\t\t}\n\t\tset[element] = true;\n\t}\n\treturn set;\n}\n/**\n* Clean up an array to harden against CSPP\n*\n* @param array - The array to be cleaned.\n* @returns The cleaned version of the array\n*/\nfunction cleanArray(array) {\n\tfor (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;\n\treturn array;\n}\n/**\n* Shallow clone an object\n*\n* @param object - The object to be cloned.\n* @returns A new object that copies the original.\n*/\nfunction clone(object) {\n\tconst newObject = create(null);\n\tfor (const _ref2 of entries(object)) {\n\t\tvar _ref3 = _slicedToArray(_ref2, 2);\n\t\tconst property = _ref3[0];\n\t\tconst value = _ref3[1];\n\t\tif (objectHasOwnProperty(object, property)) {\n\t\t\tif (arrayIsArray(value)) newObject[property] = cleanArray(value);\n\t\t\telse if (value && typeof value === \"object\" && value.constructor === Object) newObject[property] = clone(value);\n\t\t\telse newObject[property] = value;\n\t\t}\n\t}\n\treturn newObject;\n}\n/**\n* Convert non-node values into strings without depending on direct property access.\n*\n* @param value - The value to stringify.\n* @returns A string representation of the provided value.\n*/\nfunction stringifyValue(value) {\n\tswitch (typeof value) {\n\t\tcase \"string\": return value;\n\t\tcase \"number\": return numberToString(value);\n\t\tcase \"boolean\": return booleanToString(value);\n\t\tcase \"bigint\": return bigintToString ? bigintToString(value) : \"0\";\n\t\tcase \"symbol\": return symbolToString ? symbolToString(value) : \"Symbol()\";\n\t\tcase \"undefined\": return objectToString(value);\n\t\tcase \"function\":\n\t\tcase \"object\": {\n\t\t\tif (value === null) return objectToString(value);\n\t\t\tconst valueAsRecord = value;\n\t\t\tconst valueToString = lookupGetter(valueAsRecord, \"toString\");\n\t\t\tif (typeof valueToString === \"function\") {\n\t\t\t\tconst stringified = valueToString(valueAsRecord);\n\t\t\t\treturn typeof stringified === \"string\" ? stringified : objectToString(stringified);\n\t\t\t}\n\t\t\treturn objectToString(value);\n\t\t}\n\t\tdefault: return objectToString(value);\n\t}\n}\n/**\n* This method automatically checks if the prop is function or getter and behaves accordingly.\n*\n* @param object - The object to look up the getter function in its prototype chain.\n* @param prop - The property name for which to find the getter function.\n* @returns The getter function found in the prototype chain or a fallback function.\n*/\nfunction lookupGetter(object, prop) {\n\twhile (object !== null) {\n\t\tconst desc = getOwnPropertyDescriptor(object, prop);\n\t\tif (desc) {\n\t\t\tif (desc.get) return unapply(desc.get);\n\t\t\tif (typeof desc.value === \"function\") return unapply(desc.value);\n\t\t}\n\t\tobject = getPrototypeOf(object);\n\t}\n\tfunction fallbackValue() {\n\t\treturn null;\n\t}\n\treturn fallbackValue;\n}\nfunction isRegex(value) {\n\ttry {\n\t\tregExpTest(value, \"\");\n\t\treturn true;\n\t} catch (_unused) {\n\t\treturn false;\n\t}\n}\nconst html$1 = freeze([\n\t\"a\",\n\t\"abbr\",\n\t\"acronym\",\n\t\"address\",\n\t\"area\",\n\t\"article\",\n\t\"aside\",\n\t\"audio\",\n\t\"b\",\n\t\"bdi\",\n\t\"bdo\",\n\t\"big\",\n\t\"blink\",\n\t\"blockquote\",\n\t\"body\",\n\t\"br\",\n\t\"button\",\n\t\"canvas\",\n\t\"caption\",\n\t\"center\",\n\t\"cite\",\n\t\"code\",\n\t\"col\",\n\t\"colgroup\",\n\t\"content\",\n\t\"data\",\n\t\"datalist\",\n\t\"dd\",\n\t\"decorator\",\n\t\"del\",\n\t\"details\",\n\t\"dfn\",\n\t\"dialog\",\n\t\"dir\",\n\t\"div\",\n\t\"dl\",\n\t\"dt\",\n\t\"element\",\n\t\"em\",\n\t\"fieldset\",\n\t\"figcaption\",\n\t\"figure\",\n\t\"font\",\n\t\"footer\",\n\t\"form\",\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\",\n\t\"head\",\n\t\"header\",\n\t\"hgroup\",\n\t\"hr\",\n\t\"html\",\n\t\"i\",\n\t\"img\",\n\t\"input\",\n\t\"ins\",\n\t\"kbd\",\n\t\"label\",\n\t\"legend\",\n\t\"li\",\n\t\"main\",\n\t\"map\",\n\t\"mark\",\n\t\"marquee\",\n\t\"menu\",\n\t\"menuitem\",\n\t\"meter\",\n\t\"nav\",\n\t\"nobr\",\n\t\"ol\",\n\t\"optgroup\",\n\t\"option\",\n\t\"output\",\n\t\"p\",\n\t\"picture\",\n\t\"pre\",\n\t\"progress\",\n\t\"q\",\n\t\"rp\",\n\t\"rt\",\n\t\"ruby\",\n\t\"s\",\n\t\"samp\",\n\t\"search\",\n\t\"section\",\n\t\"select\",\n\t\"shadow\",\n\t\"slot\",\n\t\"small\",\n\t\"source\",\n\t\"spacer\",\n\t\"span\",\n\t\"strike\",\n\t\"strong\",\n\t\"style\",\n\t\"sub\",\n\t\"summary\",\n\t\"sup\",\n\t\"table\",\n\t\"tbody\",\n\t\"td\",\n\t\"template\",\n\t\"textarea\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"time\",\n\t\"tr\",\n\t\"track\",\n\t\"tt\",\n\t\"u\",\n\t\"ul\",\n\t\"var\",\n\t\"video\",\n\t\"wbr\"\n]);\nconst svg$1 = freeze([\n\t\"svg\",\n\t\"a\",\n\t\"altglyph\",\n\t\"altglyphdef\",\n\t\"altglyphitem\",\n\t\"animatecolor\",\n\t\"animatemotion\",\n\t\"animatetransform\",\n\t\"circle\",\n\t\"clippath\",\n\t\"defs\",\n\t\"desc\",\n\t\"ellipse\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"filter\",\n\t\"font\",\n\t\"g\",\n\t\"glyph\",\n\t\"glyphref\",\n\t\"hkern\",\n\t\"image\",\n\t\"inputmode\",\n\t\"line\",\n\t\"lineargradient\",\n\t\"marker\",\n\t\"mask\",\n\t\"metadata\",\n\t\"mpath\",\n\t\"part\",\n\t\"path\",\n\t\"pattern\",\n\t\"polygon\",\n\t\"polyline\",\n\t\"radialgradient\",\n\t\"rect\",\n\t\"stop\",\n\t\"style\",\n\t\"switch\",\n\t\"symbol\",\n\t\"text\",\n\t\"textpath\",\n\t\"title\",\n\t\"tref\",\n\t\"tspan\",\n\t\"view\",\n\t\"vkern\"\n]);\nconst svgFilters = freeze([\n\t\"feBlend\",\n\t\"feColorMatrix\",\n\t\"feComponentTransfer\",\n\t\"feComposite\",\n\t\"feConvolveMatrix\",\n\t\"feDiffuseLighting\",\n\t\"feDisplacementMap\",\n\t\"feDistantLight\",\n\t\"feDropShadow\",\n\t\"feFlood\",\n\t\"feFuncA\",\n\t\"feFuncB\",\n\t\"feFuncG\",\n\t\"feFuncR\",\n\t\"feGaussianBlur\",\n\t\"feImage\",\n\t\"feMerge\",\n\t\"feMergeNode\",\n\t\"feMorphology\",\n\t\"feOffset\",\n\t\"fePointLight\",\n\t\"feSpecularLighting\",\n\t\"feSpotLight\",\n\t\"feTile\",\n\t\"feTurbulence\"\n]);\nconst svgDisallowed = freeze([\n\t\"animate\",\n\t\"color-profile\",\n\t\"cursor\",\n\t\"discard\",\n\t\"font-face\",\n\t\"font-face-format\",\n\t\"font-face-name\",\n\t\"font-face-src\",\n\t\"font-face-uri\",\n\t\"foreignobject\",\n\t\"hatch\",\n\t\"hatchpath\",\n\t\"mesh\",\n\t\"meshgradient\",\n\t\"meshpatch\",\n\t\"meshrow\",\n\t\"missing-glyph\",\n\t\"script\",\n\t\"set\",\n\t\"solidcolor\",\n\t\"unknown\",\n\t\"use\"\n]);\nconst mathMl$1 = freeze([\n\t\"math\",\n\t\"menclose\",\n\t\"merror\",\n\t\"mfenced\",\n\t\"mfrac\",\n\t\"mglyph\",\n\t\"mi\",\n\t\"mlabeledtr\",\n\t\"mmultiscripts\",\n\t\"mn\",\n\t\"mo\",\n\t\"mover\",\n\t\"mpadded\",\n\t\"mphantom\",\n\t\"mroot\",\n\t\"mrow\",\n\t\"ms\",\n\t\"mspace\",\n\t\"msqrt\",\n\t\"mstyle\",\n\t\"msub\",\n\t\"msup\",\n\t\"msubsup\",\n\t\"mtable\",\n\t\"mtd\",\n\t\"mtext\",\n\t\"mtr\",\n\t\"munder\",\n\t\"munderover\",\n\t\"mprescripts\"\n]);\nconst mathMlDisallowed = freeze([\n\t\"maction\",\n\t\"maligngroup\",\n\t\"malignmark\",\n\t\"mlongdiv\",\n\t\"mscarries\",\n\t\"mscarry\",\n\t\"msgroup\",\n\t\"mstack\",\n\t\"msline\",\n\t\"msrow\",\n\t\"semantics\",\n\t\"annotation\",\n\t\"annotation-xml\",\n\t\"mprescripts\",\n\t\"none\"\n]);\nconst text = freeze([\"#text\"]);\nconst html = freeze([\n\t\"accept\",\n\t\"action\",\n\t\"align\",\n\t\"alt\",\n\t\"autocapitalize\",\n\t\"autocomplete\",\n\t\"autopictureinpicture\",\n\t\"autoplay\",\n\t\"background\",\n\t\"bgcolor\",\n\t\"border\",\n\t\"capture\",\n\t\"cellpadding\",\n\t\"cellspacing\",\n\t\"checked\",\n\t\"cite\",\n\t\"class\",\n\t\"clear\",\n\t\"color\",\n\t\"cols\",\n\t\"colspan\",\n\t\"command\",\n\t\"commandfor\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"coords\",\n\t\"crossorigin\",\n\t\"datetime\",\n\t\"decoding\",\n\t\"default\",\n\t\"dir\",\n\t\"disabled\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"download\",\n\t\"draggable\",\n\t\"enctype\",\n\t\"enterkeyhint\",\n\t\"exportparts\",\n\t\"face\",\n\t\"for\",\n\t\"headers\",\n\t\"height\",\n\t\"hidden\",\n\t\"high\",\n\t\"href\",\n\t\"hreflang\",\n\t\"id\",\n\t\"inert\",\n\t\"inputmode\",\n\t\"integrity\",\n\t\"ismap\",\n\t\"kind\",\n\t\"label\",\n\t\"lang\",\n\t\"list\",\n\t\"loading\",\n\t\"loop\",\n\t\"low\",\n\t\"max\",\n\t\"maxlength\",\n\t\"media\",\n\t\"method\",\n\t\"min\",\n\t\"minlength\",\n\t\"multiple\",\n\t\"muted\",\n\t\"name\",\n\t\"nonce\",\n\t\"noshade\",\n\t\"novalidate\",\n\t\"nowrap\",\n\t\"open\",\n\t\"optimum\",\n\t\"part\",\n\t\"pattern\",\n\t\"placeholder\",\n\t\"playsinline\",\n\t\"popover\",\n\t\"popovertarget\",\n\t\"popovertargetaction\",\n\t\"poster\",\n\t\"preload\",\n\t\"pubdate\",\n\t\"radiogroup\",\n\t\"readonly\",\n\t\"rel\",\n\t\"required\",\n\t\"rev\",\n\t\"reversed\",\n\t\"role\",\n\t\"rows\",\n\t\"rowspan\",\n\t\"spellcheck\",\n\t\"scope\",\n\t\"selected\",\n\t\"shape\",\n\t\"size\",\n\t\"sizes\",\n\t\"slot\",\n\t\"span\",\n\t\"srclang\",\n\t\"start\",\n\t\"src\",\n\t\"srcset\",\n\t\"step\",\n\t\"style\",\n\t\"summary\",\n\t\"tabindex\",\n\t\"title\",\n\t\"translate\",\n\t\"type\",\n\t\"usemap\",\n\t\"valign\",\n\t\"value\",\n\t\"width\",\n\t\"wrap\",\n\t\"xmlns\"\n]);\nconst svg = freeze([\n\t\"accent-height\",\n\t\"accumulate\",\n\t\"additive\",\n\t\"alignment-baseline\",\n\t\"amplitude\",\n\t\"ascent\",\n\t\"attributename\",\n\t\"attributetype\",\n\t\"azimuth\",\n\t\"basefrequency\",\n\t\"baseline-shift\",\n\t\"begin\",\n\t\"bias\",\n\t\"by\",\n\t\"class\",\n\t\"clip\",\n\t\"clippathunits\",\n\t\"clip-path\",\n\t\"clip-rule\",\n\t\"color\",\n\t\"color-interpolation\",\n\t\"color-interpolation-filters\",\n\t\"color-profile\",\n\t\"color-rendering\",\n\t\"cx\",\n\t\"cy\",\n\t\"d\",\n\t\"dx\",\n\t\"dy\",\n\t\"diffuseconstant\",\n\t\"direction\",\n\t\"display\",\n\t\"divisor\",\n\t\"dominant-baseline\",\n\t\"dur\",\n\t\"edgemode\",\n\t\"elevation\",\n\t\"end\",\n\t\"exponent\",\n\t\"fill\",\n\t\"fill-opacity\",\n\t\"fill-rule\",\n\t\"filter\",\n\t\"filterunits\",\n\t\"flood-color\",\n\t\"flood-opacity\",\n\t\"font-family\",\n\t\"font-size\",\n\t\"font-size-adjust\",\n\t\"font-stretch\",\n\t\"font-style\",\n\t\"font-variant\",\n\t\"font-weight\",\n\t\"fx\",\n\t\"fy\",\n\t\"g1\",\n\t\"g2\",\n\t\"glyph-name\",\n\t\"glyphref\",\n\t\"gradientunits\",\n\t\"gradienttransform\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"image-rendering\",\n\t\"in\",\n\t\"in2\",\n\t\"intercept\",\n\t\"k\",\n\t\"k1\",\n\t\"k2\",\n\t\"k3\",\n\t\"k4\",\n\t\"kerning\",\n\t\"keypoints\",\n\t\"keysplines\",\n\t\"keytimes\",\n\t\"lang\",\n\t\"lengthadjust\",\n\t\"letter-spacing\",\n\t\"kernelmatrix\",\n\t\"kernelunitlength\",\n\t\"lighting-color\",\n\t\"local\",\n\t\"marker-end\",\n\t\"marker-mid\",\n\t\"marker-start\",\n\t\"markerheight\",\n\t\"markerunits\",\n\t\"markerwidth\",\n\t\"maskcontentunits\",\n\t\"maskunits\",\n\t\"max\",\n\t\"mask\",\n\t\"mask-type\",\n\t\"media\",\n\t\"method\",\n\t\"mode\",\n\t\"min\",\n\t\"name\",\n\t\"numoctaves\",\n\t\"offset\",\n\t\"operator\",\n\t\"opacity\",\n\t\"order\",\n\t\"orient\",\n\t\"orientation\",\n\t\"origin\",\n\t\"overflow\",\n\t\"paint-order\",\n\t\"path\",\n\t\"pathlength\",\n\t\"patterncontentunits\",\n\t\"patterntransform\",\n\t\"patternunits\",\n\t\"pointer-events\",\n\t\"points\",\n\t\"preservealpha\",\n\t\"preserveaspectratio\",\n\t\"primitiveunits\",\n\t\"r\",\n\t\"rx\",\n\t\"ry\",\n\t\"radius\",\n\t\"refx\",\n\t\"refy\",\n\t\"repeatcount\",\n\t\"repeatdur\",\n\t\"restart\",\n\t\"result\",\n\t\"rotate\",\n\t\"scale\",\n\t\"seed\",\n\t\"shape-rendering\",\n\t\"slope\",\n\t\"specularconstant\",\n\t\"specularexponent\",\n\t\"spreadmethod\",\n\t\"startoffset\",\n\t\"stddeviation\",\n\t\"stitchtiles\",\n\t\"stop-color\",\n\t\"stop-opacity\",\n\t\"stroke-dasharray\",\n\t\"stroke-dashoffset\",\n\t\"stroke-linecap\",\n\t\"stroke-linejoin\",\n\t\"stroke-miterlimit\",\n\t\"stroke-opacity\",\n\t\"stroke\",\n\t\"stroke-width\",\n\t\"style\",\n\t\"surfacescale\",\n\t\"systemlanguage\",\n\t\"tabindex\",\n\t\"tablevalues\",\n\t\"targetx\",\n\t\"targety\",\n\t\"transform\",\n\t\"transform-origin\",\n\t\"text-anchor\",\n\t\"text-decoration\",\n\t\"text-orientation\",\n\t\"text-rendering\",\n\t\"textlength\",\n\t\"type\",\n\t\"u1\",\n\t\"u2\",\n\t\"unicode\",\n\t\"values\",\n\t\"vector-effect\",\n\t\"viewbox\",\n\t\"visibility\",\n\t\"version\",\n\t\"vert-adv-y\",\n\t\"vert-origin-x\",\n\t\"vert-origin-y\",\n\t\"width\",\n\t\"word-spacing\",\n\t\"wrap\",\n\t\"writing-mode\",\n\t\"xchannelselector\",\n\t\"ychannelselector\",\n\t\"x\",\n\t\"x1\",\n\t\"x2\",\n\t\"xmlns\",\n\t\"y\",\n\t\"y1\",\n\t\"y2\",\n\t\"z\",\n\t\"zoomandpan\"\n]);\nconst mathMl = freeze([\n\t\"accent\",\n\t\"accentunder\",\n\t\"align\",\n\t\"bevelled\",\n\t\"close\",\n\t\"columnalign\",\n\t\"columnlines\",\n\t\"columnspacing\",\n\t\"columnspan\",\n\t\"denomalign\",\n\t\"depth\",\n\t\"dir\",\n\t\"display\",\n\t\"displaystyle\",\n\t\"encoding\",\n\t\"fence\",\n\t\"frame\",\n\t\"height\",\n\t\"href\",\n\t\"id\",\n\t\"largeop\",\n\t\"length\",\n\t\"linethickness\",\n\t\"lquote\",\n\t\"lspace\",\n\t\"mathbackground\",\n\t\"mathcolor\",\n\t\"mathsize\",\n\t\"mathvariant\",\n\t\"maxsize\",\n\t\"minsize\",\n\t\"movablelimits\",\n\t\"notation\",\n\t\"numalign\",\n\t\"open\",\n\t\"rowalign\",\n\t\"rowlines\",\n\t\"rowspacing\",\n\t\"rowspan\",\n\t\"rspace\",\n\t\"rquote\",\n\t\"scriptlevel\",\n\t\"scriptminsize\",\n\t\"scriptsizemultiplier\",\n\t\"selection\",\n\t\"separator\",\n\t\"separators\",\n\t\"stretchy\",\n\t\"subscriptshift\",\n\t\"supscriptshift\",\n\t\"symmetric\",\n\t\"voffset\",\n\t\"width\",\n\t\"xmlns\"\n]);\nconst xml = freeze([\n\t\"xlink:href\",\n\t\"xml:id\",\n\t\"xlink:title\",\n\t\"xml:space\",\n\t\"xmlns:xlink\"\n]);\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/);\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/);\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\nconst NODE_TYPE = {\n\telement: 1,\n\ttext: 3,\n\tprocessingInstruction: 7,\n\tcomment: 8,\n\tdocument: 9,\n\tdocumentFragment: 11};\nconst LITERAL_TEXT_ELEMENT_NAMES = [\n\t\"style\",\n\t\"script\",\n\t\"xmp\",\n\t\"iframe\",\n\t\"noembed\",\n\t\"noframes\",\n\t\"plaintext\",\n\t\"noscript\"\n];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\nconst LITERAL_TEXT_CLOSE = function() {\n\tconst map = {};\n\tarrayForEach(LITERAL_TEXT_ELEMENT_NAMES, (name) => {\n\t\tmap[name] = seal(new RegExp(\"</\" + name + \"(?=[\\\\t\\\\n\\\\f\\\\r />])\", \"i\"));\n\t});\n\treturn freeze(map);\n}();\nconst getGlobal = function getGlobal() {\n\treturn typeof window === \"undefined\" ? null : window;\n};\n/**\n* Creates a no-op policy for internal use only.\n* Don't export this function outside this module!\n* @param trustedTypes The policy factory.\n* @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n* @return The policy created (or null, if Trusted Types\n* are not supported or creating the policy failed).\n*/\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n\tif (typeof trustedTypes !== \"object\" || typeof trustedTypes.createPolicy !== \"function\") return null;\n\tlet suffix = null;\n\tconst ATTR_NAME = \"data-tt-policy-suffix\";\n\tif (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);\n\tconst policyName = \"dompurify\" + (suffix ? \"#\" + suffix : \"\");\n\ttry {\n\t\treturn trustedTypes.createPolicy(policyName, {\n\t\t\tcreateHTML(html) {\n\t\t\t\treturn html;\n\t\t\t},\n\t\t\tcreateScriptURL(scriptUrl) {\n\t\t\t\treturn scriptUrl;\n\t\t\t}\n\t\t});\n\t} catch (_) {\n\t\tconsole.warn(\"TrustedTypes policy \" + policyName + \" could not be created.\");\n\t\treturn null;\n\t}\n};\nconst _createHooksMap = function _createHooksMap() {\n\treturn {\n\t\tafterSanitizeAttributes: [],\n\t\tafterSanitizeElements: [],\n\t\tafterSanitizeShadowDOM: [],\n\t\tbeforeSanitizeAttributes: [],\n\t\tbeforeSanitizeElements: [],\n\t\tbeforeSanitizeShadowDOM: [],\n\t\tuponSanitizeAttribute: [],\n\t\tuponSanitizeElement: [],\n\t\tuponSanitizeShadowNode: []\n\t};\n};\n/**\n* Resolve a set-valued configuration option: a fresh set built from\n* cfg[key] when it is an own array property (seeded with a clone of\n* options.base when given, case-normalized via options.transform),\n* the fallback set otherwise.\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param fallback the set to use when the option is absent or not an array\n* @param options transform and optional base set to merge into\n* @returns the resolved set\n*/\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n\treturn objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\n/**\n* Resolve an object-valued configuration option: a prototype-free clone\n* of cfg[key] when it is an own, truthy object property, else a fresh\n* fallback built by makeFallback (fresh on every parse, so a previous\n* parse can never leak state into the next one).\n*\n* @param cfg the cloned, prototype-free configuration object\n* @param key the configuration property to read\n* @param makeFallback builds the fallback value when the option is absent\n* @returns the resolved object\n*/\nconst _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback) {\n\tconst value = objectHasOwnProperty(cfg, key) ? cfg[key] : void 0;\n\treturn value && typeof value === \"object\" ? clone(value) : makeFallback();\n};\nfunction createDOMPurify() {\n\tlet window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();\n\tconst DOMPurify = (root) => createDOMPurify(root);\n\tDOMPurify.version = \"3.4.16\";\n\tDOMPurify.removed = [];\n\tif (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n\t\tDOMPurify.isSupported = false;\n\t\treturn DOMPurify;\n\t}\n\tlet document = window.document;\n\tconst originalDocument = document;\n\tconst currentScript = originalDocument.currentScript;\n\tconst HTMLTemplateElement = window.HTMLTemplateElement, Node = window.Node, Element = window.Element, NodeFilter = window.NodeFilter;\n\tconst DOMParser = window.DOMParser, trustedTypes = window.trustedTypes;\n\tconst ElementPrototype = Element.prototype;\n\tconst cloneNode = lookupGetter(ElementPrototype, \"cloneNode\");\n\tconst remove = lookupGetter(ElementPrototype, \"remove\");\n\tconst removeAttributeNode = lookupGetter(ElementPrototype, \"removeAttributeNode\");\n\tconst getNextSibling = lookupGetter(ElementPrototype, \"nextSibling\");\n\tconst getChildNodes = lookupGetter(ElementPrototype, \"childNodes\");\n\tconst getParentNode = lookupGetter(ElementPrototype, \"parentNode\");\n\tconst getShadowRoot = lookupGetter(ElementPrototype, \"shadowRoot\");\n\tconst getAttributes = lookupGetter(ElementPrototype, \"attributes\");\n\tconst getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeType\") : null;\n\tconst getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, \"nodeName\") : null;\n\tconst getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, \"ownerDocument\") : null;\n\tconst _readNodeType = function _readNodeType(node) {\n\t\treturn getNodeType ? getNodeType(node) : node.nodeType;\n\t};\n\tconst _readNodeName = function _readNodeName(node) {\n\t\treturn getNodeName ? getNodeName(node) : node.nodeName;\n\t};\n\tif (typeof HTMLTemplateElement === \"function\") {\n\t\tconst template = document.createElement(\"template\");\n\t\tif (template.content && template.content.ownerDocument) document = template.content.ownerDocument;\n\t}\n\tlet trustedTypesPolicy;\n\tlet emptyHTML = \"\";\n\tlet defaultTrustedTypesPolicy;\n\tlet defaultTrustedTypesPolicyResolved = false;\n\tlet IN_TRUSTED_TYPES_POLICY = 0;\n\tconst _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n\t\tif (IN_TRUSTED_TYPES_POLICY > 0) throw typeErrorCreate(\"A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the \\\"DOMPurify and Trusted Types\\\" section of the README.\");\n\t};\n\tconst _createTrustedHTML = function _createTrustedHTML(html) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createHTML(html);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n\t\t_assertNotInTrustedTypesPolicy();\n\t\tIN_TRUSTED_TYPES_POLICY++;\n\t\ttry {\n\t\t\treturn trustedTypesPolicy.createScriptURL(scriptUrl);\n\t\t} finally {\n\t\t\tIN_TRUSTED_TYPES_POLICY--;\n\t\t}\n\t};\n\tconst _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n\t\tif (!defaultTrustedTypesPolicyResolved) {\n\t\t\tdefaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n\t\t\tdefaultTrustedTypesPolicyResolved = true;\n\t\t}\n\t\treturn defaultTrustedTypesPolicy;\n\t};\n\tconst _document = document, implementation = _document.implementation, createNodeIterator = _document.createNodeIterator, createDocumentFragment = _document.createDocumentFragment, getElementsByTagName = _document.getElementsByTagName;\n\tconst importNode = originalDocument.importNode;\n\tlet hooks = _createHooksMap();\n\t/**\n\t* Expose whether this browser supports running the full DOMPurify.\n\t*/\n\tDOMPurify.isSupported = typeof entries === \"function\" && typeof getParentNode === \"function\" && implementation && implementation.createHTMLDocument !== void 0;\n\tconst MUSTACHE_EXPR$1 = MUSTACHE_EXPR, ERB_EXPR$1 = ERB_EXPR, TMPLIT_EXPR$1 = TMPLIT_EXPR, DATA_ATTR$1 = DATA_ATTR, ARIA_ATTR$1 = ARIA_ATTR, IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA, ATTR_WHITESPACE$1 = ATTR_WHITESPACE, CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n\tlet IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n\t/**\n\t* We consider the elements and attributes below to be safe. Ideally\n\t* don't add any new ones but feel free to remove unwanted ones.\n\t*/\n\tlet ALLOWED_TAGS = null;\n\tconst DEFAULT_ALLOWED_TAGS = addToSet({}, [\n\t\t...html$1,\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...mathMl$1,\n\t\t...text\n\t]);\n\tlet ALLOWED_ATTR = null;\n\tconst DEFAULT_ALLOWED_ATTR = addToSet({}, [\n\t\t...html,\n\t\t...svg,\n\t\t...mathMl,\n\t\t...xml\n\t]);\n\tlet CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeNameCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tallowCustomizedBuiltInElements: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: false\n\t\t}\n\t}));\n\tlet FORBID_TAGS = null;\n\tlet FORBID_ATTR = null;\n\tconst EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n\t\ttagCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t},\n\t\tattributeCheck: {\n\t\t\twritable: true,\n\t\t\tconfigurable: false,\n\t\t\tenumerable: true,\n\t\t\tvalue: null\n\t\t}\n\t}));\n\tlet ALLOW_ARIA_ATTR = true;\n\tlet ALLOW_DATA_ATTR = true;\n\tlet ALLOW_UNKNOWN_PROTOCOLS = false;\n\tlet ALLOW_SELF_CLOSE_IN_ATTR = true;\n\tlet SAFE_FOR_TEMPLATES = false;\n\tlet SAFE_FOR_XML = true;\n\tlet WHOLE_DOCUMENT = false;\n\tlet SET_CONFIG = false;\n\tlet SET_CONFIG_ALLOWED_TAGS = null;\n\tlet SET_CONFIG_ALLOWED_ATTR = null;\n\tlet FORCE_BODY = false;\n\tlet RETURN_DOM = false;\n\tlet RETURN_DOM_FRAGMENT = false;\n\tlet RETURN_TRUSTED_TYPE = false;\n\tlet SANITIZE_DOM = true;\n\tlet SANITIZE_NAMED_PROPS = false;\n\tconst SANITIZE_NAMED_PROPS_PREFIX = \"user-content-\";\n\tlet KEEP_CONTENT = true;\n\tlet IN_PLACE = false;\n\tlet USE_PROFILES = {};\n\tlet FORBID_CONTENTS = null;\n\tconst DEFAULT_FORBID_CONTENTS = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"audio\",\n\t\t\"colgroup\",\n\t\t\"desc\",\n\t\t\"foreignobject\",\n\t\t\"head\",\n\t\t\"iframe\",\n\t\t\"math\",\n\t\t\"mi\",\n\t\t\"mn\",\n\t\t\"mo\",\n\t\t\"ms\",\n\t\t\"mtext\",\n\t\t\"noembed\",\n\t\t\"noframes\",\n\t\t\"noscript\",\n\t\t\"plaintext\",\n\t\t\"script\",\n\t\t\"selectedcontent\",\n\t\t\"style\",\n\t\t\"svg\",\n\t\t\"template\",\n\t\t\"thead\",\n\t\t\"title\",\n\t\t\"video\",\n\t\t\"xmp\"\n\t]);\n\tlet DATA_URI_TAGS = null;\n\tconst DEFAULT_DATA_URI_TAGS = addToSet({}, [\n\t\t\"audio\",\n\t\t\"video\",\n\t\t\"img\",\n\t\t\"source\",\n\t\t\"image\",\n\t\t\"track\"\n\t]);\n\tlet URI_SAFE_ATTRIBUTES = null;\n\tconst DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n\t\t\"alt\",\n\t\t\"class\",\n\t\t\"for\",\n\t\t\"id\",\n\t\t\"label\",\n\t\t\"name\",\n\t\t\"pattern\",\n\t\t\"placeholder\",\n\t\t\"role\",\n\t\t\"summary\",\n\t\t\"title\",\n\t\t\"value\",\n\t\t\"style\",\n\t\t\"xmlns\"\n\t]);\n\tconst MATHML_NAMESPACE = \"http://www.w3.org/1998/Math/MathML\";\n\tconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\n\tconst HTML_NAMESPACE = \"http://www.w3.org/1999/xhtml\";\n\tlet NAMESPACE = HTML_NAMESPACE;\n\tlet IS_EMPTY_INPUT = false;\n\tlet ALLOWED_NAMESPACES = null;\n\tconst DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [\n\t\tMATHML_NAMESPACE,\n\t\tSVG_NAMESPACE,\n\t\tHTML_NAMESPACE\n\t], stringToString);\n\tconst DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n\t\t\"mi\",\n\t\t\"mo\",\n\t\t\"mn\",\n\t\t\"ms\",\n\t\t\"mtext\"\n\t]);\n\tlet MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);\n\tconst DEFAULT_HTML_INTEGRATION_POINTS = freeze([\"annotation-xml\"]);\n\tlet HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\tconst COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n\t\t\"title\",\n\t\t\"style\",\n\t\t\"font\",\n\t\t\"a\",\n\t\t\"script\"\n\t]);\n\tlet PARSER_MEDIA_TYPE = null;\n\tconst SUPPORTED_PARSER_MEDIA_TYPES = [\"application/xhtml+xml\", \"text/html\"];\n\tconst DEFAULT_PARSER_MEDIA_TYPE = \"text/html\";\n\tlet transformCaseFunc = null;\n\tlet CONFIG = null;\n\tconst formElement = document.createElement(\"form\");\n\tconst isRegexOrFunction = function isRegexOrFunction(testValue) {\n\t\treturn testValue instanceof RegExp || testValue instanceof Function;\n\t};\n\t/**\n\t* _parseConfig\n\t*\n\t* @param cfg optional config literal\n\t*/\n\tconst _parseConfig = function _parseConfig() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\tif (CONFIG && CONFIG === cfg) return;\n\t\tif (!cfg || typeof cfg !== \"object\") cfg = {};\n\t\tcfg = clone(cfg);\n\t\tPARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n\t\ttransformCaseFunc = PARSER_MEDIA_TYPE === \"application/xhtml+xml\" ? stringToString : stringToLowerCase;\n\t\tALLOWED_TAGS = _resolveSetOption(cfg, \"ALLOWED_TAGS\", DEFAULT_ALLOWED_TAGS, { transform: transformCaseFunc });\n\t\tALLOWED_ATTR = _resolveSetOption(cfg, \"ALLOWED_ATTR\", DEFAULT_ALLOWED_ATTR, { transform: transformCaseFunc });\n\t\tALLOWED_NAMESPACES = _resolveSetOption(cfg, \"ALLOWED_NAMESPACES\", DEFAULT_ALLOWED_NAMESPACES, { transform: stringToString });\n\t\tURI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, \"ADD_URI_SAFE_ATTR\", DEFAULT_URI_SAFE_ATTRIBUTES, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_URI_SAFE_ATTRIBUTES\n\t\t});\n\t\tDATA_URI_TAGS = _resolveSetOption(cfg, \"ADD_DATA_URI_TAGS\", DEFAULT_DATA_URI_TAGS, {\n\t\t\ttransform: transformCaseFunc,\n\t\t\tbase: DEFAULT_DATA_URI_TAGS\n\t\t});\n\t\tFORBID_CONTENTS = _resolveSetOption(cfg, \"FORBID_CONTENTS\", DEFAULT_FORBID_CONTENTS, { transform: transformCaseFunc });\n\t\tFORBID_TAGS = _resolveSetOption(cfg, \"FORBID_TAGS\", clone({}), { transform: transformCaseFunc });\n\t\tFORBID_ATTR = _resolveSetOption(cfg, \"FORBID_ATTR\", clone({}), { transform: transformCaseFunc });\n\t\tUSE_PROFILES = objectHasOwnProperty(cfg, \"USE_PROFILES\") ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === \"object\" ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;\n\t\tALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;\n\t\tALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;\n\t\tALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;\n\t\tALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;\n\t\tSAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;\n\t\tSAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;\n\t\tWHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;\n\t\tRETURN_DOM = cfg.RETURN_DOM || false;\n\t\tRETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;\n\t\tRETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;\n\t\tFORCE_BODY = cfg.FORCE_BODY || false;\n\t\tSANITIZE_DOM = cfg.SANITIZE_DOM !== false;\n\t\tSANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;\n\t\tKEEP_CONTENT = cfg.KEEP_CONTENT !== false;\n\t\tIN_PLACE = cfg.IN_PLACE || false;\n\t\tIS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI;\n\t\tNAMESPACE = typeof cfg.NAMESPACE === \"string\" ? cfg.NAMESPACE : HTML_NAMESPACE;\n\t\tMATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"MATHML_TEXT_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS));\n\t\tHTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, \"HTML_INTEGRATION_POINTS\", () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS));\n\t\tconst customElementHandling = _resolveObjectOption(cfg, \"CUSTOM_ELEMENT_HANDLING\", () => create(null));\n\t\tCUSTOM_ELEMENT_HANDLING = create(null);\n\t\tif (objectHasOwnProperty(customElementHandling, \"tagNameCheck\") && isRegexOrFunction(customElementHandling.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"attributeNameCheck\") && isRegexOrFunction(customElementHandling.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck;\n\t\tif (objectHasOwnProperty(customElementHandling, \"allowCustomizedBuiltInElements\") && typeof customElementHandling.allowCustomizedBuiltInElements === \"boolean\") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements;\n\t\tseal(CUSTOM_ELEMENT_HANDLING);\n\t\tif (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;\n\t\tif (RETURN_DOM_FRAGMENT) RETURN_DOM = true;\n\t\tif (USE_PROFILES) {\n\t\t\tALLOWED_TAGS = addToSet({}, text);\n\t\t\tALLOWED_ATTR = create(null);\n\t\t\tif (USE_PROFILES.html === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, html$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, html);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svg === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svg$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.svgFilters === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, svgFilters);\n\t\t\t\taddToSet(ALLOWED_ATTR, svg);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t\tif (USE_PROFILES.mathMl === true) {\n\t\t\t\taddToSet(ALLOWED_TAGS, mathMl$1);\n\t\t\t\taddToSet(ALLOWED_ATTR, mathMl);\n\t\t\t\taddToSet(ALLOWED_ATTR, xml);\n\t\t\t}\n\t\t}\n\t\tEXTRA_ELEMENT_HANDLING.tagCheck = null;\n\t\tEXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\t\tif (objectHasOwnProperty(cfg, \"ADD_TAGS\")) {\n\t\t\tif (typeof cfg.ADD_TAGS === \"function\") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n\t\t\telse if (arrayIsArray(cfg.ADD_TAGS)) {\n\t\t\t\tif (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\t\t\taddToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_ATTR\")) {\n\t\t\tif (typeof cfg.ADD_ATTR === \"function\") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n\t\t\telse if (arrayIsArray(cfg.ADD_ATTR)) {\n\t\t\t\tif (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\t\t\taddToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n\t\t\t}\n\t\t}\n\t\tif (objectHasOwnProperty(cfg, \"ADD_FORBID_CONTENTS\") && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {\n\t\t\tif (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);\n\t\t\taddToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n\t\t}\n\t\tif (KEEP_CONTENT) ALLOWED_TAGS[\"#text\"] = true;\n\t\tif (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [\n\t\t\t\"html\",\n\t\t\t\"head\",\n\t\t\t\"body\"\n\t\t]);\n\t\tif (ALLOWED_TAGS.table) {\n\t\t\taddToSet(ALLOWED_TAGS, [\"tbody\"]);\n\t\t\tdelete FORBID_TAGS.tbody;\n\t\t}\n\t\tif (cfg.TRUSTED_TYPES_POLICY) {\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createHTML\\\" hook.\");\n\t\t\tif (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== \"function\") throw typeErrorCreate(\"TRUSTED_TYPES_POLICY configuration option must provide a \\\"createScriptURL\\\" hook.\");\n\t\t\tconst previousTrustedTypesPolicy = trustedTypesPolicy;\n\t\t\ttrustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\t\t\ttry {\n\t\t\t\temptyHTML = _createTrustedHTML(\"\");\n\t\t\t} catch (error) {\n\t\t\t\ttrustedTypesPolicy = previousTrustedTypesPolicy;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} else if (cfg.TRUSTED_TYPES_POLICY === null) {\n\t\t\ttrustedTypesPolicy = void 0;\n\t\t\temptyHTML = \"\";\n\t\t} else {\n\t\t\tif (trustedTypesPolicy === void 0) trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n\t\t\tif (trustedTypesPolicy && typeof emptyHTML === \"string\") emptyHTML = _createTrustedHTML(\"\");\n\t\t}\n\t\tif (freeze) freeze(cfg);\n\t\tCONFIG = cfg;\n\t};\n\tconst ALL_SVG_TAGS = addToSet({}, [\n\t\t...svg$1,\n\t\t...svgFilters,\n\t\t...svgDisallowed\n\t]);\n\tconst ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n\t/**\n\t* Namespace rules for an element in the SVG namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"svg\";\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE) return tagName === \"svg\" && (parentTagName === \"annotation-xml\" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n\t\treturn Boolean(ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the MathML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === HTML_NAMESPACE) return tagName === \"math\";\n\t\tif (parent.namespaceURI === SVG_NAMESPACE) return tagName === \"math\" && HTML_INTEGRATION_POINTS[parentTagName];\n\t\treturn Boolean(ALL_MATHML_TAGS[tagName]);\n\t};\n\t/**\n\t* Namespace rules for an element in the HTML namespace.\n\t*\n\t* @param tagName the element's lowercase tag name\n\t* @param parent the (possibly simulated) parent node\n\t* @param parentTagName the parent's lowercase tag name\n\t* @returns true if a spec-compliant parser could produce this element\n\t*/\n\tconst _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {\n\t\tif (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;\n\t\tif (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;\n\t\treturn !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n\t};\n\t/**\n\t* @param element a DOM element whose namespace is being checked\n\t* @returns Return false if the element has a\n\t* namespace that a spec-compliant parser would never\n\t* return. Return true otherwise.\n\t*/\n\tconst _checkValidNamespace = function _checkValidNamespace(element) {\n\t\tlet parent = getParentNode(element);\n\t\tif (!parent || !parent.tagName) parent = {\n\t\t\tnamespaceURI: NAMESPACE,\n\t\t\ttagName: \"template\"\n\t\t};\n\t\tconst tagName = stringToLowerCase(element.tagName);\n\t\tconst parentTagName = stringToLowerCase(parent.tagName);\n\t\tif (!ALLOWED_NAMESPACES[element.namespaceURI]) return false;\n\t\tif (element.namespaceURI === SVG_NAMESPACE) return _checkSvgNamespace(tagName, parent, parentTagName);\n\t\tif (element.namespaceURI === MATHML_NAMESPACE) return _checkMathMlNamespace(tagName, parent, parentTagName);\n\t\tif (element.namespaceURI === HTML_NAMESPACE) return _checkHtmlNamespace(tagName, parent, parentTagName);\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && ALLOWED_NAMESPACES[element.namespaceURI]) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* _forceRemove\n\t*\n\t* @param node a DOM node\n\t*/\n\tconst _forceRemove = function _forceRemove(node) {\n\t\tarrayPush(DOMPurify.removed, { element: node });\n\t\ttry {\n\t\t\tgetParentNode(node).removeChild(node);\n\t\t} catch (_) {\n\t\t\tremove(node);\n\t\t\tif (!getParentNode(node)) throw typeErrorCreate(\"a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place\");\n\t\t}\n\t};\n\t/**\n\t* _stripAttributeNode\n\t*\n\t* Remove a single Attr node case/namespace-exactly on an attribute-teardown\n\t* path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n\t* HTML element in an HTML document and so silently misses a case-preserved\n\t* handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n\t* _removeAttribute() was fixed for, which a name-based call would reintroduce\n\t* on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n\t* record into DOMPurify.removed: the neutralize passes intentionally do not\n\t* book-keep. A clobbered/detached node falls back to best-effort name-based\n\t* removal.\n\t*\n\t* @param element the element to strip the attribute from\n\t* @param attribute the Attr node to remove\n\t* @param name the attribute's name, for the fallback path\n\t*/\n\tconst _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {\n\t\ttry {\n\t\t\tremoveAttributeNode(element, attribute);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* _neutralizeRoot\n\t*\n\t* Fail-closed teardown of an in-place root after the sanitize walk aborts\n\t* (campaign-3 F2). An internal throw mid-walk — e.g. a page-registered\n\t* custom element's reaction detaches a node so `_forceRemove`'s deliberate\n\t* parentless guard throws, or any other re-entrant engine mutation — would\n\t* otherwise leave the caller's *live* tree half-sanitized, with everything\n\t* after the abort point still carrying its handlers. There is no safe way\n\t* to resume the walk (the tree mutated under us), so we strip the root bare:\n\t* remove every child and every attribute, then let the caller's catch see\n\t* the original error. Clobber-safe (cached `remove`/`childNodes`/`attributes`\n\t* getters; the root was already clobber-pre-flighted at the IN_PLACE entry).\n\t*\n\t* @param root the in-place root to empty\n\t*/\n\tconst _neutralizeRoot = function _neutralizeRoot(root) {\n\t\t_neutralizeSubtree(root);\n\t\tconst childNodes = getChildNodes(root);\n\t\tif (childNodes) {\n\t\t\tconst snapshot = [];\n\t\t\tarrayForEach(childNodes, (child) => {\n\t\t\t\tarrayPush(snapshot, child);\n\t\t\t});\n\t\t\tarrayForEach(snapshot, (child) => {\n\t\t\t\ttry {\n\t\t\t\t\tremove(child);\n\t\t\t\t} catch (_) {}\n\t\t\t});\n\t\t}\n\t\tconst attributes = getAttributes(root);\n\t\tif (attributes) for (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name === \"string\") _stripAttributeNode(root, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* _removeAttribute\n\t*\n\t* Name-based getAttributeNode()/removeAttribute() ASCII-lowercase their\n\t* lookup key for HTML elements in an HTML document, so they silently miss an\n\t* attribute whose stored qualified name still contains uppercase ASCII\n\t* letters. That happens when the node came from a case-preserving source\n\t* (an XML/XHTML document imported via importNode(), or createAttributeNS()),\n\t* where e.g. `ONERROR` survives the walk: the policy check lowercases to\n\t* `onerror` and rejects it, but `removeAttribute('ONERROR')` looks up\n\t* `onerror` and finds nothing. Remove the exact Attr node instead, which is\n\t* case- and namespace-exact, and fall back to name-based removal only when\n\t* the caller could not supply the node.\n\t*\n\t* @param name an Attribute name\n\t* @param element a DOM node\n\t* @param attr the exact Attr node to remove, when the caller has it\n\t*/\n\tconst _removeAttribute = function _removeAttribute(name, element, attr) {\n\t\tif (!attr) try {\n\t\t\tattr = element.getAttributeNode(name);\n\t\t} catch (_) {\n\t\t\tattr = null;\n\t\t}\n\t\tarrayPush(DOMPurify.removed, {\n\t\t\tattribute: attr || null,\n\t\t\tfrom: element\n\t\t});\n\t\ttry {\n\t\t\tif (attr) removeAttributeNode(element, attr);\n\t\t\telse element.removeAttribute(name);\n\t\t} catch (_) {\n\t\t\ttry {\n\t\t\t\telement.removeAttribute(name);\n\t\t\t} catch (_) {}\n\t\t}\n\t\tif (name === \"is\") {\n\t\t\tif (RETURN_DOM || RETURN_DOM_FRAGMENT) try {\n\t\t\t\t_forceRemove(element);\n\t\t\t} catch (_) {}\n\t\t\telse try {\n\t\t\t\telement.setAttribute(name, \"\");\n\t\t\t} catch (_) {}\n\t\t}\n\t};\n\t/**\n\t* _stripDisallowedAttributes\n\t*\n\t* Removes every attribute the active configuration does not allow from a\n\t* single element, using the same allowlist as the main attribute pass (so\n\t* `on*` handlers go, but no `/^on/` blocklist is introduced). Used only to\n\t* neutralise nodes that are being discarded from an in-place tree.\n\t*\n\t* @param element the element to strip\n\t*/\n\tconst _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {\n\t\tconst attributes = getAttributes(element);\n\t\tif (!attributes) return;\n\t\tfor (let i = attributes.length - 1; i >= 0; --i) {\n\t\t\tconst attribute = attributes[i];\n\t\t\tconst name = attribute && attribute.name;\n\t\t\tif (typeof name !== \"string\" || ALLOWED_ATTR[transformCaseFunc(name)]) continue;\n\t\t\t_stripAttributeNode(element, attribute, name);\n\t\t}\n\t};\n\t/**\n\t* _neutralizeSubtree\n\t*\n\t* Completes the audit-5 F1 fix across every removal path. The KEEP_CONTENT\n\t* move-hoist neutralises only disallowed-tag removals; clobber, mXSS-canary,\n\t* namespace, comment, processing-instruction and KEEP_CONTENT:false removals\n\t* all drop their subtree wholesale via `_forceRemove`. On the IN_PLACE path\n\t* those dropped nodes are detached from the caller's LIVE tree but a\n\t* handler-bearing original among them (an `<img onerror>`/`<video>` that was\n\t* loading) keeps its queued resource event, which fires in page scope after\n\t* sanitize returns. This walks a removed subtree and strips every attribute\n\t* the active configuration does not allow — so `on*` handlers are cancelled\n\t* through the SAME allowlist that governs kept nodes, not a separate `/^on/`\n\t* blocklist. Run synchronously before sanitize returns, i.e. before any\n\t* queued event can fire. Hook-free by design: these nodes leave the output,\n\t* so firing attribute hooks for them would be surprising. Clobber-safe reads;\n\t* a doomed clobbered node may shadow `removeAttribute` (its own attributes are\n\t* irrelevant — it is discarded — while its non-clobbered descendants, e.g.\n\t* the `<img>`, are reached and scrubbed).\n\t*\n\t* @param root the root of a removed subtree to neutralise\n\t*/\n\tconst _neutralizeSubtree = function _neutralizeSubtree(root) {\n\t\tconst stack = [root];\n\t\twhile (stack.length > 0) {\n\t\t\tconst node = stack.pop();\n\t\t\tif (_readNodeType(node) === NODE_TYPE.element) _stripDisallowedAttributes(node);\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);\n\t\t}\n\t};\n\t/**\n\t* _neutralizePatchLinkage\n\t*\n\t* IN_PLACE entry pre-pass (declarative-partial-updates / streaming\n\t* hardening, https://github.com/WICG/declarative-partial-updates).\n\t*\n\t* The main walk strips patch linkage (`for`/`patchsrc`) and removes range\n\t* markers (PIs / markup comments) node-by-node, in document order, AS it\n\t* reaches each node. On a live in-place root that leaves a window: from the\n\t* moment the root is connected until the walk arrives at a given node, that\n\t* node's linkage is live. A patch applied on connection/stream can fire as\n\t* a microtask during the walk and inject or teleport an unsanitized DOM\n\t* range into a region the iterator has already passed and will not revisit,\n\t* so the post-return \"tree is sanitized\" contract is violated. Sweep the\n\t* whole tree once up front and sever every linkage before the walk begins,\n\t* closing that window.\n\t*\n\t* This CANNOT undo a patch that already fired before sanitize ran — that is\n\t* the irreducible \"do not IN_PLACE a live-connected attacker tree\" caveat —\n\t* but it closes everything from sanitize-start onward. Gated on SAFE_FOR_XML\n\t* to group with the rest of the declarative-partial-updates handling and\n\t* stay overridable, consistent with the codebase.\n\t*\n\t* Clobber-safe traversal (cached childNodes getter); per-node try/catch so a\n\t* clobbered root cannot defeat the sweep of its non-clobbered descendants.\n\t*\n\t* NOTE (pending real-Chrome confirmation, see test/declarative-patch-probe\n\t* .html Q1): this mirrors the existing policy of keeping `for` on\n\t* <label>/<output>. If the shipping feature can drive a patch through a\n\t* surviving `for`-on-label/output + `id` pair, this pre-pass and the\n\t* attribute check at _isBasicCustomElement's caller must additionally drop\n\t* that pair on the IN_PLACE path. Left as-is until the taxonomy is verified.\n\t*\n\t* @param root the in-place root to sweep\n\t*/\n\t/**\n\t* Central policy for declarative-partial-updates patch-linkage attributes,\n\t* shared by the _neutralizePatchLinkage pre-pass and _isValidAttribute so\n\t* the two sites cannot drift: `patchsrc` always links, `for` links\n\t* everywhere except on <label>/<output>, and the whole policy is gated on\n\t* SAFE_FOR_XML (see the rationale block in _isValidAttribute).\n\t*\n\t* @param lcName the transformCaseFunc'd attribute name\n\t* @param lcTag the transformCaseFunc'd tag name of the carrying element\n\t* @return true if the attribute is patch linkage and must be dropped\n\t*/\n\tconst _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {\n\t\tif (!SAFE_FOR_XML) return false;\n\t\tif (lcName === \"patchsrc\") return true;\n\t\treturn lcName === \"for\" && lcTag !== \"label\" && lcTag !== \"output\";\n\t};\n\tconst _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {\n\t\tif (!SAFE_FOR_XML) return;\n\t\tconst stack = [root];\n\t\twhile (stack.length > 0) {\n\t\t\tconst node = stack.pop();\n\t\t\tconst nodeType = _readNodeType(node);\n\t\t\tif (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {\n\t\t\t\ttry {\n\t\t\t\t\tremove(node);\n\t\t\t\t} catch (_) {}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nodeType === NODE_TYPE.element) {\n\t\t\t\tconst element = node;\n\t\t\t\tconst lcTag = transformCaseFunc(_readNodeName(node));\n\t\t\t\ttry {\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"patchsrc\")) element.removeAttribute(\"patchsrc\");\n\t\t\t\t\tif (element.hasAttribute && element.hasAttribute(\"for\") && _isPatchLinkageAttribute(\"for\", lcTag)) element.removeAttribute(\"for\");\n\t\t\t\t} catch (_) {}\n\t\t\t}\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push(childNodes[i]);\n\t\t}\n\t};\n\t/**\n\t* _initDocument\n\t*\n\t* @param dirty - a string of dirty markup\n\t* @return a DOM, filled with the dirty markup\n\t*/\n\tconst _initDocument = function _initDocument(dirty) {\n\t\tlet doc = null;\n\t\tlet leadingWhitespace = null;\n\t\tif (FORCE_BODY) dirty = \"<remove></remove>\" + dirty;\n\t\telse {\n\t\t\tconst matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n\t\t\tleadingWhitespace = matches && matches[0];\n\t\t}\n\t\tif (PARSER_MEDIA_TYPE === \"application/xhtml+xml\" && NAMESPACE === HTML_NAMESPACE) dirty = \"<html xmlns=\\\"http://www.w3.org/1999/xhtml\\\"><head></head><body>\" + dirty + \"</body></html>\";\n\t\tconst dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n\t\tif (NAMESPACE === HTML_NAMESPACE) try {\n\t\t\tdoc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n\t\t} catch (_) {}\n\t\tif (!doc || !doc.documentElement) {\n\t\t\tdoc = implementation.createDocument(NAMESPACE, \"template\", null);\n\t\t\ttry {\n\t\t\t\tdoc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n\t\t\t} catch (_) {}\n\t\t}\n\t\tconst body = doc.body || doc.documentElement;\n\t\tif (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n\t\tif (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? \"html\" : \"body\")[0];\n\t\treturn WHOLE_DOCUMENT ? doc.documentElement : body;\n\t};\n\t/**\n\t* Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n\t*\n\t* @param root The root element or node to start traversing on.\n\t* @return The created NodeIterator\n\t*/\n\tconst _createNodeIterator = function _createNodeIterator(root) {\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n\t\treturn createNodeIterator.call(doc || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n\t};\n\t/**\n\t* Replace template expression syntax (mustache, ERB, template\n\t* literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n\t* sites. Order matters: mustache, then ERB, then template literal.\n\t*\n\t* @param value the string to scrub\n\t* @returns the scrubbed string\n\t*/\n\tconst _stripTemplateExpressions = function _stripTemplateExpressions(value) {\n\t\tvalue = stringReplace(value, MUSTACHE_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, ERB_EXPR$1, \" \");\n\t\tvalue = stringReplace(value, TMPLIT_EXPR$1, \" \");\n\t\treturn value;\n\t};\n\t/**\n\t* Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n\t* character data of an element subtree. Used as the final safety net for\n\t* SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n\t* which only form after text-node normalization (e.g. fragments split across\n\t* stripped elements) cannot survive into a template-evaluating framework.\n\t*\n\t* Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n\t* in place rather than round-tripping through innerHTML. This preserves\n\t* descendant node references (important for IN_PLACE callers), avoids a\n\t* serialize/reparse cycle, and reads literal character data — which means\n\t* `<%...%>` in text content matches the ERB regex against its real bytes\n\t* instead of the HTML-entity-escaped form innerHTML would produce.\n\t*\n\t* Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n\t* attributes is performed during the per-node `_sanitizeAttributes` pass.\n\t*\n\t* @param node The root element whose character data should be scrubbed.\n\t*/\n\tconst _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {\n\t\tvar _node$querySelectorAl;\n\t\tnode.normalize();\n\t\tconst doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n\t\tconst walker = createNodeIterator.call(doc || node, node, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);\n\t\tlet currentNode = walker.nextNode();\n\t\twhile (currentNode) {\n\t\t\tcurrentNode.data = _stripTemplateExpressions(currentNode.data);\n\t\t\tcurrentNode = walker.nextNode();\n\t\t}\n\t\tconst templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, \"template\");\n\t\tif (templates) arrayForEach(templates, (tmpl) => {\n\t\t\tif (_isDocumentFragment(tmpl.content)) _scrubTemplateExpressions2(tmpl.content);\n\t\t});\n\t};\n\t/**\n\t* _isClobbered\n\t*\n\t* Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n\t* interface with [LegacyOverrideBuiltIns]; a descendant element with a\n\t* `name` attribute matching a prototype property shadows that property\n\t* on direct reads. We use this check at the IN_PLACE entry-point and\n\t* during attribute sanitization to refuse clobbered forms.\n\t*\n\t* @param element element to check for clobbering attacks\n\t* @return true if clobbered, false if safe\n\t*/\n\tconst _isClobbered = function _isClobbered(element) {\n\t\tconst realTagName = getNodeName ? getNodeName(element) : null;\n\t\tif (typeof realTagName !== \"string\") return false;\n\t\tif (transformCaseFunc(realTagName) !== \"form\") return false;\n\t\treturn typeof element.nodeName !== \"string\" || typeof element.textContent !== \"string\" || typeof element.removeChild !== \"function\" || element.attributes !== getAttributes(element) || typeof element.removeAttribute !== \"function\" || typeof element.removeAttributeNode !== \"function\" || typeof element.getAttributeNode !== \"function\" || typeof element.setAttribute !== \"function\" || typeof element.namespaceURI !== \"string\" || typeof element.insertBefore !== \"function\" || typeof element.hasChildNodes !== \"function\" || element.nodeType !== getNodeType(element) || element.childNodes !== getChildNodes(element);\n\t};\n\t/**\n\t* Checks whether the given value is a DocumentFragment from any realm.\n\t*\n\t* The realm-independent replacement reads `nodeType` through the cached\n\t* Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n\t* constant (11). nodeType is a numeric value resolved from the node's\n\t* internal slot, identical across realms for the same kind of node.\n\t*\n\t* @param value object to check\n\t* @return true if value is a DocumentFragment-shaped node from any realm\n\t*/\n\tconst _isDocumentFragment = function _isDocumentFragment(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn getNodeType(value) === NODE_TYPE.documentFragment;\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* Checks whether the given object is a DOM node, including nodes that\n\t* originate from a different window/realm (e.g. an iframe's\n\t* contentDocument). The previous `value instanceof Node` check was\n\t* realm-bound: nodes from a different window failed it, causing\n\t* sanitize() to silently stringify them and reset IN_PLACE to false,\n\t* returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n\t*\n\t* @param value object to check whether it's a DOM node\n\t* @return true if value is a DOM node from any realm\n\t*/\n\tconst _isNode = function _isNode(value) {\n\t\tif (!getNodeType || typeof value !== \"object\" || value === null) return false;\n\t\ttry {\n\t\t\treturn typeof getNodeType(value) === \"number\";\n\t\t} catch (_) {\n\t\t\treturn false;\n\t\t}\n\t};\n\tfunction _executeHooks(hooks, currentNode, data) {\n\t\tif (hooks.length === 0) return;\n\t\tarrayForEach(hooks, (hook) => {\n\t\t\thook.call(DOMPurify, currentNode, data, CONFIG);\n\t\t});\n\t}\n\t/**\n\t* Structural-threat checks that condemn a node regardless of the\n\t* allowlists: mXSS via namespace confusion, risky CSS construction,\n\t* processing instructions, markup-bearing comments. Pure predicate;\n\t* the caller removes. Check order is load-bearing.\n\t*\n\t* @param currentNode the node to inspect\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node must be removed\n\t*/\n\tconst _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {\n\t\tif (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) return true;\n\t\tif (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === \"string\" && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) return true;\n\t\tif (currentNode.nodeType === NODE_TYPE.processingInstruction) return true;\n\t\tif (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) return true;\n\t\treturn false;\n\t};\n\t/**\n\t* Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n\t* function, per the validation in _parseConfig) against a name.\n\t* Additional arguments are forwarded to predicate functions - the\n\t* attributeNameCheck predicate receives the tag name as its second\n\t* argument. A null/absent check never matches.\n\t*\n\t* @param check the configured tagNameCheck / attributeNameCheck value\n\t* @param name the name to test\n\t* @param args extra arguments forwarded to a predicate function\n\t* @return true if the check matches the name\n\t*/\n\tconst _matchesNameCheck = function _matchesNameCheck(check, name) {\n\t\tif (check instanceof RegExp) return regExpTest(check, name);\n\t\tif (check instanceof Function) {\n\t\t\tfor (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];\n\t\t\treturn Boolean(check(name, ...args));\n\t\t}\n\t\treturn false;\n\t};\n\t/**\n\t* Handle a node whose tag is forbidden or not allowlisted: keep\n\t* allowed custom elements (false return exits _sanitizeElements\n\t* early - the namespace and fallback-tag removal checks are\n\t* intentionally skipped for kept custom elements), else hoist\n\t* content per KEEP_CONTENT and remove.\n\t*\n\t* A kept custom element is the ONLY case in which this function\n\t* returns false, so the caller uses that return value to run the\n\t* afterSanitizeElements hook on the kept element and keep the\n\t* element-hook lifecycle consistent with normal allowlisted\n\t* elements (GHSA-c2j3-45gr-mqc4).\n\t*\n\t* @param currentNode the disallowed node\n\t* @param tagName the node's transformCaseFunc'd tag name\n\t* @return true if the node was removed, false if kept\n\t*/\n\tconst _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {\n\t\tif (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n\t\tif (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n\t\t\tconst parentNode = getParentNode(currentNode);\n\t\t\tconst childNodes = getChildNodes(currentNode);\n\t\t\tif (childNodes && parentNode) {\n\t\t\t\tconst childCount = childNodes.length;\n\t\t\t\tfor (let i = childCount - 1; i >= 0; --i) {\n\t\t\t\t\tconst hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];\n\t\t\t\t\tparentNode.insertBefore(hoisted, getNextSibling(currentNode));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_forceRemove(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* Fork a hook-mutable allowlist off its shared binding the first time a\n\t* (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n\t* hook cannot widen the per-instance default or the setConfig binding by\n\t* reference and leak past the call. Returns the set unchanged once it is\n\t* already call-local, so repeated calls across elements are idempotent.\n\t*\n\t* @param hookList the uponSanitize* hook array for this event\n\t* @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n\t* @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n\t* @param setConfigSet the captured setConfig() binding, or null\n\t* @return a call-local clone if a hook is present and set is still shared,\n\t* else set unchanged\n\t*/\n\tconst _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {\n\t\tif (hookList.length === 0) return set;\n\t\treturn set === defaultSet || set === setConfigSet ? clone(set) : set;\n\t};\n\t/**\n\t* Shared guard for a node that a hook has detached from the walk tree,\n\t* used after each element-hook site in _sanitizeElements. Detaching is a\n\t* long-standing user pattern (issue #469; draw.io-style foreignObject\n\t* filtering). Per the cached, unclobberable parentNode getter the node is\n\t* genuinely out of the tree, so it can reach neither the serialized\n\t* output nor an IN_PLACE live tree; treat it as removed and stop\n\t* processing it. Without this guard, the unsafe-node / namespace checks\n\t* would call _forceRemove on a parentless node and hit the REPORT-3\n\t* fail-closed throw — which exists for nodes DOMPurify wants gone but\n\t* *cannot* detach (clobbered / parentless roots), the opposite of a node\n\t* that is already safely gone. The walk root is exempt: a detached\n\t* IN_PLACE root is legitimate input and must still be fully sanitized,\n\t* and a kill-decision on it must keep hitting the REPORT-3 throw.\n\t*\n\t* Nodes detached by hooks stay the hook's responsibility for placement:\n\t* they are not recorded in DOMPurify.removed, so the post-walk IN_PLACE\n\t* pass (which iterates DOMPurify.removed) does not reach them. But a\n\t* hook-detached subtree can still hold a queued resource-event handler -\n\t* e.g. an <img onload> that began loading when the caller built the live\n\t* tree - which fires in page scope after sanitize returns even though the\n\t* handler never reached the returned tree. That is the audit-5 F1 hazard,\n\t* and the documented node.remove() hook pattern walks straight into it.\n\t* So on the IN_PLACE path we neutralize the detached subtree inline,\n\t* stripping its non-allow-listed attributes before returning, exactly as\n\t* the post-walk pass does for _forceRemove'd subtrees.\n\t*\n\t* @param currentNode the node a hook may have detached\n\t* @param root the current walk root\n\t* @return true if the node is detached and now handled, false otherwise\n\t*/\n\tconst _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {\n\t\tif (currentNode === root || getParentNode(currentNode) !== null) return false;\n\t\tif (IN_PLACE) _neutralizeSubtree(currentNode);\n\t\treturn true;\n\t};\n\t/**\n\t* _sanitizeElements\n\t*\n\t* @protect nodeName\n\t* @protect textContent\n\t* @protect removeChild\n\t* @param currentNode to check for permission to exist\n\t* @return true if node was killed, false if left alive\n\t*/\n\tconst _sanitizeElements = function _sanitizeElements(currentNode, root) {\n\t\t_executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isClobbered(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tconst tagName = transformCaseFunc(_readNodeName(currentNode));\n\t\tALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);\n\t\t_executeHooks(hooks.uponSanitizeElement, currentNode, {\n\t\t\ttagName,\n\t\t\tallowedTags: ALLOWED_TAGS\n\t\t});\n\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\tif (_isUnsafeNode(currentNode, tagName)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {\n\t\t\tconst removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n\t\t\tif (removed === false) {\n\t\t\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\t\t\tif (_handleHookDetachedNode(currentNode, root)) return true;\n\t\t\t}\n\t\t\treturn removed;\n\t\t}\n\t\tif (_readNodeType(currentNode) === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif ((tagName === \"noscript\" || tagName === \"noembed\" || tagName === \"noframes\") && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {\n\t\t\t_forceRemove(currentNode);\n\t\t\treturn true;\n\t\t}\n\t\tif (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n\t\t\tconst content = _stripTemplateExpressions(currentNode.textContent);\n\t\t\tif (currentNode.textContent !== content) {\n\t\t\t\tarrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n\t\t\t\tcurrentNode.textContent = content;\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\t\treturn _handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _isValidAttribute\n\t*\n\t* @param lcTag Lowercase tag name of containing element.\n\t* @param lcName Lowercase attribute name.\n\t* @param value Attribute value.\n\t* @return Returns true if `value` is valid, otherwise false.\n\t*/\n\tconst _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n\t\tif (FORBID_ATTR[lcName]) return false;\n\t\tif (_isPatchLinkageAttribute(lcName, lcTag)) return false;\n\t\tif (SANITIZE_DOM && (lcName === \"id\" || lcName === \"name\") && (value in document || value in formElement)) return false;\n\t\tconst nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);\n\t\tif (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) return true;\n\t\tif (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) return true;\n\t\tif (!nameIsPermitted) return _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) || lcName === \"is\" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value);\n\t\tif (URI_SAFE_ATTRIBUTES[lcName]) return true;\n\t\tif (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\tif ((lcName === \"src\" || lcName === \"xlink:href\" || lcName === \"href\") && lcTag !== \"script\" && stringIndexOf(value, \"data:\") === 0 && DATA_URI_TAGS[lcTag]) return true;\n\t\tif (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, \"\"))) return true;\n\t\treturn !value;\n\t};\n\tconst RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n\t\t\"annotation-xml\",\n\t\t\"color-profile\",\n\t\t\"font-face\",\n\t\t\"font-face-format\",\n\t\t\"font-face-name\",\n\t\t\"font-face-src\",\n\t\t\"font-face-uri\",\n\t\t\"missing-glyph\"\n\t]);\n\t/**\n\t* _isBasicCustomElement\n\t* checks if at least one dash is included in tagName, and it's not the first char\n\t* for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n\t*\n\t* @param tagName name of the tag of the node to sanitize\n\t* @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n\t*/\n\tconst _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n\t\treturn !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);\n\t};\n\t/**\n\t* Wrap an attribute value in the matching Trusted Types object when\n\t* the active policy requires it. Namespaced attributes pass through\n\t* unchanged (no TT support yet, see\n\t* https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n\t*\n\t* @param lcTag lowercase tag name of the containing element\n\t* @param lcName lowercase attribute name\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the attribute value to wrap\n\t* @return the value, wrapped when Trusted Types demand it\n\t*/\n\tconst _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {\n\t\tif (trustedTypesPolicy && typeof trustedTypes === \"object\" && typeof trustedTypes.getAttributeType === \"function\" && !namespaceURI) switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n\t\t\tcase \"TrustedHTML\": return _createTrustedHTML(value);\n\t\t\tcase \"TrustedScriptURL\": return _createTrustedScriptURL(value);\n\t\t}\n\t\treturn value;\n\t};\n\t/**\n\t* Write a modified attribute value back onto the element. On\n\t* success, re-probe for clobbering introduced by the new value and\n\t* remove the element when found; otherwise, when this writeback is the\n\t* recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n\t* removal entry that path recorded so it does not show as removed. On\n\t* failure, remove the attribute instead.\n\t*\n\t* Returns true only on a clean write (the value was set and the new value\n\t* introduced no clobbering). The caller uses that, together with its own\n\t* knowledge of whether this attribute pushed a DOMPurify.removed record, to\n\t* decide whether to pop that record. The pop must happen ONLY for the\n\t* named-prop remove-and-recreate; popping on any other value change (trim,\n\t* template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n\t* subtree-cleanup record and let that detached subtree keep a live event\n\t* handler through the IN_PLACE neutralization pass (SO-001).\n\t*\n\t* @param currentNode the element carrying the attribute\n\t* @param name the attribute name as present on the element\n\t* @param namespaceURI the attribute's namespace, if any\n\t* @param value the new attribute value\n\t* @return true if the value was written without introducing clobbering\n\t*/\n\tconst _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {\n\t\ttry {\n\t\t\tif (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);\n\t\t\telse currentNode.setAttribute(name, value);\n\t\t\tif (_isClobbered(currentNode)) {\n\t\t\t\t_forceRemove(currentNode);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (_) {\n\t\t\t_removeAttribute(name, currentNode);\n\t\t\treturn false;\n\t\t}\n\t};\n\t/**\n\t* _sanitizeAttributes\n\t*\n\t* @protect attributes\n\t* @protect nodeName\n\t* @protect removeAttribute\n\t* @protect setAttribute\n\t*\n\t* @param currentNode to sanitize\n\t* @param root the current walk root\n\t*/\n\tconst _sanitizeAttributes = function _sanitizeAttributes(currentNode, root) {\n\t\t_executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\t\tif (_handleHookDetachedNode(currentNode, root)) return;\n\t\tconst attributes = currentNode.attributes;\n\t\tif (!attributes || _isClobbered(currentNode)) return;\n\t\tALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);\n\t\tconst hookEvent = {\n\t\t\tattrName: \"\",\n\t\t\tattrValue: \"\",\n\t\t\tkeepAttr: true,\n\t\t\tallowedAttributes: ALLOWED_ATTR,\n\t\t\tforceKeepAttr: void 0\n\t\t};\n\t\tlet l = attributes.length;\n\t\tconst lcTag = transformCaseFunc(currentNode.nodeName);\n\t\twhile (l--) {\n\t\t\tconst attr = attributes[l];\n\t\t\tconst name = attr.name, namespaceURI = attr.namespaceURI, attrValue = attr.value;\n\t\t\tconst lcName = transformCaseFunc(name);\n\t\t\tconst initValue = attrValue;\n\t\t\tlet value = name === \"value\" ? initValue : stringTrim(initValue);\n\t\t\tlet recreatedNamedProp = false;\n\t\t\thookEvent.attrName = lcName;\n\t\t\thookEvent.attrValue = value;\n\t\t\thookEvent.keepAttr = true;\n\t\t\thookEvent.forceKeepAttr = void 0;\n\t\t\t_executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n\t\t\tvalue = hookEvent.attrValue;\n\t\t\tif (SANITIZE_NAMED_PROPS && (lcName === \"id\" || lcName === \"name\") && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tvalue = SANITIZE_NAMED_PROPS_PREFIX + value;\n\t\t\t\trecreatedNamedProp = true;\n\t\t\t}\n\t\t\tif (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (lcName === \"attributename\" && stringMatch(value, \"href\")) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (hookEvent.forceKeepAttr) continue;\n\t\t\tif (!hookEvent.keepAttr) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (SAFE_FOR_TEMPLATES) value = _stripTemplateExpressions(value);\n\t\t\tif (!_isValidAttribute(lcTag, lcName, value)) {\n\t\t\t\t_removeAttribute(name, currentNode, attr);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalue = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\t\t\tif (value !== initValue) {\n\t\t\t\tif (_setAttributeValue(currentNode, name, namespaceURI, value) && recreatedNamedProp) arrayPop(DOMPurify.removed);\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n\t\t_handleHookDetachedNode(currentNode, root);\n\t};\n\t/**\n\t* _sanitizeShadowDOM\n\t*\n\t* @param fragment to iterate over recursively\n\t*/\n\tconst _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {\n\t\tlet shadowNode = null;\n\t\tconst shadowIterator = _createNodeIterator(fragment);\n\t\t_executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\t\twhile (shadowNode = shadowIterator.nextNode()) {\n\t\t\t_executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\t\t\t_sanitizeElements(shadowNode, fragment);\n\t\t\t_sanitizeAttributes(shadowNode, fragment);\n\t\t\tif (_isDocumentFragment(shadowNode.content)) _sanitizeShadowDOM2(shadowNode.content);\n\t\t\tif (_readNodeType(shadowNode) === NODE_TYPE.element) {\n\t\t\t\tconst innerSr = getShadowRoot(shadowNode);\n\t\t\t\tif (_isDocumentFragment(innerSr)) {\n\t\t\t\t\t_sanitizeAttachedShadowRoots(innerSr);\n\t\t\t\t\t_sanitizeShadowDOM2(innerSr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n\t};\n\t/**\n\t* _sanitizeAttachedShadowRoots\n\t*\n\t* Walks `root` and feeds every attached shadow root we encounter into\n\t* the existing _sanitizeShadowDOM pipeline. The default node iterator\n\t* does not descend into shadow trees, so nodes inside an attached\n\t* shadow root would otherwise be skipped entirely.\n\t*\n\t* Two real input paths put attached shadow roots in front of us:\n\t* 1. IN_PLACE on a DOM node that already has shadow roots attached.\n\t* 2. DOM-node input where importNode(dirty, true) deep-clones the\n\t* shadow root because it was created with `clonable: true`.\n\t*\n\t* This pass runs once, up front, so the main iteration loop (and the\n\t* existing _sanitizeShadowDOM template-content recursion) stay\n\t* untouched — string-input paths are not affected.\n\t*\n\t* @param root the subtree root to walk for attached shadow roots\n\t*/\n\tconst _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {\n\t\tconst stack = [{\n\t\t\tnode: root,\n\t\t\tshadow: null\n\t\t}];\n\t\twhile (stack.length > 0) {\n\t\t\tconst item = stack.pop();\n\t\t\tif (item.shadow) {\n\t\t\t\t_sanitizeShadowDOM2(item.shadow);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst node = item.node;\n\t\t\tconst isElement = _readNodeType(node) === NODE_TYPE.element;\n\t\t\tconst childNodes = getChildNodes(node);\n\t\t\tif (childNodes) for (let i = childNodes.length - 1; i >= 0; --i) stack.push({\n\t\t\t\tnode: childNodes[i],\n\t\t\t\tshadow: null\n\t\t\t});\n\t\t\tif (isElement) {\n\t\t\t\tconst rootName = getNodeName ? getNodeName(node) : null;\n\t\t\t\tif (typeof rootName === \"string\" && transformCaseFunc(rootName) === \"template\") {\n\t\t\t\t\tconst content = node.content;\n\t\t\t\t\tif (_isDocumentFragment(content)) stack.push({\n\t\t\t\t\t\tnode: content,\n\t\t\t\t\t\tshadow: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isElement) {\n\t\t\t\tconst sr = getShadowRoot(node);\n\t\t\t\tif (_isDocumentFragment(sr)) stack.push({\n\t\t\t\t\tnode: null,\n\t\t\t\t\tshadow: sr\n\t\t\t\t}, {\n\t\t\t\t\tnode: sr,\n\t\t\t\t\tshadow: null\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\tDOMPurify.sanitize = function(dirty) {\n\t\tlet cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n\t\tlet body = null;\n\t\tlet importedNode = null;\n\t\tlet currentNode = null;\n\t\tlet returnNode = null;\n\t\tIS_EMPTY_INPUT = !dirty;\n\t\tif (IS_EMPTY_INPUT) dirty = \"<!-->\";\n\t\tif (typeof dirty !== \"string\" && !_isNode(dirty)) {\n\t\t\tdirty = stringifyValue(dirty);\n\t\t\tif (typeof dirty !== \"string\") throw typeErrorCreate(\"dirty is not a string, aborting\");\n\t\t}\n\t\tif (!DOMPurify.isSupported) return dirty;\n\t\tif (SET_CONFIG) {\n\t\t\tALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n\t\t\tALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n\t\t} else _parseConfig(cfg);\n\t\tif (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) ALLOWED_TAGS = clone(ALLOWED_TAGS);\n\t\tif (hooks.uponSanitizeAttribute.length > 0) ALLOWED_ATTR = clone(ALLOWED_ATTR);\n\t\tDOMPurify.removed = [];\n\t\tconst inPlace = IN_PLACE && typeof dirty !== \"string\" && _isNode(dirty);\n\t\tif (inPlace) {\n\t\t\t_neutralizePatchLinkage(dirty);\n\t\t\tconst nn = _readNodeName(dirty);\n\t\t\tif (typeof nn === \"string\") {\n\t\t\t\tconst tagName = transformCaseFunc(nn);\n\t\t\t\tif (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n\t\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\t\tthrow typeErrorCreate(\"root node is forbidden and cannot be sanitized in-place\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_isClobbered(dirty)) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tthrow typeErrorCreate(\"root node is clobbered and cannot be sanitized in-place\");\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t_sanitizeAttachedShadowRoots(dirty);\n\t\t\t} catch (error) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t} else if (_isNode(dirty)) {\n\t\t\tbody = _initDocument(\"<!---->\");\n\t\t\timportedNode = body.ownerDocument.importNode(dirty, true);\n\t\t\tif (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === \"BODY\") body = importedNode;\n\t\t\telse if (importedNode.nodeName === \"HTML\") body = importedNode;\n\t\t\telse body.appendChild(importedNode);\n\t\t\t_sanitizeAttachedShadowRoots(body);\n\t\t} else {\n\t\t\tif (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf(\"<\") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;\n\t\t\tbody = _initDocument(dirty);\n\t\t\tif (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : \"\";\n\t\t}\n\t\tif (body && FORCE_BODY) _forceRemove(body.firstChild);\n\t\tconst walkRoot = inPlace ? dirty : body;\n\t\ttry {\n\t\t\tconst nodeIterator = _createNodeIterator(walkRoot);\n\t\t\twhile (currentNode = nodeIterator.nextNode()) {\n\t\t\t\t_sanitizeElements(currentNode, walkRoot);\n\t\t\t\t_sanitizeAttributes(currentNode, walkRoot);\n\t\t\t\tif (_isDocumentFragment(currentNode.content)) _sanitizeShadowDOM2(currentNode.content);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (inPlace) {\n\t\t\t\t_neutralizeRoot(dirty);\n\t\t\t\tarrayForEach(DOMPurify.removed, (entry) => {\n\t\t\t\t\tif (entry.element) _neutralizeSubtree(entry.element);\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tif (inPlace) {\n\t\t\tlet rootWasRemoved = false;\n\t\t\tarrayForEach(DOMPurify.removed, (entry) => {\n\t\t\t\tif (entry.element) {\n\t\t\t\t\tif (entry.element === dirty) rootWasRemoved = true;\n\t\t\t\t\t_neutralizeSubtree(entry.element);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (rootWasRemoved) throw typeErrorCreate(\"a node selected for removal could not be safely returned; refusing to sanitize in place\");\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(dirty);\n\t\t\treturn dirty;\n\t\t}\n\t\tif (RETURN_DOM) {\n\t\t\tif (SAFE_FOR_TEMPLATES) _scrubTemplateExpressions2(body);\n\t\t\tif (RETURN_DOM_FRAGMENT) {\n\t\t\t\treturnNode = createDocumentFragment.call(body.ownerDocument);\n\t\t\t\twhile (body.firstChild) returnNode.appendChild(body.firstChild);\n\t\t\t} else returnNode = body;\n\t\t\tif (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);\n\t\t\treturn returnNode;\n\t\t}\n\t\tlet serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\t\tif (WHOLE_DOCUMENT && ALLOWED_TAGS[\"!doctype\"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = \"<!DOCTYPE \" + body.ownerDocument.doctype.name + \">\\n\" + serializedHTML;\n\t\tif (SAFE_FOR_TEMPLATES) serializedHTML = _stripTemplateExpressions(serializedHTML);\n\t\treturn trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;\n\t};\n\tDOMPurify.setConfig = function() {\n\t\tlet cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n\t\t_parseConfig(cfg);\n\t\tSET_CONFIG = true;\n\t\tSET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n\t\tSET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n\t};\n\tDOMPurify.clearConfig = function() {\n\t\tCONFIG = null;\n\t\tSET_CONFIG = false;\n\t\tSET_CONFIG_ALLOWED_TAGS = null;\n\t\tSET_CONFIG_ALLOWED_ATTR = null;\n\t\ttrustedTypesPolicy = defaultTrustedTypesPolicy;\n\t\temptyHTML = \"\";\n\t};\n\tDOMPurify.isValidAttribute = function(tag, attr, value) {\n\t\tif (!CONFIG) _parseConfig({});\n\t\tconst lcTag = transformCaseFunc(tag);\n\t\tconst lcName = transformCaseFunc(attr);\n\t\treturn _isValidAttribute(lcTag, lcName, value);\n\t};\n\tDOMPurify.addHook = function(entryPoint, hookFunction) {\n\t\tif (typeof hookFunction !== \"function\") return;\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tarrayPush(hooks[entryPoint], hookFunction);\n\t};\n\tDOMPurify.removeHook = function(entryPoint, hookFunction) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\tif (hookFunction !== void 0) {\n\t\t\tconst index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\t\t\treturn index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];\n\t\t}\n\t\treturn arrayPop(hooks[entryPoint]);\n\t};\n\tDOMPurify.removeHooks = function(entryPoint) {\n\t\tif (!objectHasOwnProperty(hooks, entryPoint)) return;\n\t\thooks[entryPoint] = [];\n\t};\n\tDOMPurify.removeAllHooks = function() {\n\t\thooks = _createHooksMap();\n\t};\n\treturn DOMPurify;\n}\nvar purify_default = createDOMPurify();\n\n// Scoped instance — hooks are isolated to this instance and won't affect other DOMPurify consumers.\n// If we need to sanitize, without the hooks, we can use DOMPurify.sanitize directly.\nconst purify = purify_default(globalThis);\npurify.addHook('afterSanitizeAttributes', (node) => {\n if (node.getAttribute('target') === '_blank') {\n node.setAttribute('rel', 'noopener noreferrer');\n }\n else if (!node.hasAttribute('target') && (node.hasAttribute('xlink:href') || node.hasAttribute('href'))) {\n node.setAttribute('xlink:show', 'new');\n }\n});\n\n/**\n * Base class for all models, providing deep copy functionality.\n *\n * This abstract class ensures that any model extending it implements immutability\n * by providing a `copy` method, which creates a deep copy of the current instance.\n *\n * All models in the application are expected to extend this class to inherit the\n * `copy` behavior, ensuring consistency in how objects are cloned and manipulated.\n *\n * @template <T> The type of the model extending this class.\n */\nclass Model {\n /**\n * Creates a deep copy of the current instance.\n *\n * This method utilizes `ObjectUtil.deepCopy` to create a new instance of the model\n * with all properties and nested objects deeply cloned, ensuring that any changes\n * to the copy do not affect the original instance.\n *\n * @returns A new instance of the type `T` that is a deep copy of the original.\n */\n copy() {\n return ObjectUtil.deepCopy(this);\n }\n}\n\n/**\n * Abstract base class for managing a list of items that extends the {@link Model} class.\n *\n * This class provides common utility methods for manipulating and querying the list of items,\n * such as sorting, filtering, and finding elements. Subclasses can extend this class to work\n * with specific types of models.\n *\n * @template T - The type of items in the list.\n */\nclass ModelList extends Model {\n /**\n * Creates an instance of the {@link ModelList}.\n *\n * @param items - An optional array of items to initialize the list. If no items are provided,\n * an empty array is used by default.\n */\n constructor(items = []) {\n super();\n this.items = items;\n }\n /**\n * Returns the number of items in the list.\n *\n * @returns The count of items in the list.\n */\n size() {\n return this.items.length;\n }\n /**\n * Retrieves all items in the list.\n *\n * @returns An array containing all items in the list.\n */\n getItems() {\n return this.items;\n }\n /**\n * Retrieves the first item in the list.\n *\n * @returns The first item in the list, or `undefined` if the list is empty.\n */\n getFirstItem() {\n return this.items[0];\n }\n /**\n * Sorts the items in place using the specified comparator function.\n *\n * @param comparator - A comparison function that defines the sort order.\n * Should return a negative number if `a` < `b`,\n * zero if `a` === `b`, or a positive number if `a` > `b`.\n *\n * @example\n * const modelList = new MyModelList([{ id: 2 }, { id: 1 }]);\n * modelList.sort((a, b) => a.id - b.id);\n * console.log(modelList.items); // Outputs: [{ id: 1 }, { id: 2 }]\n */\n sort(comparator) {\n this.items.sort(comparator);\n }\n /**\n * Filters the items using the specified filter function.\n *\n * @param filterFunction - A function that returns `true` for items to include\n * and `false` for items to exclude.\n * @returns A new array of items that match the filter criteria.\n */\n filter(filterFunction) {\n return this.items.filter(filterFunction);\n }\n /**\n * Finds an item in the list that matches the specified filter function.\n *\n * @param filterFunction - A function that returns `true` for the desired item.\n * @returns The first item that matches the filter criteria, or `undefined` if none match.\n */\n find(filterFunction) {\n return this.items.find(filterFunction);\n }\n /**\n * Checks if the collection of items is empty.\n *\n * @returns {boolean} - Returns `true` if there are no items in the collection, otherwise `false`.\n */\n isEmpty() {\n return this.items.length === 0;\n }\n /**\n * Adds a new item to the list in the first position.\n *\n * @param item - The item to add.\n */\n addToStart(item) {\n this.items.unshift(item);\n }\n /**\n * Adds an array of items to the end of the list.\n *\n * @param items the items to add\n */\n addItems(items) {\n this.items.push(...items);\n }\n /**\n * Removes a specific item from the list.\n *\n * This method finds the first occurrence of the specified item in the list and removes it.\n * If the item is not found in the list, no changes are made.\n *\n * @param item - The item to be removed from the list.\n */\n remove(item) {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n /**\n * Removes all items from the collection, resetting it to an empty state.\n */\n removeAll() {\n this.items = [];\n }\n}\n\n/**\n * Represents a list of subscriptions that can be managed collectively.\n * Extends the {@link ModelList} class, specialized for {@link Subscription} type.\n */\nclass SubscriptionList extends ModelList {\n /**\n * Creates a new instance of SubscriptionList.\n * @param subscriptions - An optional array of Subscription functions to initialize the list.\n */\n constructor(subscriptions) {\n super(subscriptions);\n }\n /**\n * Adds a new subscription to the list.\n * @param subscription - The Subscription function to be added to the list.\n */\n add(subscription) {\n this.items.push(subscription);\n }\n /**\n * Removes a subscription from the list.\n * @param subscription - The Subscription function to be removed from the list.\n */\n remove(subscription) {\n this.items = this.items.filter(sub => sub !== subscription);\n }\n /**\n * Adds multiple subscriptions to the list.\n * @param subscriptions - An array of Subscription functions to be added.\n */\n addAll(subscriptions) {\n this.items.push(...subscriptions);\n }\n /**\n * Calls all subscription functions in the list and then clears the list. Calling a subscription\n * function unsubscribes the subscription. This effectively unsubscribes all subscriptions\n * and removes them from the list.\n */\n unsubscribeAll() {\n this.items.forEach(subscription => subscription());\n this.items = [];\n }\n}\n\nconst ontoToggleSwitchCss = \".toggle-switch{all:unset;clear:both;margin:0 5px;width:36px}.toggle-switch:focus{outline:none;box-shadow:none}.toggle-switch:focus-visible{outline:none;box-shadow:none}.toggle-switch input:empty{display:none}.toggle-switch input:empty~label{position:relative;cursor:pointer;user-select:none;margin:0.05em 0.6em -0.05em 0;vertical-align:text-bottom}.toggle-switch input:empty~label:before{display:block;content:\\\" \\\";width:2.2em;height:1.25em;background-color:var(--gw-toggleswitch-background);border-radius:10em;transition:all 100ms ease-in}.toggle-switch input:empty~label:after{position:absolute;display:block;top:0.08em;left:0.1em;content:\\\" \\\";width:0.9em;height:0.9em;background-color:var(--gw-toggleswitch-handle-background);border:1px solid var(--gw-toggleswitch-background);border-radius:50%;transition:all 100ms ease-in}.toggle-switch input:checked~label:before{background-color:var(--gw-toggleswitch-checked-background)}.toggle-switch input:checked~label:after{left:1em;background-color:var(--gw-toggleswitch-handle-checked-background);border:1px solid var(--gw-toggleswitch-checked-background)}\";\n\nconst OntoToggleSwitch = class {\n constructor(hostRef) {\n registerInstance(this, hostRef);\n this.toggleChanged = createEvent(this, \"toggleChanged\");\n this.subscriptions = new SubscriptionList();\n /**\n * Determines whether the toggle switch is checked or not.\n */\n this.checked = false;\n this.toggle = () => {\n this.checked = !this.checked;\n this.toggleChanged.emit({ checked: this.checked, context: this.context });\n };\n }\n subscribeToLanguageChange() {\n if (this.tooltipTranslationKey) {\n this.subscriptions.add(TranslationService.onTranslate(this.tooltipTranslationKey, [], (translation) => {\n this.tooltipLabel = translation;\n }));\n }\n }\n disconnectedCallback() {\n this.subscriptions.unsubscribeAll();\n }\n connectedCallback() {\n this.subscribeToLanguageChange();\n }\n render() {\n return (h(\"section\", { key: 'f1ece951e2329509c1e7bdb32a53c79ddf4cf1c2' }, this.labelKey &&\n h(\"label\", { key: 'd9095af3d86bfe0d975064d7190d7831cd19b0df' }, h(\"strong\", { key: 'f5dd47be55d2f9df3b02d3ea2f635676085998de' }, h(\"translate-label\", { key: 'e419321511358b26628510c8f734cab0e11b0d2f', labelKey: this.labelKey }), \"\\u00A0\")), h(\"button\", { key: '82488ad21b82be29d4e3a51f511c15c4f401a012', class: \"toggle-switch\", onClick: this.toggle, \"tooltip-append-to\": \"parent\", \"tooltip-content\": this.tooltipLabel, \"tooltip-placement\": OntoTooltipPlacement.TOP }, h(\"input\", { key: 'cdcee57b9bbd362c9f309df7361b9be752e9d125', type: \"checkbox\", checked: this.checked }), h(\"label\", { key: 'b76a4e0d310c72bd971303296ac9129e48413c7f' }))));\n }\n};\nOntoToggleSwitch.style = ontoToggleSwitchCss;\n\nexport { OntoDialog as onto_dialog, OntoToggleSwitch as onto_toggle_switch };\n","var OntoTooltipPlacement;\n(function (OntoTooltipPlacement) {\n OntoTooltipPlacement[\"LEFT\"] = \"left\";\n OntoTooltipPlacement[\"RIGHT\"] = \"right\";\n OntoTooltipPlacement[\"TOP\"] = \"top\";\n OntoTooltipPlacement[\"BOTTOM\"] = \"bottom\";\n OntoTooltipPlacement[\"AUTO\"] = \"auto\";\n})(OntoTooltipPlacement || (OntoTooltipPlacement = {}));\n\nexport { OntoTooltipPlacement as O };\n","import { Loggers, ServiceProvider, LanguageContextService } from '@ontotext/workbench-api';\n\nfunction sanitizeHTML(html) {\n const element = document.createElement('textarea');\n element.innerHTML = html;\n return element.value;\n}\n\nconst MODULE_NAME = 'SharedComponents';\n/**\n * Logger for the Shared Components module.\n */\nclass LoggerProvider {\n /**\n * Gets the logger instance for the Shared Components module.\n *\n * @returns LoggerService instance for the Shared Components module\n */\n static get logger() {\n return Loggers.getLoggerInstance(MODULE_NAME);\n }\n}\n\n/**\n * Service responsible for translation operations in the component.\n */\nclass TranslationServiceClassDefinition {\n constructor() {\n this.languageContextService = ServiceProvider.get(LanguageContextService);\n this.translationChangedObservers = {};\n this.logger = LoggerProvider.logger;\n // log with background color\n this.defaultBundle = this.languageContextService.getDefaultBundle();\n this.subscribeToBundleChange();\n }\n /**\n * Translates the <code>messageLabelKey</code> with <code>translationParameter</code> and call <code>translationCallback</code> with translation of current language.\n * The <code>translationCallback</code> is called upon subscription and whenever the selected language is changed.\n *\n * @param messageLabelKey - The label key for the translation.\n * @param translationParameter - Parameters, if needed, for translation.\n * @param translationCallback - A function to be called when translating the `messageLabelKey`.\n * @returns A function that, when called, unsubscribes the provided callback from further translation updates.\n */\n onTranslate(messageLabelKey, translationParameter = [], translationCallback = () => { }) {\n this.translationChangedObservers[messageLabelKey] = this.translationChangedObservers[messageLabelKey] || [];\n const observer = { parameters: translationParameter, callback: translationCallback };\n this.translationChangedObservers[messageLabelKey].push(observer);\n translationCallback(this.translate(messageLabelKey, translationParameter));\n return () => {\n const index = this.translationChangedObservers[messageLabelKey].indexOf(observer);\n if (index !== -1) {\n this.translationChangedObservers[messageLabelKey].splice(index, 1);\n }\n };\n }\n /**\n * Translates the provided key using the currently selected language by applying the parameters if\n * provided.\n * @param key The key for the label which needs to be translated.\n * @param parameters Optional parameters which to be applied during the translation.\n */\n translate(key, parameters) {\n return this.translateInLocale(key, parameters);\n }\n /**\n * Translates a given key into the specified locale. If parameters are provided,\n * they will be applied to the translation.\n *\n * @param key - The translation key, which can be dot-separated for nested translations.\n * @param parameters - Optional parameters to be substituted into the translation string.\n * @returns The translated string with parameters applied if available, or the key itself if not found.\n */\n translateInLocale(key, parameters) {\n // Attempt to retrieve the translation from the specified locale's bundle.\n let translation = this.translateFromBundle(this.currentBundle, key);\n // If not found, fall back to the default language bundle.\n if (!translation) {\n translation = this.translateFromBundle(this.defaultBundle, key);\n }\n // If translation was found, apply any parameters provided and return the result.\n if (translation) {\n translation = this.applyParameters(translation, parameters);\n return sanitizeHTML(translation);\n }\n this.logger.warn(`Missing translation for key: [${key}]`);\n return key;\n }\n /**\n * Retrieves a translation from a specified translation bundle using the given key.\n * If the key represents a nested JSON path, it attempts to resolve the key as such.\n *\n * @param bundle - The translation bundle for the specified locale.\n * @param key - The key to translate, which may be a simple key or dot-separated for nested keys.\n * @returns The translation string if found, or `undefined` if not available.\n */\n translateFromBundle(bundle, key) {\n if (!bundle) {\n return undefined;\n }\n // Try to retrieve the translation directly if it is defined as a whole string,\n // for instance as \"some_function.btn.label\".\n let translation = bundle[key];\n // If not found, attempt to retrieve the translation if it is defined as a JSON object.\n if (typeof translation !== 'string') {\n translation = this.translateAsJsonObject(bundle, key);\n }\n return translation;\n }\n /**\n * Resolves a nested translation key by treating it as a path in a JSON object.\n * For example, if the key is \"some.key.path\", this method will navigate through\n * the JSON object structure to retrieve the value at that path.\n *\n * @param bundle - The translation bundle containing nested keys.\n * @param key - The dot-separated key representing the path to the translation.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n translateAsJsonObject(bundle, key) {\n if (!key) {\n return;\n }\n let path = key.split('.');\n return this.getTranslation(bundle, path);\n }\n /**\n * Recursively navigates through a JSON object based on a path array to retrieve\n * a translation string. Each element in the path array represents a nested key.\n *\n * @param jsonObject - The current JSON object or nested object being searched.\n * @param path - An array representing the path to the translation, where each element is a key.\n * @returns The translation string if found, or `undefined` if the path does not exist.\n */\n getTranslation(jsonObject, path) {\n // Stop the recursion if path or reach the inner element\n if (!path || !jsonObject) {\n return undefined;\n }\n const jsonOrTranslation = jsonObject[path.splice(0, 1)[0]];\n if (path.length === 0) {\n return jsonOrTranslation;\n }\n if (typeof jsonOrTranslation !== 'string') {\n // continue if the inner element is not reached.\n if (path.length > 0) {\n return this.getTranslation(jsonOrTranslation, path);\n }\n return jsonOrTranslation;\n }\n return undefined;\n }\n applyParameters(translation, parameters) {\n if (parameters) {\n return parameters.reduce(\n // replace all occurrence of parameter key with parameter value.\n (translation, parameter) => TranslationServiceClassDefinition.replaceAll(translation, parameter), translation);\n }\n return translation;\n }\n static replaceAll(translation, parameter) {\n return parameter ? translation.split(`{{${parameter.key}}}`).join(parameter.value) : translation;\n }\n notifyTranslationsChanged() {\n Object.keys(this.translationChangedObservers).forEach((eventName) => {\n const observers = this.translationChangedObservers[eventName] || [];\n observers.forEach((observer) => observer.callback(this.translate(eventName, observer.parameters)));\n });\n }\n subscribeToBundleChange() {\n this.languageChangeSubscription = this.languageContextService.onLanguageBundleChanged((bundle) => {\n if (bundle) {\n this.currentBundle = bundle;\n this.notifyTranslationsChanged();\n }\n });\n }\n destroy() {\n if (this.languageChangeSubscription) {\n this.languageChangeSubscription();\n }\n }\n}\nconst TranslationService = new TranslationServiceClassDefinition();\n\nexport { LoggerProvider as L, TranslationService as T, sanitizeHTML as s };\n"],"names":["INTERACTIVE_ELEMENTS_SELECTOR","HtmlUtil","setDocumentBodyOverflow","newOverflow","oldOverflow","document","body","style","overflow","hideDocumentBodyOverflow","focusNextElement","parentElement","activeElementSelector","focusableElements","Array","from","querySelectorAll","length","currentIndex","indexOf","activeElement","nextActiveElement","focus","focusPreviousElement","previousActiveElement","preventLeavingDialog","hostElement","ev","key","preventDefault","shiftKey","focusElement","selector","element","querySelector","scrollElementIntoView","elementSelector","options","block","scrollIntoView","waitForElement","Promise","resolve","reject","observer","MutationObserver","disconnect","error","observe","subtree","childList","attributes","OntoDialog","constructor","hostRef","registerInstance","this","handleClose","evt","config","onClose","componentDidLoad","documentOverflow","addEventListener","bind","disconnectedCallback","removeEventListener","render","h","Host","tabindex","class","modalClass","dialogTitle","onClick","name","getElement","ObjectUtil","deepEqual","obj1","obj2","isArray","i","keys1","Object","keys","keys2","deepCopy","obj","hasCopyMethod","copy","builtInCopy","copyBuiltInType","copyPlainObject","map","item","Date","getTime","RegExp","source","flags","Map","entries","value","Set","values","result","create","getPrototypeOf","prototype","hasOwnProperty","call","mergeWithDefaults","object","defaults","forEach","objValue","defaultValue","isNullOrUndefined","canRecursivelyMerge","a","b","_arrayLikeToArray","r","e","n","_slicedToArray","_arrayWithHoles","l","t","Symbol","iterator","u","f","o","next","done","push","return","_iterableToArrayLimit","toString","slice","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","setPrototypeOf","isFrozen","getOwnPropertyDescriptor","freeze","seal","_ref","Reflect","apply","construct","x","func","thisArg","_len","arguments","args","_key","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","arraySplice","splice","arrayIsArray","stringToLowerCase","String","toLowerCase","stringToString","stringMatch","match","stringReplace","replace","stringIndexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","objectHasOwnProperty","objectToString","regExpTest","typeErrorCreate","_len4","_key4","lastIndex","_len3","_key3","addToSet","set","array","transformCaseFunc","lcElement","cleanArray","index","clone","newObject","_ref2","_ref3","property","lookupGetter","prop","desc","get","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","LITERAL_TEXT_ELEMENT_NAMES","LITERAL_TEXT_ELEMENTS","LITERAL_TEXT_CLOSE","getGlobal","window","_resolveSetOption","cfg","fallback","base","transform","_resolveObjectOption","makeFallback","purify_default","createDOMPurify","DOMPurify","root","version","removed","nodeType","Element","isSupported","originalDocument","currentScript","HTMLTemplateElement","Node","NodeFilter","DOMParser","trustedTypes","ElementPrototype","cloneNode","remove","removeAttributeNode","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","node","_readNodeName","nodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","defaultTrustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","createHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","CUSTOM_ELEMENT$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","_unused","isRegex","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","createScriptURL","previousTrustedTypesPolicy","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","scriptUrl","_","console","warn","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","removeChild","_stripAttributeNode","attribute","removeAttribute","_neutralizeRoot","_neutralizeSubtree","childNodes","snapshot","child","_removeAttribute","attr","getAttributeNode","setAttribute","_stripDisallowedAttributes","stack","_isPatchLinkageAttribute","lcName","lcTag","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","insertBefore","createTextNode","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_stripTemplateExpressions","_scrubTemplateExpressions2","_node$querySelectorAl","normalize","walker","currentNode","nextNode","data","templates","tmpl","_isDocumentFragment","_isClobbered","realTagName","textContent","namespaceURI","hasChildNodes","_isNode","_executeHooks","hook","_matchesNameCheck","check","_forkSharedAllowlist","hookList","defaultSet","setConfigSet","_handleHookDetachedNode","_sanitizeElements","tagName","allowedTags","firstElementChild","_isUnsafeNode","_isBasicCustomElement","parentNode","hoisted","_sanitizeDisallowedNode","parent","parentTagName","_checkSvgNamespace","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","_isValidAttribute","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","getAttributeType","_createTrustedScriptURL","_setAttributeValue","setAttributeNS","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","recreatedNamedProp","_sanitizeShadowDOM2","fragment","shadowNode","shadowIterator","innerSr","_sanitizeAttachedShadowRoots","shadow","isElement","rootName","sr","sanitize","importedNode","returnNode","valueAsRecord","valueToString","stringified","stringifyValue","inPlace","_neutralizePatchLinkage","nn","appendChild","firstChild","walkRoot","nodeIterator","entry","rootWasRemoved","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","globalThis","Model","ModelList","items","super","size","getItems","getFirstItem","sort","comparator","filter","filterFunction","find","isEmpty","addToStart","unshift","addItems","removeAll","SubscriptionList","subscriptions","add","subscription","sub","addAll","unsubscribeAll","OntoToggleSwitch","toggleChanged","createEvent","checked","toggle","emit","context","subscribeToLanguageChange","tooltipTranslationKey","TranslationService","onTranslate","translation","tooltipLabel","connectedCallback","labelKey","OntoTooltipPlacement","TOP","type","sanitizeHTML","LoggerProvider","logger","Loggers","getLoggerInstance","TranslationServiceClassDefinition","languageContextService","ServiceProvider","LanguageContextService","translationChangedObservers","defaultBundle","getDefaultBundle","subscribeToBundleChange","messageLabelKey","translationParameter","translationCallback","parameters","callback","translate","translateInLocale","translateFromBundle","currentBundle","applyParameters","bundle","translateAsJsonObject","path","split","getTranslation","jsonObject","jsonOrTranslation","reduce","parameter","replaceAll","join","notifyTranslationsChanged","eventName","languageChangeSubscription","onLanguageBundleChanged","destroy"],"sourceRoot":""}
|