From f2345ece9507850e4939105af7e9f493b7610fcb Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Fri, 13 Sep 2024 11:43:16 -0700 Subject: [PATCH] Make PDAs try to do image embedding like chat app 2024 --- code/modules/client/preferences/types/misc.dm | 6 + code/modules/pda/messenger.dm | 1 + tgui/packages/tgui-polyfill/index.js | 1 + .../Pda/pda_screens/pda_messenger.tsx | 464 ++++++++++++------ .../features/game_preferences/misc.tsx | 8 + tgui/public/tgui-panel.bundle.js | 272 +++++----- tgui/public/tgui-say.bundle.js | 168 +++---- tgui/public/tgui.bundle.js | 184 +++---- 8 files changed, 646 insertions(+), 458 deletions(-) diff --git a/code/modules/client/preferences/types/misc.dm b/code/modules/client/preferences/types/misc.dm index b1ec6216719..5341737eb5a 100644 --- a/code/modules/client/preferences/types/misc.dm +++ b/code/modules/client/preferences/types/misc.dm @@ -69,3 +69,9 @@ savefile_key = "AUTO_AFK" default_value = TRUE savefile_identifier = PREFERENCE_PLAYER + +/datum/preference/toggle/messenger_embeds + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "MessengerEmbeds" + default_value = TRUE + savefile_identifier = PREFERENCE_PLAYER diff --git a/code/modules/pda/messenger.dm b/code/modules/pda/messenger.dm index 29810e398c8..b0f88606447 100644 --- a/code/modules/pda/messenger.dm +++ b/code/modules/pda/messenger.dm @@ -22,6 +22,7 @@ data["silent"] = notify_silent // does the pda make noise when it receives a message? data["toff"] = toff // is the messenger function turned off? data["active_conversation"] = active_conversation // Which conversation are we following right now? + data["enable_message_embeds"] = user?.client?.prefs?.read_preference(/datum/preference/toggle/messenger_embeds) has_back = active_conversation if(active_conversation) diff --git a/tgui/packages/tgui-polyfill/index.js b/tgui/packages/tgui-polyfill/index.js index 7c45386d8b4..168eed409a4 100644 --- a/tgui/packages/tgui-polyfill/index.js +++ b/tgui/packages/tgui-polyfill/index.js @@ -11,5 +11,6 @@ import 'core-js/es'; import 'core-js/web/immediate'; import 'core-js/web/queue-microtask'; import 'core-js/web/timers'; +import 'core-js/full/url'; import 'regenerator-runtime/runtime'; import 'unfetch/polyfill'; diff --git a/tgui/packages/tgui/interfaces/Pda/pda_screens/pda_messenger.tsx b/tgui/packages/tgui/interfaces/Pda/pda_screens/pda_messenger.tsx index a750178bb79..bee7b3d5f28 100644 --- a/tgui/packages/tgui/interfaces/Pda/pda_screens/pda_messenger.tsx +++ b/tgui/packages/tgui/interfaces/Pda/pda_screens/pda_messenger.tsx @@ -1,9 +1,11 @@ import { filter } from 'common/collections'; import { BooleanLike } from 'common/react'; import { decodeHtmlEntities } from 'common/string'; -import { useState } from 'react'; +import { ReactNode, useEffect, useRef, useState } from 'react'; import { useBackend } from 'tgui/backend'; -import { Box, Button, LabeledList, Section } from 'tgui/components'; +import { Box, Button, Image, LabeledList, Section } from 'tgui/components'; + +import { fetchRetry } from '../../../http'; type Data = { active_conversation: string; @@ -16,6 +18,7 @@ type Data = { pdas: pda[]; charges: number; plugins: { name: string; icon: string; ref: string }[]; + enable_message_embeds: BooleanLike; }; type pda = { @@ -33,6 +36,56 @@ type message = { target: string; }; +// Really cursed old API that was deprecated before IE8 but still works in IE11 because lol lmao +type IeWindow = Window & + typeof globalThis & { + clipboardData: { + setData: (type: 'Text', text: string) => {}; + }; + }; + +const CopyToClipboardButton = (props: { messages: message[] }) => { + const [showCompletion, setShowCompletion] = useState(false); + + useEffect(() => { + if (showCompletion) { + let timeout = setTimeout(() => { + setShowCompletion(false); + }, 1000); + return () => clearTimeout(timeout); + } + }, [showCompletion]); + + const { messages } = props; + return ( + + ); +}; + +const copyToClipboard = (messages: message[]) => { + let string = ''; + + for (let message of messages) { + if (message.sent) { + string += `You: ${message.message}\n`; + } else { + string += `Them: ${message.message}\n`; + } + } + + let ie_window = window as IeWindow; + ie_window.clipboardData.setData('Text', string); +}; + export const pda_messenger = (props) => { const { act, data } = useBackend(); @@ -44,150 +97,6 @@ export const pda_messenger = (props) => { return ; }; -const findClassMessage = (im, lastIndex, filterArray) => { - if (lastIndex < 0 || lastIndex > filterArray.length) { - return im.sent - ? 'TinderMessage_First_Sent' - : 'TinderMessage_First_Received'; - } - - let lastSent = filterArray[lastIndex].sent; - if (im.sent && lastSent) { - return 'TinderMessage_Subsequent_Sent'; - } else if (!im.sent && !lastSent) { - return 'TinderMessage_Subsequent_Received'; - } - return im.sent ? 'TinderMessage_First_Sent' : 'TinderMessage_First_Received'; -}; - -const ActiveConversation = (props) => { - const { act, data } = useBackend(); - - const { convo_name, convo_job, messages, active_conversation } = data; - - const [clipboardMode, setClipboardMode] = useState(false); - - let body = ( -
setClipboardMode(!clipboardMode)} - /> - } - height="450px" - stretchContents - > - -
- {filter( - messages, - (im: message) => im.target === active_conversation, - ).map((im, i, filterArr) => ( - - - {decodeHtmlEntities(im.message)} - - - ))} -
- -
- ); - - if (clipboardMode) { - body = ( -
setClipboardMode(!clipboardMode)} - /> - } - height="450px" - stretchContents - > - -
- {filter( - messages, - (im: message) => im.target === active_conversation, - ).map((im, i) => ( - - {im.sent ? 'You:' : 'Them:'} {decodeHtmlEntities(im.message)} - - ))} -
- -
- ); - } - - return ( - - - - - - - {body} - - ); -}; - const MessengerList = (props) => { const { act, data } = useBackend(); @@ -289,3 +198,266 @@ const PDAList = (props) => { ); }; + +const ActiveConversation = (props) => { + const { act, data } = useBackend(); + const { convo_name, convo_job, messages, active_conversation } = data; + const [asciiMode, setAsciiMode] = useState(false); + + return ( +
+ + i.target === active_conversation)} + /> +
+ ); +}; + +/** + * Scrolls to the bottom of section on mount. + */ +const ScrollOnMount = (props: { children: ReactNode }) => { + const { children } = props; + + const ref = useRef(null); + + useEffect(() => { + ref.current?.scrollIntoView(); + }, []); + + return ( +
+ {children} +
+
+ ); +}; + +const ActiveConversationASCII = (props: { + messages: message[]; + active_conversation: string; +}) => { + const { messages, active_conversation } = props; + + return ( + + {filter(messages, (im: message) => im.target === active_conversation).map( + (im, i) => ( + + {im.sent ? 'You:' : 'Them:'} {decodeHtmlEntities(im.message)} + + ), + )} + + ); +}; + +const findClassMessage = (im, lastIndex, filterArray) => { + if (lastIndex < 0 || lastIndex > filterArray.length) { + return im.sent + ? 'TinderMessage_First_Sent' + : 'TinderMessage_First_Received'; + } + + let lastSent = filterArray[lastIndex].sent; + if (im.sent && lastSent) { + return 'TinderMessage_Subsequent_Sent'; + } else if (!im.sent && !lastSent) { + return 'TinderMessage_Subsequent_Received'; + } + return im.sent ? 'TinderMessage_First_Sent' : 'TinderMessage_First_Received'; +}; + +const ActiveConversationTinder = (props: { + messages: message[]; + active_conversation: string; +}) => { + const { messages, active_conversation } = props; + return ( + + {messages + .filter((im: message) => im.target === active_conversation) + .map((im, i, filterArr) => ( + + ))} + + ); +}; + +const TinderMessage = (props: { im: message; className: string }) => { + const { data } = useBackend(); + const { enable_message_embeds } = data; + const { im, className } = props; + + return ( + <> + + + {decodeHtmlEntities(im.message)} + + + {!!enable_message_embeds && ( + + )} + + ); +}; + +const ALLOWED_HOSTNAMES = ['cdn.discordapp.com', 'i.imgur.com', 'imgur.com']; + +const TinderMessageEmbedAttempt = (props: { + im: message; + className: string; +}) => { + const { im, className } = props; + const [elem, setElem] = useState(null); + + useEffect(() => { + let link = decodeHtmlEntities(im.message.trim()); + + // Early easy check + if (!link.startsWith('https://')) { + return; + } + + // We assume the entire message is a URL, so any spaces disqualify it + if (link.includes(' ')) { + return; + } + + // Try to parse it as a URL. + let url: URL; + try { + url = new URL(link); + } catch (err) { + return; + } + + // Okay, we're pretty damn confident this is a URL now: Check for allowed domains. + if (!ALLOWED_HOSTNAMES.includes(url.hostname)) { + return; + } + + async function resolveUrlToImg(url: URL): Promise { + const headers = { + Accept: 'image/jpeg, image/png, image/gif', + 'User-Agent': 'SS13-Virgo-ImageEmbeds/1.0', + }; + + const response = await fetchRetry(url.toString(), { headers }); + if (!response.ok) { + return null; + } + + let type = response.headers.get('Content-Type'); + + // If we just fetched an image, use it! + if ( + type === 'image/jpeg' || + type === 'image/png' || + type === 'image/gif' + ) { + return url.toString(); + } + + return null; + } + + resolveUrlToImg(url).then((val) => { + if (val) { + setElem(); + } + }); + }, []); + + return elem; +}; + +const TinderMessageEmbed = (props: { + im: message; + className: string; + img: string; +}) => { + const [show, setShow] = useState(false); + + const { im, className, img } = props; + return ( + + + Embed + {show ? ( + + ) : ( + + )} + + + ); +}; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx index 33e63600a4f..9a7a92d86a4 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx @@ -72,3 +72,11 @@ export const AUTO_AFK: FeatureToggle = { 'When enabled, you will automatically be marked as AFK if you are idle for too long.', component: CheckboxInput, }; + +export const MessengerEmbeds: FeatureToggle = { + name: 'Messenger Embeds', + category: 'UI', + description: + 'When enabled, PDAs and Communicators will attempt to embed links from discord & imgur.', + component: CheckboxInput, +}; diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js index 3f28f897a56..705a833353c 100644 --- a/tgui/public/tgui-panel.bundle.js +++ b/tgui/public/tgui-panel.bundle.js @@ -1,4 +1,4 @@ -(function(){(function(){var Fc={75614:function(d,h,t){"use strict";/** +(function(){(function(){var Fc={75614:function(d,m,t){"use strict";/** * @license React * react-dom.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function r(e,n){return n!=null&&typeof Symbol!="undefined"&&n[Symbol.hasInstance]?!!n[Symbol.hasInstance](e):e instanceof n}function o(e){"@swc/helpers - typeof";return e&&typeof Symbol!="undefined"&&e.constructor===Symbol?"symbol":typeof e}var i=t(61358),s=t(20686);function u(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,a=1;an}return!1}function j(e,n,a,c,O,M,$){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=c,this.attributeNamespace=O,this.mustUseProperty=a,this.propertyName=e,this.type=n,this.sanitizeURL=M,this.removeEmptyString=$}var B={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){B[e]=new j(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];B[n]=new j(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){B[e]=new j(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){B[e]=new j(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){B[e]=new j(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){B[e]=new j(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){B[e]=new j(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){B[e]=new j(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){B[e]=new j(e,5,!1,e.toLowerCase(),null,!1,!1)});var F=/[\-:]([a-z])/g;function C(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(F,C);B[n]=new j(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(F,C);B[n]=new j(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(F,C);B[n]=new j(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){B[e]=new j(e,1,!1,e.toLowerCase(),null,!1,!1)}),B.xlinkHref=new j("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){B[e]=new j(e,1,!1,e.toLowerCase(),null,!0,!0)});function N(e,n,a,c){var O=B.hasOwnProperty(n)?B[n]:null;(O!==null?O.type!==0:c||!(2X||O[$]!==M[X]){var dt="\n"+O[$].replace(" at new "," at ");return e.displayName&&dt.includes("")&&(dt=dt.replace("",e.displayName)),dt}while(1<=$&&0<=X);break}}}finally{vt=!1,Error.prepareStackTrace=a}return(e=e?e.displayName||e.name:"")?nt(e):""}function bt(e){switch(e.tag){case 5:return nt(e.type);case 16:return nt("Lazy");case 13:return nt("Suspense");case 19:return nt("SuspenseList");case 0:case 2:case 15:return e=mt(e.type,!1),e;case 11:return e=mt(e.type.render,!1),e;case 1:return e=mt(e.type,!0),e;default:return""}}function gt(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case z:return"Portal";case J:return"Profiler";case k:return"StrictMode";case ct:return"Suspense";case ot:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case _:return(e.displayName||"Context")+".Consumer";case G:return(e._context.displayName||"Context")+".Provider";case Q:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ut:return n=e.displayName||null,n!==null?n:gt(e.type)||"Memo";case W:n=e._payload,e=e._init;try{return gt(e(n))}catch(a){}}return null}function pt(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gt(n);case 8:return n===k?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function Dt(e){switch(typeof e=="undefined"?"undefined":o(e)){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ve(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function de(e){var n=ve(e)?"checked":"value",a=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),c=""+e[n];if(!e.hasOwnProperty(n)&&typeof a!="undefined"&&typeof a.get=="function"&&typeof a.set=="function"){var O=a.get,M=a.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return O.call(this)},set:function(X){c=""+X,M.call(this,X)}}),Object.defineProperty(e,n,{enumerable:a.enumerable}),{getValue:function(){return c},setValue:function(X){c=""+X},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Jt(e){e._valueTracker||(e._valueTracker=de(e))}function Ct(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var a=n.getValue(),c="";return e&&(c=ve(e)?e.checked?"true":"false":e.value),e=c,e!==a?(n.setValue(e),!0):!1}function Nt(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(n){return e.body}}function Wt(e,n){var a=n.checked;return Z({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:a!=null?a:e._wrapperState.initialChecked})}function Ut(e,n){var a=n.defaultValue==null?"":n.defaultValue,c=n.checked!=null?n.checked:n.defaultChecked;a=Dt(n.value!=null?n.value:a),e._wrapperState={initialChecked:c,initialValue:a,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function ae(e,n){n=n.checked,n!=null&&N(e,"checked",n,!1)}function ie(e,n){ae(e,n);var a=Dt(n.value),c=n.type;if(a!=null)c==="number"?(a===0&&e.value===""||e.value!=a)&&(e.value=""+a):e.value!==""+a&&(e.value=""+a);else if(c==="submit"||c==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?Ft(e,n.type,a):n.hasOwnProperty("defaultValue")&&Ft(e,n.type,Dt(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function te(e,n,a){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var c=n.type;if(!(c!=="submit"&&c!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,a||n===e.value||(e.value=n),e.defaultValue=n}a=e.name,a!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,a!==""&&(e.name=a)}function Ft(e,n,a){(n!=="number"||Nt(e.ownerDocument)!==e)&&(a==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+a&&(e.defaultValue=""+a))}var Bt=Array.isArray;function At(e,n,a,c){if(e=e.options,n){n={};for(var O=0;O"+n.valueOf().toString()+"",n=Se.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function le(e,n){if(n){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=n;return}}e.textContent=n}var Kt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Gt=["Webkit","ms","Moz","O"];Object.keys(Kt).forEach(function(e){Gt.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Kt[n]=Kt[e]})});function Me(e,n,a){return n==null||typeof n=="boolean"||n===""?"":a||typeof n!="number"||n===0||Kt.hasOwnProperty(e)&&Kt[e]?(""+n).trim():n+"px"}function Ze(e,n){e=e.style;for(var a in n)if(n.hasOwnProperty(a)){var c=a.indexOf("--")===0,O=Me(a,n[a],c);a==="float"&&(a="cssFloat"),c?e.setProperty(a,O):e[a]=O}}var tr=Z({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fn(e,n){if(n){if(tr[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(u(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(u(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(u(61))}if(n.style!=null&&typeof n.style!="object")throw Error(u(62))}}function Un(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Pn=null;function cr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var rt=null,xt=null,st=null;function yt(e){if(e=Ma(e)){if(typeof rt!="function")throw Error(u(280));var n=e.stateNode;n&&(n=ja(n),rt(e.stateNode,e.type,n))}}function Tt(e){xt?st?st.push(e):st=[e]:xt=e}function Lt(){if(xt){var e=xt,n=st;if(st=xt=null,yt(e),n)for(e=0;e>>=0,e===0?32:31-(Dn(e)/Er|0)|0}var er=64,hn=4194304;function pr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Ln(e,n){var a=e.pendingLanes;if(a===0)return 0;var c=0,O=e.suspendedLanes,M=e.pingedLanes,$=a&268435455;if($!==0){var X=$&~O;X!==0?c=pr(X):(M&=$,M!==0&&(c=pr(M)))}else $=a&~O,$!==0?c=pr($):M!==0&&(c=pr(M));if(c===0)return 0;if(n!==0&&n!==c&&!(n&O)&&(O=c&-c,M=n&-n,O>=M||O===16&&(M&4194240)!==0))return n;if(c&4&&(c|=a&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=c;0a;a++)n.push(e);return n}function Bn(e,n,a){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-On(n),e[n]=a}function To(e,n){var a=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var c=e.eventTimes;for(e=e.expirationTimes;0=_a),Pi=" ",Ci=!1;function ms(e,n){switch(e){case"keyup":return mu.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gs(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var so=!1;function ys(e,n){switch(e){case"compositionend":return gs(n);case"keypress":return n.which!==32?null:(Ci=!0,Pi);case"textInput":return e=n.data,e===Pi&&Ci?null:e;default:return null}}function xs(e,n){if(so)return e==="compositionend"||!Ai&&ms(e,n)?(e=gn(),be=se=Vt=null,so=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:a,offset:n-e};e=c}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=Es(a)}}function Ea(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Ea(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Ts(){for(var e=window,n=Nt();r(n,e.HTMLIFrameElement);){try{var a=typeof n.contentWindow.location.href=="string"}catch(c){a=!1}if(a)e=n.contentWindow;else break;n=Nt(e.document)}return n}function Ni(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function na(e){var n=Ts(),a=e.focusedElem,c=e.selectionRange;if(n!==a&&a&&a.ownerDocument&&Ea(a.ownerDocument.documentElement,a)){if(c!==null&&Ni(a)){if(n=c.start,e=c.end,e===void 0&&(e=n),"selectionStart"in a)a.selectionStart=n,a.selectionEnd=Math.min(e,a.value.length);else if(e=(n=a.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var O=a.textContent.length,M=Math.min(c.start,O);c=c.end===void 0?M:Math.min(c.end,O),!e.extend&&M>c&&(O=c,c=M,M=O),O=Os(a,M);var $=Os(a,c);O&&$&&(e.rangeCount!==1||e.anchorNode!==O.node||e.anchorOffset!==O.offset||e.focusNode!==$.node||e.focusOffset!==$.offset)&&(n=n.createRange(),n.setStart(O.node,O.offset),e.removeAllRanges(),M>c?(e.addRange(n),e.extend($.node,$.offset)):(n.setEnd($.node,$.offset),e.addRange(n)))}}for(n=[],e=a;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof a.focus=="function"&&a.focus(),a=0;a=document.documentMode,Mo=null,Li=null,Oa=null,Is=!1;function Bi(e,n,a){var c=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Is||Mo==null||Mo!==Nt(c)||(c=Mo,"selectionStart"in c&&Ni(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Oa&&Sa(Oa,c)||(Oa=c,c=Pa(Li,"onSelect"),0ba||(e.current=js[ba],js[ba]=null,ba--)}function rn(e,n){ba++,js[ba]=e.current,e.current=n}var Ko={},nr=eo(Ko),gr=eo(!1),Vo=Ko;function Ho(e,n){var a=e.type.contextTypes;if(!a)return Ko;var c=e.stateNode;if(c&&c.__reactInternalMemoizedUnmaskedChildContext===n)return c.__reactInternalMemoizedMaskedChildContext;var O={},M;for(M in a)O[M]=n[M];return c&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=O),O}function Ir(e){return e=e.childContextTypes,e!=null}function Zi(){ln(gr),ln(nr)}function ia(e,n,a){if(nr.current!==Ko)throw Error(u(168));rn(nr,n),rn(gr,a)}function bs(e,n,a){var c=e.stateNode;if(n=n.childContextTypes,typeof c.getChildContext!="function")return a;c=c.getChildContext();for(var O in c)if(!(O in n))throw Error(u(108,pt(e)||"Unknown",O));return Z({},a,c)}function Ji(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ko,Vo=nr.current,rn(nr,e),rn(gr,gr.current),!0}function qi(e,n,a){var c=e.stateNode;if(!c)throw Error(u(169));a?(e=bs(e,n,Vo),c.__reactInternalMemoizedMergedChildContext=e,ln(gr),ln(nr),rn(nr,e)):ln(gr),rn(gr,a)}var Hr=null,ii=!1,_i=!1;function si(e){Hr===null?Hr=[e]:Hr.push(e)}function Mu(e){ii=!0,si(e)}function vo(){if(!_i&&Hr!==null){_i=!0;var e=0,n=Ke;try{var a=Hr;for(Ke=1;e>=$,O-=$,ho=1<<32-On(n)+O|a<Ue?(or=De,De=null):or=De.sibling;var _e=kt(St,De,Ot[Ue],re);if(_e===null){De===null&&(De=or);break}e&&De&&_e.alternate===null&&n(St,De),ht=M(_e,ht,Ue),Ne===null?Ae=_e:Ne.sibling=_e,Ne=_e,De=or}if(Ue===Ot.length)return a(St,De),xn&&sa(St,Ue),Ae;if(De===null){for(;UeUe?(or=De,De=null):or=De.sibling;var pa=kt(St,De,_e.value,re);if(pa===null){De===null&&(De=or);break}e&&De&&pa.alternate===null&&n(St,De),ht=M(pa,ht,Ue),Ne===null?Ae=pa:Ne.sibling=pa,Ne=pa,De=or}if(_e.done)return a(St,De),xn&&sa(St,Ue),Ae;if(De===null){for(;!_e.done;Ue++,_e=Ot.next())_e=Yt(St,_e.value,re),_e!==null&&(ht=M(_e,ht,Ue),Ne===null?Ae=_e:Ne.sibling=_e,Ne=_e);return xn&&sa(St,Ue),Ae}for(De=c(St,De);!_e.done;Ue++,_e=Ot.next())_e=me(De,St,Ue,_e.value,re),_e!==null&&(e&&_e.alternate!==null&&De.delete(_e.key===null?Ue:_e.key),ht=M(_e,ht,Ue),Ne===null?Ae=_e:Ne.sibling=_e,Ne=_e);return e&&De.forEach(function(mf){return n(St,mf)}),xn&&sa(St,Ue),Ae}function Fn(St,ht,Ot,re){if(typeof Ot=="object"&&Ot!==null&&Ot.type===K&&Ot.key===null&&(Ot=Ot.props.children),typeof Ot=="object"&&Ot!==null){switch(Ot.$$typeof){case D:t:{for(var Ae=Ot.key,Ne=ht;Ne!==null;){if(Ne.key===Ae){if(Ae=Ot.type,Ae===K){if(Ne.tag===7){a(St,Ne.sibling),ht=O(Ne,Ot.props.children),ht.return=St,St=ht;break t}}else if(Ne.elementType===Ae||typeof Ae=="object"&&Ae!==null&&Ae.$$typeof===W&&at(Ae)===Ne.type){a(St,Ne.sibling),ht=O(Ne,Ot.props),ht.ref=it(St,Ne,Ot),ht.return=St,St=ht;break t}a(St,Ne);break}else n(St,Ne);Ne=Ne.sibling}Ot.type===K?(ht=Ha(Ot.props.children,St.mode,re,Ot.key),ht.return=St,St=ht):(re=qs(Ot.type,Ot.key,Ot.props,null,St.mode,re),re.ref=it(St,ht,Ot),re.return=St,St=re)}return $(St);case z:t:{for(Ne=Ot.key;ht!==null;){if(ht.key===Ne)if(ht.tag===4&&ht.stateNode.containerInfo===Ot.containerInfo&&ht.stateNode.implementation===Ot.implementation){a(St,ht.sibling),ht=O(ht,Ot.children||[]),ht.return=St,St=ht;break t}else{a(St,ht);break}else n(St,ht);ht=ht.sibling}ht=cl(Ot,St.mode,re),ht.return=St,St=ht}return $(St);case W:return Ne=Ot._init,Fn(St,ht,Ne(Ot._payload),re)}if(Bt(Ot))return Ee(St,ht,Ot,re);if(H(Ot))return Te(St,ht,Ot,re);q(St,Ot)}return typeof Ot=="string"&&Ot!==""||typeof Ot=="number"?(Ot=""+Ot,ht!==null&&ht.tag===6?(a(St,ht.sibling),ht=O(ht,Ot),ht.return=St,St=ht):(a(St,ht),ht=ll(Ot,St.mode,re),ht.return=St,St=ht),$(St)):a(St,ht)}return Fn}var Mt=Rt(!0),It=Rt(!1),zt=eo(null),Zt=null,_t=null,ee=null;function pe(){ee=_t=Zt=null}function Ie(e){var n=zt.current;ln(zt),e._currentValue=n}function $t(e,n,a){for(;e!==null;){var c=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,c!==null&&(c.childLanes|=n)):c!==null&&(c.childLanes&n)!==n&&(c.childLanes|=n),e===a)break;e=e.return}}function fe(e,n){Zt=e,ee=_t=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&n&&(Br=!0),e.firstContext=null)}function he(e){var n=e._currentValue;if(ee!==e)if(e={context:e,memoizedValue:n,next:null},_t===null){if(Zt===null)throw Error(u(308));_t=e,Zt.dependencies={lanes:0,firstContext:e}}else _t=_t.next=e;return n}var Be=null;function we(e){Be===null?Be=[e]:Be.push(e)}function We(e,n,a,c){var O=n.interleaved;return O===null?(a.next=a,we(n)):(a.next=O.next,O.next=a),n.interleaved=a,Qt(e,c)}function Qt(e,n){e.lanes|=n;var a=e.alternate;for(a!==null&&(a.lanes|=n),a=e,e=e.return;e!==null;)e.childLanes|=n,a=e.alternate,a!==null&&(a.childLanes|=n),a=e,e=e.return;return a.tag===3?a.stateNode:null}var Ce=!1;function Re(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Xe(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function en(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Rn(e,n,a){var c=e.updateQueue;if(c===null)return null;if(c=c.shared,Je&2){var O=c.pending;return O===null?n.next=n:(n.next=O.next,O.next=n),c.pending=n,Qt(e,a)}return O=c.interleaved,O===null?(n.next=n,we(c)):(n.next=O.next,O.next=n),c.interleaved=n,Qt(e,a)}function on(e,n,a){if(n=n.updateQueue,n!==null&&(n=n.shared,(a&4194240)!==0)){var c=n.lanes;c&=e.pendingLanes,a|=c,n.lanes=a,Kn(e,a)}}function Zn(e,n){var a=e.updateQueue,c=e.alternate;if(c!==null&&(c=c.updateQueue,a===c)){var O=null,M=null;if(a=a.firstBaseUpdate,a!==null){do{var $={eventTime:a.eventTime,lane:a.lane,tag:a.tag,payload:a.payload,callback:a.callback,next:null};M===null?O=M=$:M=M.next=$,a=a.next}while(a!==null);M===null?O=M=n:M=M.next=n}else O=M=n;a={baseState:c.baseState,firstBaseUpdate:O,lastBaseUpdate:M,shared:c.shared,effects:c.effects},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=n:e.next=n,a.lastBaseUpdate=n}function Dr(e,n,a,c){var O=e.updateQueue;Ce=!1;var M=O.firstBaseUpdate,$=O.lastBaseUpdate,X=O.shared.pending;if(X!==null){O.shared.pending=null;var dt=X,Pt=dt.next;dt.next=null,$===null?M=Pt:$.next=Pt,$=dt;var jt=e.alternate;jt!==null&&(jt=jt.updateQueue,X=jt.lastBaseUpdate,X!==$&&(X===null?jt.firstBaseUpdate=Pt:X.next=Pt,jt.lastBaseUpdate=dt))}if(M!==null){var Yt=O.baseState;$=0,jt=Pt=dt=null,X=M;do{var kt=X.lane,me=X.eventTime;if((c&kt)===kt){jt!==null&&(jt=jt.next={eventTime:me,lane:0,tag:X.tag,payload:X.payload,callback:X.callback,next:null});t:{var Ee=e,Te=X;switch(kt=n,me=a,Te.tag){case 1:if(Ee=Te.payload,typeof Ee=="function"){Yt=Ee.call(me,Yt,kt);break t}Yt=Ee;break t;case 3:Ee.flags=Ee.flags&-65537|128;case 0:if(Ee=Te.payload,kt=typeof Ee=="function"?Ee.call(me,Yt,kt):Ee,kt==null)break t;Yt=Z({},Yt,kt);break t;case 2:Ce=!0}}X.callback!==null&&X.lane!==0&&(e.flags|=64,kt=O.effects,kt===null?O.effects=[X]:kt.push(X))}else me={eventTime:me,lane:kt,tag:X.tag,payload:X.payload,callback:X.callback,next:null},jt===null?(Pt=jt=me,dt=Yt):jt=jt.next=me,$|=kt;if(X=X.next,X===null){if(X=O.shared.pending,X===null)break;kt=X,X=kt.next,kt.next=null,O.lastBaseUpdate=kt,O.shared.pending=null}}while(!0);if(jt===null&&(dt=Yt),O.baseState=dt,O.firstBaseUpdate=Pt,O.lastBaseUpdate=jt,n=O.shared.interleaved,n!==null){O=n;do $|=O.lane,O=O.next;while(O!==n)}else M===null&&(O.shared.lanes=0);Wa|=$,e.lanes=$,e.memoizedState=Yt}}function qe(e,n,a){if(e=n.effects,n.effects=null,e!==null)for(n=0;na?a:4,e(!0);var c=es.transition;es.transition={};try{e(!1),n()}finally{Ke=a,es.transition=c}}function zl(){return Pr().memoizedState}function zc(e,n,a){var c=fa(e);if(a={lane:c,action:a,hasEagerState:!1,eagerState:null,next:null},Wl(e))$l(n,a);else if(a=We(e,n,a,c),a!==null){var O=wr();So(a,e,c,O),Kl(a,n,c)}}function Wc(e,n,a){var c=fa(e),O={lane:c,action:a,hasEagerState:!1,eagerState:null,next:null};if(Wl(e))$l(n,O);else{var M=e.alternate;if(e.lanes===0&&(M===null||M.lanes===0)&&(M=n.lastRenderedReducer,M!==null))try{var $=n.lastRenderedState,X=M($,a);if(O.hasEagerState=!0,O.eagerState=X,Mr(X,$)){var dt=n.interleaved;dt===null?(O.next=O,we(n)):(O.next=dt.next,dt.next=O),n.interleaved=O;return}}catch(Pt){}finally{}a=We(e,n,O,c),a!==null&&(O=wr(),So(a,e,c,O),Kl(a,n,c))}}function Wl(e){var n=e.alternate;return e===vn||n!==null&&n===vn}function $l(e,n){Gr=ci=!0;var a=e.pending;a===null?n.next=n:(n.next=a.next,a.next=n),e.pending=n}function Kl(e,n,a){if(a&4194240){var c=n.lanes;c&=e.pendingLanes,a|=c,n.lanes=a,Kn(e,a)}}var Us={readContext:he,useCallback:qn,useContext:qn,useEffect:qn,useImperativeHandle:qn,useInsertionEffect:qn,useLayoutEffect:qn,useMemo:qn,useReducer:qn,useRef:qn,useState:qn,useDebugValue:qn,useDeferredValue:qn,useTransition:qn,useMutableSource:qn,useSyncExternalStore:qn,useId:qn,unstable_isNewReconciler:!1},$c={readContext:he,useCallback:function(n,a){return kr().memoizedState=[n,a===void 0?null:a],n},useContext:he,useEffect:jl,useImperativeHandle:function(n,a,c){return c=c!=null?c.concat([n]):null,Bs(4194308,4,Dl.bind(null,a,n),c)},useLayoutEffect:function(n,a){return Bs(4194308,4,n,a)},useInsertionEffect:function(n,a){return Bs(4,2,n,a)},useMemo:function(n,a){var c=kr();return a=a===void 0?null:a,n=n(),c.memoizedState=[n,a],n},useReducer:function(n,a,c){var O=kr();return a=c!==void 0?c(a):a,O.memoizedState=O.baseState=a,n={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:n,lastRenderedState:a},O.queue=n,n=n.dispatch=zc.bind(null,vn,n),[O.memoizedState,n]},useRef:function(n){var a=kr();return n={current:n},a.memoizedState=n},useState:Rl,useDebugValue:Bu,useDeferredValue:function(n){return kr().memoizedState=n},useTransition:function(){var n=Rl(!1),a=n[0];return n=Uc.bind(null,n[1]),kr().memoizedState=n,[a,n]},useMutableSource:function(){},useSyncExternalStore:function(n,a,c){var O=vn,M=kr();if(xn){if(c===void 0)throw Error(u(407));c=c()}else{if(c=a(),rr===null)throw Error(u(349));Go&30||Il(O,a,c)}M.memoizedState=c;var $={value:c,getSnapshot:a};return M.queue=$,jl(Pl.bind(null,O,$,n),[n]),O.flags|=2048,rs(9,Al.bind(null,O,$,c,a),void 0,null),c},useId:function(){var n=kr(),a=rr.identifierPrefix;if(xn){var c=No,O=ho;c=(O&~(1<<32-On(O)-1)).toString(32)+c,a=":"+a+"R"+c,c=Lo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof c.is=="string"?e=$.createElement(a,{is:c.is}):(e=$.createElement(a),a==="select"&&($=e,c.multiple?$.multiple=!0:c.size&&($.size=c.size))):e=$.createElementNS(e,a),e[Vr]=n,e[$o]=c,uc(e,n,!1,!1),n.stateNode=e;t:{switch($=Un(a,c),a){case"dialog":un("cancel",e),un("close",e),O=c;break;case"iframe":case"object":case"embed":un("load",e),O=c;break;case"video":case"audio":for(O=0;Omi&&(n.flags|=128,c=!0,os(M,!1),n.lanes=4194304)}else{if(!c)if(e=li($),e!==null){if(n.flags|=128,c=!0,a=e.updateQueue,a!==null&&(n.updateQueue=a,n.flags|=4),os(M,!0),M.tail===null&&M.tailMode==="hidden"&&!$.alternate&&!xn)return xr(n),null}else 2*Ye()-M.renderingStartTime>mi&&a!==1073741824&&(n.flags|=128,c=!0,os(M,!1),n.lanes=4194304);M.isBackwards?($.sibling=n.child,n.child=$):(a=M.last,a!==null?a.sibling=$:n.child=$,M.last=$)}return M.tail!==null?(n=M.tail,M.rendering=n,M.tail=n.sibling,M.renderingStartTime=Ye(),n.sibling=null,a=cn.current,rn(cn,c?a&1|2:a&1),n):(xr(n),null);case 22:case 23:return il(),c=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(n.flags|=8192),c&&n.mode&1?Yr&1073741824&&(xr(n),n.subtreeFlags&6&&(n.flags|=8192)):xr(n),null;case 24:return null;case 25:return null}throw Error(u(156,n.tag))}function Qc(e,n){switch(Ds(n),n.tag){case 1:return Ir(n.type)&&Zi(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return ro(),ln(gr),ln(nr),ts(),e=n.flags,e&65536&&!(e&128)?(n.flags=e&-65537|128,n):null;case 5:return mo(n),null;case 13:if(ln(cn),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(u(340));U()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return ln(cn),null;case 4:return ro(),null;case 10:return Ie(n.type._context),null;case 22:case 23:return il(),null;case 24:return null;default:return null}}var Ks=!1,Sr=!1,Zc=typeof WeakSet=="function"?WeakSet:Set,ye=null;function pi(e,n){var a=e.ref;if(a!==null)if(typeof a=="function")try{a(null)}catch(c){jn(e,n,c)}else a.current=null}function Xu(e,n,a){try{a()}catch(c){jn(e,n,c)}}var fc=!1;function Jc(e,n){if(Ki=$r,e=Ts(),Ni(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else t:{a=(a=e.ownerDocument)&&a.defaultView||window;var c=a.getSelection&&a.getSelection();if(c&&c.rangeCount!==0){a=c.anchorNode;var O=c.anchorOffset,M=c.focusNode;c=c.focusOffset;try{a.nodeType,M.nodeType}catch(re){a=null;break t}var $=0,X=-1,dt=-1,Pt=0,jt=0,Yt=e,kt=null;e:for(;;){for(var me;Yt!==a||O!==0&&Yt.nodeType!==3||(X=$+O),Yt!==M||c!==0&&Yt.nodeType!==3||(dt=$+c),Yt.nodeType===3&&($+=Yt.nodeValue.length),(me=Yt.firstChild)!==null;)kt=Yt,Yt=me;for(;;){if(Yt===e)break e;if(kt===a&&++Pt===O&&(X=$),kt===M&&++jt===c&&(dt=$),(me=Yt.nextSibling)!==null)break;Yt=kt,kt=Yt.parentNode}Yt=me}a=X===-1||dt===-1?null:{start:X,end:dt}}else a=null}a=a||{start:0,end:0}}else a=null;for(Vi={focusedElem:e,selectionRange:a},$r=!1,ye=n;ye!==null;)if(n=ye,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,ye=e;else for(;ye!==null;){n=ye;try{var Ee=n.alternate;if(n.flags&1024)switch(n.tag){case 0:case 11:case 15:break;case 1:if(Ee!==null){var Te=Ee.memoizedProps,Fn=Ee.memoizedState,St=n.stateNode,ht=St.getSnapshotBeforeUpdate(n.elementType===n.type?Te:go(n.type,Te),Fn);St.__reactInternalSnapshotBeforeUpdate=ht}break;case 3:var Ot=n.stateNode.containerInfo;Ot.nodeType===1?Ot.textContent="":Ot.nodeType===9&&Ot.documentElement&&Ot.removeChild(Ot.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(u(163))}}catch(re){jn(n,n.return,re)}if(e=n.sibling,e!==null){e.return=n.return,ye=e;break}ye=n.return}return Ee=fc,fc=!1,Ee}function as(e,n,a){var c=n.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var O=c=c.next;do{if((O.tag&e)===e){var M=O.destroy;O.destroy=void 0,M!==void 0&&Xu(n,a,M)}O=O.next}while(O!==c)}}function Vs(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var a=n=n.next;do{if((a.tag&e)===e){var c=a.create;a.destroy=c()}a=a.next}while(a!==n)}}function Qu(e){var n=e.ref;if(n!==null){var a=e.stateNode;switch(e.tag){case 5:e=a;break;default:e=a}typeof n=="function"?n(e):n.current=e}}function dc(e){var n=e.alternate;n!==null&&(e.alternate=null,dc(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Vr],delete n[$o],delete n[Xi],delete n[Qi],delete n[Ru])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function vc(e){return e.tag===5||e.tag===3||e.tag===4}function pc(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||vc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zu(e,n,a){var c=e.tag;if(c===5||c===6)e=e.stateNode,n?a.nodeType===8?a.parentNode.insertBefore(e,n):a.insertBefore(e,n):(a.nodeType===8?(n=a.parentNode,n.insertBefore(e,a)):(n=a,n.appendChild(e)),a=a._reactRootContainer,a!=null||n.onclick!==null||(n.onclick=ai));else if(c!==4&&(e=e.child,e!==null))for(Zu(e,n,a),e=e.sibling;e!==null;)Zu(e,n,a),e=e.sibling}function Ju(e,n,a){var c=e.tag;if(c===5||c===6)e=e.stateNode,n?a.insertBefore(e,n):a.appendChild(e);else if(c!==4&&(e=e.child,e!==null))for(Ju(e,n,a),e=e.sibling;e!==null;)Ju(e,n,a),e=e.sibling}var ur=null,yo=!1;function ua(e,n,a){for(a=a.child;a!==null;)hc(e,n,a),a=a.sibling}function hc(e,n,a){if(dn&&typeof dn.onCommitFiberUnmount=="function")try{dn.onCommitFiberUnmount(nn,a)}catch(X){}switch(a.tag){case 5:Sr||pi(a,n);case 6:var c=ur,O=yo;ur=null,ua(e,n,a),ur=c,yo=O,ur!==null&&(yo?(e=ur,a=a.stateNode,e.nodeType===8?e.parentNode.removeChild(a):e.removeChild(a)):ur.removeChild(a.stateNode));break;case 18:ur!==null&&(yo?(e=ur,a=a.stateNode,e.nodeType===8?Ra(e.parentNode,a):e.nodeType===1&&Ra(e,a),Wr(e)):Ra(ur,a.stateNode));break;case 4:c=ur,O=yo,ur=a.stateNode.containerInfo,yo=!0,ua(e,n,a),ur=c,yo=O;break;case 0:case 11:case 14:case 15:if(!Sr&&(c=a.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){O=c=c.next;do{var M=O,$=M.destroy;M=M.tag,$!==void 0&&(M&2||M&4)&&Xu(a,n,$),O=O.next}while(O!==c)}ua(e,n,a);break;case 1:if(!Sr&&(pi(a,n),c=a.stateNode,typeof c.componentWillUnmount=="function"))try{c.props=a.memoizedProps,c.state=a.memoizedState,c.componentWillUnmount()}catch(X){jn(a,n,X)}ua(e,n,a);break;case 21:ua(e,n,a);break;case 22:a.mode&1?(Sr=(c=Sr)||a.memoizedState!==null,ua(e,n,a),Sr=c):ua(e,n,a);break;default:ua(e,n,a)}}function mc(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var a=e.stateNode;a===null&&(a=e.stateNode=new Zc),n.forEach(function(c){var O=sf.bind(null,e,c);a.has(c)||(a.add(c),c.then(O,O))})}}function xo(e,n){var a=n.deletions;if(a!==null)for(var c=0;cO&&(O=$),c&=~M}if(c=O,c=Ye()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*_c(c/1960))-c,10e?16:e,ca===null)var c=!1;else{if(e=ca,ca=null,Xs=0,Je&6)throw Error(u(331));var O=Je;for(Je|=4,ye=e.current;ye!==null;){var M=ye,$=M.child;if(ye.flags&16){var X=M.deletions;if(X!==null){for(var dt=0;dtYe()-tl?Ka(e,0):_u|=a),Ur(e,n)}function Rc(e,n){n===0&&(e.mode&1?(n=hn,hn<<=1,!(hn&130023424)&&(hn=4194304)):n=1);var a=wr();e=Qt(e,n),e!==null&&(Bn(e,n,a),Ur(e,a))}function af(e){var n=e.memoizedState,a=0;n!==null&&(a=n.retryLane),Rc(e,a)}function sf(e,n){var a=0;switch(e.tag){case 13:var c=e.stateNode,O=e.memoizedState;O!==null&&(a=O.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(u(314))}c!==null&&c.delete(n),Rc(e,a)}var Mc;Mc=function(n,a,c){if(n!==null)if(n.memoizedProps!==a.pendingProps||gr.current)Br=!0;else{if(!(n.lanes&c)&&!(a.flags&128))return Br=!1,Yc(n,a,c);Br=!!(n.flags&131072)}else Br=!1,xn&&a.flags&1048576&&ui(a,La,a.index);switch(a.lanes=0,a.tag){case 2:var O=a.type;$s(n,a),n=a.pendingProps;var M=Ho(a,nr.current);fe(a,c),M=fi(null,a,O,n,M,c);var $=di();return a.flags|=1,typeof M=="object"&&M!==null&&typeof M.render=="function"&&M.$$typeof===void 0?(a.tag=1,a.memoizedState=null,a.updateQueue=null,Ir(O)?($=!0,Ji(a)):$=!1,a.memoizedState=M.state!==null&&M.state!==void 0?M.state:null,Re(a),M.updater=zs,a.stateNode=M,M._reactInternals=a,Uu(a,O,n,c),a=Ku(null,a,O,!0,$,c)):(a.tag=0,xn&&$&&Ns(a),Cr(null,a,M,c),a=a.child),a;case 16:O=a.elementType;t:{switch($s(n,a),n=a.pendingProps,M=O._init,O=M(O._payload),a.type=O,M=a.tag=lf(O),n=go(O,n),M){case 0:a=$u(null,a,O,n,c);break t;case 1:a=nc(null,a,O,n,c);break t;case 11:a=Jl(null,a,O,n,c);break t;case 14:a=ql(null,a,O,go(O.type,n),c);break t}throw Error(u(306,O,""))}return a;case 0:return O=a.type,M=a.pendingProps,M=a.elementType===O?M:go(O,M),$u(n,a,O,M,c);case 1:return O=a.type,M=a.pendingProps,M=a.elementType===O?M:go(O,M),nc(n,a,O,M,c);case 3:t:{if(rc(a),n===null)throw Error(u(387));O=a.pendingProps,$=a.memoizedState,M=$.element,Xe(n,a),Dr(a,O,null,c);var X=a.memoizedState;if(O=X.element,$.isDehydrated)if($={element:O,isDehydrated:!1,cache:X.cache,pendingSuspenseBoundaries:X.pendingSuspenseBoundaries,transitions:X.transitions},a.updateQueue.baseState=$,a.memoizedState=$,a.flags&256){M=vi(Error(u(423)),a),a=oc(n,a,O,c,M);break t}else if(O!==M){M=vi(Error(u(424)),a),a=oc(n,a,O,c,M);break t}else for(Nr=Kr(a.stateNode.containerInfo.firstChild),br=a,xn=!0,Ar=null,c=It(a,null,O,c),a.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{if(U(),O===M){a=ko(n,a,c);break t}Cr(n,a,O,c)}a=a.child}return a;case 5:return Ba(a),n===null&&g(a),O=a.type,M=a.pendingProps,$=n!==null?n.memoizedProps:null,X=M.children,wa(O,M)?X=null:$!==null&&wa(O,$)&&(a.flags|=32),ec(n,a),Cr(n,a,X,c),a.child;case 6:return n===null&&g(a),null;case 13:return ac(n,a,c);case 4:return no(a,a.stateNode.containerInfo),O=a.pendingProps,n===null?a.child=Mt(a,null,O,c):Cr(n,a,O,c),a.child;case 11:return O=a.type,M=a.pendingProps,M=a.elementType===O?M:go(O,M),Jl(n,a,O,M,c);case 7:return Cr(n,a,a.pendingProps,c),a.child;case 8:return Cr(n,a,a.pendingProps.children,c),a.child;case 12:return Cr(n,a,a.pendingProps.children,c),a.child;case 10:t:{if(O=a.type._context,M=a.pendingProps,$=a.memoizedProps,X=M.value,rn(zt,O._currentValue),O._currentValue=X,$!==null)if(Mr($.value,X)){if($.children===M.children&&!gr.current){a=ko(n,a,c);break t}}else for($=a.child,$!==null&&($.return=a);$!==null;){var dt=$.dependencies;if(dt!==null){X=$.child;for(var Pt=dt.firstContext;Pt!==null;){if(Pt.context===O){if($.tag===1){Pt=en(-1,c&-c),Pt.tag=2;var jt=$.updateQueue;if(jt!==null){jt=jt.shared;var Yt=jt.pending;Yt===null?Pt.next=Pt:(Pt.next=Yt.next,Yt.next=Pt),jt.pending=Pt}}$.lanes|=c,Pt=$.alternate,Pt!==null&&(Pt.lanes|=c),$t($.return,c,a),dt.lanes|=c;break}Pt=Pt.next}}else if($.tag===10)X=$.type===a.type?null:$.child;else if($.tag===18){if(X=$.return,X===null)throw Error(u(341));X.lanes|=c,dt=X.alternate,dt!==null&&(dt.lanes|=c),$t(X,c,a),X=$.sibling}else X=$.child;if(X!==null)X.return=$;else for(X=$;X!==null;){if(X===a){X=null;break}if($=X.sibling,$!==null){$.return=X.return,X=$;break}X=X.return}$=X}Cr(n,a,M.children,c),a=a.child}return a;case 9:return M=a.type,O=a.pendingProps.children,fe(a,c),M=he(M),O=O(M),a.flags|=1,Cr(n,a,O,c),a.child;case 14:return O=a.type,M=go(O,a.pendingProps),M=go(O.type,M),ql(n,a,O,M,c);case 15:return _l(n,a,a.type,a.pendingProps,c);case 17:return O=a.type,M=a.pendingProps,M=a.elementType===O?M:go(O,M),$s(n,a),a.tag=1,Ir(O)?(n=!0,Ji(a)):n=!1,fe(a,c),Hl(a,O,M),Uu(a,O,M,c),Ku(null,a,O,!0,n,c);case 19:return sc(n,a,c);case 22:return tc(n,a,c)}throw Error(u(156,a.tag))};function jc(e,n){return Qe(e,n)}function uf(e,n,a,c){this.tag=e,this.key=a,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ao(e,n,a,c){return new uf(e,n,a,c)}function ul(e){return e=e.prototype,!(!e||!e.isReactComponent)}function lf(e){if(typeof e=="function")return ul(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Q)return 11;if(e===ut)return 14}return 2}function va(e,n){var a=e.alternate;return a===null?(a=ao(e.tag,n,e.key,e.mode),a.elementType=e.elementType,a.type=e.type,a.stateNode=e.stateNode,a.alternate=e,e.alternate=a):(a.pendingProps=n,a.type=e.type,a.flags=0,a.subtreeFlags=0,a.deletions=null),a.flags=e.flags&14680064,a.childLanes=e.childLanes,a.lanes=e.lanes,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,n=e.dependencies,a.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},a.sibling=e.sibling,a.index=e.index,a.ref=e.ref,a}function qs(e,n,a,c,O,M){var $=2;if(c=e,typeof e=="function")ul(e)&&($=1);else if(typeof e=="string")$=5;else t:switch(e){case K:return Ha(a.children,O,M,n);case k:$=8,O|=8;break;case J:return e=ao(12,a,n,O|2),e.elementType=J,e.lanes=M,e;case ct:return e=ao(13,a,n,O),e.elementType=ct,e.lanes=M,e;case ot:return e=ao(19,a,n,O),e.elementType=ot,e.lanes=M,e;case V:return _s(a,O,M,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case G:$=10;break t;case _:$=9;break t;case Q:$=11;break t;case ut:$=14;break t;case W:$=16,c=null;break t}throw Error(u(130,e==null?e:typeof e=="undefined"?"undefined":o(e),""))}return n=ao($,a,n,O),n.elementType=e,n.type=c,n.lanes=M,n}function Ha(e,n,a,c){return e=ao(7,e,c,n),e.lanes=a,e}function _s(e,n,a,c){return e=ao(22,e,c,n),e.elementType=V,e.lanes=a,e.stateNode={isHidden:!1},e}function ll(e,n,a){return e=ao(6,e,null,n),e.lanes=a,e}function cl(e,n,a){return n=ao(4,e.children!==null?e.children:[],e.key,n),n.lanes=a,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function cf(e,n,a,c,O){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Oo(0),this.expirationTimes=Oo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Oo(0),this.identifierPrefix=c,this.onRecoverableError=O,this.mutableSourceEagerHydrationData=null}function fl(e,n,a,c,O,M,$,X,dt){return e=new cf(e,n,a,X,dt),n===1?(n=1,M===!0&&(n|=8)):n=0,M=ao(3,null,null,n),e.current=M,M.stateNode=e,M.memoizedState={element:c,isDehydrated:a,cache:null,transitions:null,pendingSuspenseBoundaries:null},Re(M),e}function ff(e,n,a){var c=3Et.length)&&(wt=Et.length);for(var Ht=0,ue=new Array(wt);Ht1?Ht-1:0),Se=1;Se/gm),Ct=R(/\${[\w\W]*}/gm),Nt=R(/^data-[\-\w.\u00B7-\uFFFF]/),Wt=R(/^aria-[\-\w]+$/),Ut=R(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ae=R(/^(?:\w+script|data):/i),ie=R(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),te=R(/^html$/i),Ft=R(/^[a-z][.\w]*(-[.\w]+)+$/i),Bt=function(){return typeof window=="undefined"?null:window},At=function(wt,Ht){if(t(wt)!=="object"||typeof wt.createPolicy!="function")return null;var ue=null,Se="data-tt-policy-suffix";Ht.currentScript&&Ht.currentScript.hasAttribute(Se)&&(ue=Ht.currentScript.getAttribute(Se));var xe="dompurify"+(ue?"#"+ue:"");try{return wt.createPolicy(xe,{createHTML:function(Kt){return Kt},createScriptURL:function(Kt){return Kt}})}catch(le){return console.warn("TrustedTypes policy "+xe+" could not be created."),null}};function Xt(){var Et=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Bt(),wt=function(lt){return Xt(lt)};if(wt.version="2.5.3",wt.removed=[],!Et||!Et.document||Et.document.nodeType!==9)return wt.isSupported=!1,wt;var Ht=Et.document,ue=Et.document,Se=Et.DocumentFragment,xe=Et.HTMLTemplateElement,le=Et.Node,Kt=Et.Element,Gt=Et.NodeFilter,Me=Et.NamedNodeMap,Ze=Me===void 0?Et.NamedNodeMap||Et.MozNamedAttrMap:Me,tr=Et.HTMLFormElement,fn=Et.DOMParser,Un=Et.trustedTypes,Pn=Kt.prototype,cr=tt(Pn,"cloneNode"),rt=tt(Pn,"nextSibling"),xt=tt(Pn,"childNodes"),st=tt(Pn,"parentNode");if(typeof xe=="function"){var yt=ue.createElement("template");yt.content&&yt.content.ownerDocument&&(ue=yt.content.ownerDocument)}var Tt=At(Un,Ht),Lt=Tt?Tt.createHTML(""):"",oe=ue,ne=oe.implementation,Oe=oe.createNodeIterator,qt=oe.createDocumentFragment,Fe=oe.getElementsByTagName,$e=Ht.importNode,ze={};try{ze=V(ue).documentMode?ue.documentMode:{}}catch(ge){}var je={};wt.isSupported=typeof st=="function"&&ne&&ne.createHTMLDocument!==void 0&&ze!==9;var Ve=de,Ge=Jt,Le=Ct,Cn=Nt,pn=Wt,bn=ae,fr=ie,Pe=Ft,zn=Ut,tn=null,dr=W({},[].concat(s(H),s(Z),s(ft),s(vt),s(bt))),ke=null,Nn=W({},[].concat(s(gt),s(pt),s(Dt),s(ve))),Qe=Object.seal(Object.create(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}})),In=null,vr=null,Wn=!0,Ye=!0,ar=!1,En=!0,$n=!1,ir=!0,wn=!1,Yn=!1,nn=!1,dn=!1,Rr=!1,On=!1,Dn=!0,Er=!1,Xr="user-content-",er=!0,hn=!1,pr={},Ln=null,Xo=W({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),io=null,hr=W({},["audio","video","img","source","image","track"]),Eo=null,Oo=W({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Bn="http://www.w3.org/1998/Math/MathML",To="http://www.w3.org/2000/svg",Kn="http://www.w3.org/1999/xhtml",Ke=Kn,Io=!1,zr=null,Qo=W({},[Bn,To,Kn],z),Qr,Ga=["application/xhtml+xml","text/html"],ka="text/html",mn,Or=null,mr=255,Zr=ue.createElement("form"),Tr=function(lt){return h(lt,RegExp)||h(lt,Function)},Jr=function(lt){Or&&Or===lt||((!lt||t(lt)!=="object")&&(lt={}),lt=V(lt),Qr=Ga.indexOf(lt.PARSER_MEDIA_TYPE)===-1?Qr=ka:Qr=lt.PARSER_MEDIA_TYPE,mn=Qr==="application/xhtml+xml"?z:D,tn="ALLOWED_TAGS"in lt?W({},lt.ALLOWED_TAGS,mn):dr,ke="ALLOWED_ATTR"in lt?W({},lt.ALLOWED_ATTR,mn):Nn,zr="ALLOWED_NAMESPACES"in lt?W({},lt.ALLOWED_NAMESPACES,z):Qo,Eo="ADD_URI_SAFE_ATTR"in lt?W(V(Oo),lt.ADD_URI_SAFE_ATTR,mn):Oo,io="ADD_DATA_URI_TAGS"in lt?W(V(hr),lt.ADD_DATA_URI_TAGS,mn):hr,Ln="FORBID_CONTENTS"in lt?W({},lt.FORBID_CONTENTS,mn):Xo,In="FORBID_TAGS"in lt?W({},lt.FORBID_TAGS,mn):{},vr="FORBID_ATTR"in lt?W({},lt.FORBID_ATTR,mn):{},pr="USE_PROFILES"in lt?lt.USE_PROFILES:!1,Wn=lt.ALLOW_ARIA_ATTR!==!1,Ye=lt.ALLOW_DATA_ATTR!==!1,ar=lt.ALLOW_UNKNOWN_PROTOCOLS||!1,En=lt.ALLOW_SELF_CLOSE_IN_ATTR!==!1,$n=lt.SAFE_FOR_TEMPLATES||!1,ir=lt.SAFE_FOR_XML!==!1,wn=lt.WHOLE_DOCUMENT||!1,dn=lt.RETURN_DOM||!1,Rr=lt.RETURN_DOM_FRAGMENT||!1,On=lt.RETURN_TRUSTED_TYPE||!1,nn=lt.FORCE_BODY||!1,Dn=lt.SANITIZE_DOM!==!1,Er=lt.SANITIZE_NAMED_PROPS||!1,er=lt.KEEP_CONTENT!==!1,hn=lt.IN_PLACE||!1,zn=lt.ALLOWED_URI_REGEXP||zn,Ke=lt.NAMESPACE||Kn,Qe=lt.CUSTOM_ELEMENT_HANDLING||{},lt.CUSTOM_ELEMENT_HANDLING&&Tr(lt.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Qe.tagNameCheck=lt.CUSTOM_ELEMENT_HANDLING.tagNameCheck),lt.CUSTOM_ELEMENT_HANDLING&&Tr(lt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Qe.attributeNameCheck=lt.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),lt.CUSTOM_ELEMENT_HANDLING&&typeof lt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Qe.allowCustomizedBuiltInElements=lt.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),$n&&(Ye=!1),Rr&&(dn=!0),pr&&(tn=W({},s(bt)),ke=[],pr.html===!0&&(W(tn,H),W(ke,gt)),pr.svg===!0&&(W(tn,Z),W(ke,pt),W(ke,ve)),pr.svgFilters===!0&&(W(tn,ft),W(ke,pt),W(ke,ve)),pr.mathMl===!0&&(W(tn,vt),W(ke,Dt),W(ke,ve))),lt.ADD_TAGS&&(tn===dr&&(tn=V(tn)),W(tn,lt.ADD_TAGS,mn)),lt.ADD_ATTR&&(ke===Nn&&(ke=V(ke)),W(ke,lt.ADD_ATTR,mn)),lt.ADD_URI_SAFE_ATTR&&W(Eo,lt.ADD_URI_SAFE_ATTR,mn),lt.FORBID_CONTENTS&&(Ln===Xo&&(Ln=V(Ln)),W(Ln,lt.FORBID_CONTENTS,mn)),er&&(tn["#text"]=!0),wn&&W(tn,["html","head","body"]),tn.table&&(W(tn,["tbody"]),delete In.tbody),A&&A(lt),Or=lt)},Ao=W({},["mi","mo","mn","ms","mtext"]),Xn=W({},["foreignobject","annotation-xml"]),Ya=W({},["title","style","font","a","script"]),Po=W({},Z);W(Po,ft),W(Po,nt);var sr=W({},vt);W(sr,mt);var Fo=function(lt){var Vt=st(lt);(!Vt||!Vt.tagName)&&(Vt={namespaceURI:Ke,tagName:"template"});var se=D(lt.tagName),be=D(Vt.tagName);return zr[lt.namespaceURI]?lt.namespaceURI===To?Vt.namespaceURI===Kn?se==="svg":Vt.namespaceURI===Bn?se==="svg"&&(be==="annotation-xml"||Ao[be]):!!Po[se]:lt.namespaceURI===Bn?Vt.namespaceURI===Kn?se==="math":Vt.namespaceURI===To?se==="math"&&Xn[be]:!!sr[se]:lt.namespaceURI===Kn?Vt.namespaceURI===To&&!Xn[be]||Vt.namespaceURI===Bn&&!Ao[be]?!1:!sr[se]&&(Ya[se]||!Po[se]):!!(Qr==="application/xhtml+xml"&&zr[lt.namespaceURI]):!1},Vn=function(lt){L(wt.removed,{element:lt});try{lt.parentNode.removeChild(lt)}catch(Vt){try{lt.outerHTML=Lt}catch(se){lt.remove()}}},Tn=function(lt,Vt){try{L(wt.removed,{attribute:Vt.getAttributeNode(lt),from:Vt})}catch(se){L(wt.removed,{attribute:null,from:Vt})}if(Vt.removeAttribute(lt),lt==="is"&&!ke[lt])if(dn||Rr)try{Vn(Vt)}catch(se){}else try{Vt.setAttribute(lt,"")}catch(se){}},ha=function(lt){var Vt,se;if(nn)lt=""+lt;else{var be=K(lt,/^[\r\n\t ]+/);se=be&&be[0]}Qr==="application/xhtml+xml"&&Ke===Kn&&(lt=''+lt+"");var gn=Tt?Tt.createHTML(lt):lt;if(Ke===Kn)try{Vt=new fn().parseFromString(gn,Qr)}catch(an){}if(!Vt||!Vt.documentElement){Vt=ne.createDocument(Ke,"template",null);try{Vt.documentElement.innerHTML=Io?Lt:gn}catch(an){}}var An=Vt.body||Vt.documentElement;return lt&&se&&An.insertBefore(ue.createTextNode(se),An.childNodes[0]||null),Ke===Kn?Fe.call(Vt,wn?"html":"body")[0]:wn?Vt.documentElement:An},Xa=function(lt){return Oe.call(lt.ownerDocument||lt,lt,Gt.SHOW_ELEMENT|Gt.SHOW_COMMENT|Gt.SHOW_TEXT|Gt.SHOW_PROCESSING_INSTRUCTION|Gt.SHOW_CDATA_SECTION,null,!1)},Co=function(lt){return h(lt,tr)&&(typeof lt.__depth!="undefined"&&typeof lt.__depth!="number"||typeof lt.__removalCount!="undefined"&&typeof lt.__removalCount!="number"||typeof lt.nodeName!="string"||typeof lt.textContent!="string"||typeof lt.removeChild!="function"||!h(lt.attributes,Ze)||typeof lt.removeAttribute!="function"||typeof lt.setAttribute!="function"||typeof lt.namespaceURI!="string"||typeof lt.insertBefore!="function"||typeof lt.hasChildNodes!="function")},Wr=function(lt){return t(le)==="object"?h(lt,le):lt&&t(lt)==="object"&&typeof lt.nodeType=="number"&&typeof lt.nodeName=="string"},Qn=function(lt,Vt,se){je[lt]&&C(je[lt],function(be){be.call(wt,Vt,se,Or)})},$r=function(lt){var Vt;if(Qn("beforeSanitizeElements",lt,null),Co(lt)||_(/[\u0080-\uFFFF]/,lt.nodeName))return Vn(lt),!0;var se=mn(lt.nodeName);if(Qn("uponSanitizeElement",lt,{tagName:se,allowedTags:tn}),lt.hasChildNodes()&&!Wr(lt.firstElementChild)&&(!Wr(lt.content)||!Wr(lt.content.firstElementChild))&&_(/<[/\w]/g,lt.innerHTML)&&_(/<[/\w]/g,lt.textContent)||se==="select"&&_(/