// ==UserScript== // @name Shadowban Scanner (中文(中国)) // @namespace https://github.com/Robot-Inventor/shadowban-scanner/ // @version 4.0.1 // @description 这是一个用于检查 Twitter/X 的 Shadowban 的浏览器扩展。 // @author Robot-Inventor (ろぼいん / @keita_roboin) // @match https://*.twitter.com/* // @match https://*.x.com/* // @icon https://raw.githubusercontent.com/Robot-Inventor/shadowban-scanner/main/src/image/icon128.png // @downloadURL https://raw.githubusercontent.com/Robot-Inventor/shadowban-scanner/main/userScript/zh_CN.user.js // @updateURL https://raw.githubusercontent.com/Robot-Inventor/shadowban-scanner/main/userScript/zh_CN.user.js // @grant none // ==/UserScript== /*! For license information please see zh_CN.user.js.LICENSE.txt */ (()=>{var e={435:function(e,t,r){"use strict";r.d(t,{Z:()=>a});var n=r(81),s=r.n(n),i=r(645),o=r.n(i)()(s());o.push([e.id,`body[data-color-scheme="light"] { --sb-background-green: #a4dda8; --sb-background-red: #f6afaf; } body[data-color-scheme="dark"] { --sb-background-green: #14351d; --sb-background-red: #481e1e; } body[data-color-accessibility-mode][data-color-scheme="light"] { --sb-background-green: #c3d2ee; --sb-background-red: #f4b892; } body[data-color-accessibility-mode][data-color-scheme="dark"] { --sb-background-green: #22487d; --sb-background-red: #772929; } .shadowban-scanner-tombstone-necromancer { display: inline-block; margin: 0 2rem; text-decoration: none; } .shadowban-scanner-tombstone-necromancer:hover { text-decoration: underline; } sbs-message { --message-background-color-red: var(--sb-background-red); --message-background-color-green: var(--sb-background-green); margin-top: 1em; } [data-sb-compact-mode] { /* * \`!important\` is required to work with Kiwi Browser. * In Kiwi Browser and, likely, in Chrome's mobile layout, it is necessary to override the borders set by X on posts. */ border-left: solid 0.3rem !important; } [data-sb-compact-mode="green"] { /* * \`!important\` is required to work with Kiwi Browser. * In Kiwi Browser and, likely, in Chrome's mobile layout, it is necessary to override the borders set by X on posts. */ border-left-color: var(--sb-background-green) !important; } [data-sb-compact-mode="red"] { /* * \`!important\` is required to work with Kiwi Browser. * In Kiwi Browser and, likely, in Chrome's mobile layout, it is necessary to override the borders set by X on posts. */ border-left-color: var(--sb-background-red) !important; } [data-sb-translation] { display: inline-block; min-width: 15em; min-height: 1em; border-radius: 0.25em; background-image: linear-gradient(90deg, transparent 40%, rgb(175 175 175 / 0.7) 80%, transparent 100%); background-size: 200% 100%; animation: loading-animation 1.5s linear infinite; } @keyframes loading-animation { 0% { background-position: 200% 0%; opacity: 1; } 100% { background-position: 0% 0%; opacity: 1; } } `,""]);let a=o},645:function(e){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r="",n=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),n&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),n&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r}).join("")},t.i=function(e,r,n,s,i){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(n)for(var a=0;a0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=i),r&&(d[2]&&(d[1]="@media ".concat(d[2]," {").concat(d[1],"}")),d[2]=r),s&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=s):d[4]="".concat(s)),t.push(d))}},t}},81:function(e){"use strict";e.exports=function(e){return e[1]}},379:function(e){"use strict";var t=[];function r(e){for(var r=-1,n=0;n0?" ".concat(r.layer):""," {")),n+=r.css,s&&(n+="}"),r.media&&(n+="}"),r.supports&&(n+="}"),(i=r.sourceMap)&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleTagTransform(n,t,e.options)},remove:function(){!function(e){if(null!==e.parentNode)e.parentNode.removeChild(e)}(t)}}}},589:function(e){"use strict";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},150:function(e,t,r){var n;e=r.nmd(e),"undefined"!=typeof globalThis||"undefined"!=typeof self&&self,n=function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw Error("This script should only be loaded in a browser extension.");globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id?e.exports=globalThis.browser:e.exports=(e=>{let t={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(t).length)throw Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e,t){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}let n=(t,r)=>(...n)=>{e.runtime.lastError?t.reject(Error(e.runtime.lastError.message)):r.singleCallbackArg||n.length<=1&&!1!==r.singleCallbackArg?t.resolve(n[0]):t.resolve(n)},s=e=>1==e?"argument":"arguments",i=(e,t,r)=>new Proxy(t,{apply:(t,n,s)=>r.call(n,e,...s)}),o=Function.call.bind(Object.prototype.hasOwnProperty),a=(e,t={},r={})=>{let l=Object.create(null);return new Proxy(Object.create(e),{has:(t,r)=>r in e||r in l,get(c,d,u){if(d in l)return l[d];if(!(d in e))return;let h=e[d];if("function"==typeof h)if("function"==typeof t[d])h=i(e,e[d],t[d]);else if(o(r,d)){let t,o=(t=r[d],function(e,...r){if(r.lengtht.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${s(t.maxArgs)} for ${d}(), got ${r.length}`);return new Promise((s,i)=>{if(t.fallbackToNoCallback)try{e[d](...r,n({resolve:s,reject:i},t))}catch(n){console.warn(`${d} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,n),e[d](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,s()}else t.noCallback?(e[d](...r),s()):e[d](...r,n({resolve:s,reject:i},t))})});h=i(e,e[d],o)}else h=h.bind(e);else if("object"==typeof h&&null!==h&&(o(t,d)||o(r,d)))h=a(h,t[d],r[d]);else{if(!o(r,"*"))return Object.defineProperty(l,d,{configurable:!0,enumerable:!0,get:()=>e[d],set(t){e[d]=t}}),h;h=a(h,t[d],r["*"])}return l[d]=h,h},set:(t,r,n,s)=>(r in l?l[r]=n:e[r]=n,!0),defineProperty:(e,t,r)=>Reflect.defineProperty(l,t,r),deleteProperty:(e,t)=>Reflect.deleteProperty(l,t)})},l=e=>({addListener(t,r,...n){t.addListener(e.get(r),...n)},hasListener:(t,r)=>t.hasListener(e.get(r)),removeListener(t,r){t.removeListener(e.get(r))}}),c=new r(e=>"function"!=typeof e?e:function(t){e(a(t,{},{getContent:{minArgs:0,maxArgs:0}}))}),d=new r(e=>"function"!=typeof e?e:function(t,r,n){let s,i,o,a=!1,l=new Promise(e=>{i=function(t){a=!0,e(t)}});try{o=e(t,r,i)}catch(e){o=Promise.reject(e)}let c=!0!==o&&(s=o)&&"object"==typeof s&&"function"==typeof s.then;if(!0!==o&&!c&&!a)return!1;return(c?o:l).then(e=>{n(e)},e=>{n({__mozWebExtensionPolyfillReject__:!0,message:e&&(e instanceof Error||"string"==typeof e.message)?e.message:"An unexpected error occurred"})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)}),!0}),u=({reject:t,resolve:r},n)=>{e.runtime.lastError?"The message port closed before a response was received."===e.runtime.lastError.message?r():t(Error(e.runtime.lastError.message)):n&&n.__mozWebExtensionPolyfillReject__?t(Error(n.message)):r(n)},h=(e,t,r,...n)=>{if(n.lengtht.maxArgs)throw Error(`Expected at most ${t.maxArgs} ${s(t.maxArgs)} for ${e}(), got ${n.length}`);return new Promise((e,t)=>{let s=u.bind(null,{resolve:e,reject:t});n.push(s),r.sendMessage(...n)})},p={devtools:{network:{onRequestFinished:l(c)}},runtime:{onMessage:l(d),onMessageExternal:l(d),sendMessage:h.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:h.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},m={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":m},services:{"*":m},websites:{"*":m}},a(e,p,t)})(chrome)},"function"==typeof define&&define.amd?define("webextension-polyfill",["module"],n):n(e)}},t={};function r(n){var s=t[n];if(void 0!==s)return s.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.nc=void 0,r.rv=()=>"1.4.4",r.ruid="bundler=rspack@1.4.4",(()=>{"use strict";let e,t;var n,s=r(379),i=r.n(s),o=r(795),a=r.n(o),l=r(569),c=r.n(l),d=r(565),u=r.n(d),h=r(216),p=r.n(h),m=r(589),g=r.n(m),f=r(435),b={};b.styleTagTransform=g(),b.setAttributes=u(),b.insert=c().bind(null,"head"),b.domAPI=a(),b.insertStyleElement=p(),i()(f.Z,b),f.Z&&f.Z.locals&&f.Z.locals;var v="data-shadowban-checked",y="data-sb-translation",w="data-sb-shadow-translation",A=["✅","\uD83D\uDEAB","⚠️"];let x=["pro.twitter.com","pro.x.com"],_=(e,t)=>new Promise(r=>{let n=e();if(n instanceof Element||n instanceof NodeList&&n.length)return void r(n);let s=null,i=new MutationObserver(()=>{let t=e();(t instanceof Element||t instanceof NodeList&&t.length)&&(i.disconnect(),s&&clearTimeout(s),r(t))});s=setTimeout(()=>{i.disconnect(),r(null)},t),i.observe(document.body,{attributes:!0,childList:!0,subtree:!0})}),S=async(e,t=document,r=500)=>await _(()=>t.querySelector(e),r),C=async(e,t=document,r=500)=>await _(()=>t.querySelectorAll(e),r)??document.createDocumentFragment().childNodes,E=e=>Array.isArray(e)&&e.length>0,$=()=>{switch(document.body.style.backgroundColor){case"rgb(255, 255, 255)":return"light";case"rgb(21, 32, 43)":return"darkblue";case"rgb(0, 0, 0)":return"black";default:return"unknown"}},k=e=>"TEXTAREA"===e.tagName?e:e.parentElement,T=async(e,t)=>{let r=x.includes(location.hostname),n=[...await C(r?"[role='dialog'] [data-text='true'], [role='dialog'] textarea[data-testid='tweetTextarea_0']":"[role='dialog'] [data-text='true'], textarea[data-testid='tweetTextarea_0']",document,t)];if(!E(n))throw Error("[twi-ext] Failed to get text box marker of tweet");for(let e=0;e{open(`https://x.com/intent/tweet?text=${encodeURIComponent(e)}`,"_blank")},O=async(e,t=1e3,r=!1)=>{if(r)return void P(e);let n=new KeyboardEvent("keypress",{bubbles:!0,keyCode:78,which:78});document.dispatchEvent(n);try{await T(e,t)}catch{P(e)}},I=(()=>{let e=e=>"object"==typeof e.retweetWithCommentLink&&null!==e.retweetWithCommentLink&&t(e.retweetWithCommentLink),t=e=>"object"==typeof e.state&&null!==e.state&&r(e.state),r=e=>"object"==typeof e.quotedStatus&&null!==e.quotedStatus&&n(e.quotedStatus),n=e=>(null===e.possibly_sensitive||void 0===e.possibly_sensitive||"boolean"==typeof e.possibly_sensitive)&&(null===e.possibly_sensitive_editable||void 0===e.possibly_sensitive_editable||"boolean"==typeof e.possibly_sensitive_editable)&&"string"==typeof e.permalink&&"object"==typeof e.user&&null!==e.user&&s(e.user),s=e=>(null===e.possibly_sensitive||void 0===e.possibly_sensitive||"boolean"==typeof e.possibly_sensitive)&&"string"==typeof e.screen_name&&(""===e.profile_interstitial_type||"sensitive_media"===e.profile_interstitial_type||"fake_account"===e.profile_interstitial_type||"offensive_profile_content"===e.profile_interstitial_type||"timeout"===e.profile_interstitial_type)&&Array.isArray(e.withheld_in_countries)&&e.withheld_in_countries.every(e=>"string"==typeof e);return t=>"object"==typeof t&&null!==t&&(t=>Array.isArray(t.children)&&"object"==typeof t.children[1]&&null!==t.children[1]&&(t=>"object"==typeof t.props&&null!==t.props&&e(t.props))(t.children[1])&&Array.isArray(t.children.slice(2)))(t)})(),N=(()=>{let e=e=>"boolean"==typeof e.isFocalTweet;return t=>"object"==typeof t&&null!==t&&(t=>"object"==typeof t.children&&null!==t.children&&(t=>"object"==typeof t.props&&null!==t.props&&e(t.props))(t.children))(t)})(),j=(()=>{let e=e=>Array.isArray(e.children)&&2===e.children.length&&"object"==typeof e.children[1]&&null!==e.children[1]&&t(e.children[1]),t=e=>"object"==typeof e.props&&null!==e.props&&r(e.props),r=e=>"object"==typeof e.user&&null!==e.user&&n(e.user),n=e=>(null===e.possibly_sensitive||void 0===e.possibly_sensitive||"boolean"==typeof e.possibly_sensitive)&&"string"==typeof e.screen_name&&(""===e.profile_interstitial_type||"sensitive_media"===e.profile_interstitial_type||"fake_account"===e.profile_interstitial_type||"offensive_profile_content"===e.profile_interstitial_type||"timeout"===e.profile_interstitial_type)&&Array.isArray(e.withheld_in_countries)&&e.withheld_in_countries.every(e=>"string"==typeof e);return t=>"object"==typeof t&&null!==t&&(t=>Array.isArray(t.children)&&2===t.children.length&&"object"==typeof t.children[0]&&null!==t.children[0]&&(t=>"object"==typeof t.props&&null!==t.props&&e(t.props))(t.children[0])&&!0)(t)})(),M=e=>{let t=Object.getOwnPropertyNames(e).filter(e=>e.startsWith("__reactProps$"));return E(t)?e[t[0]]:null};class R{profileElement;constructor(e){this.profileElement=e}get props(){let e=M(this.profileElement);if(!j(e))throw Error("Failed to get React props of profile");return e.children[0].props.children[1].props.user}}class B{tweetElement;constructor(e){this.tweetElement=e}getMenuBar(){let e=this.tweetElement.querySelector("div[role='group'][id]");if(!e)throw Error("[twi-ext] Failed to get menu bar of tweet");return e}get element(){return this.tweetElement}get props(){let e=M(this.getMenuBar());if(!I(e))throw Error("[twi-ext] Failed to get React props of tweet");return e.children[1].props.retweetWithCommentLink.state.quotedStatus}get metadata(){let e=this.props.user.screen_name,t=this.getMenuBar().parentElement?.parentElement;if(!t)throw Error("[twi-ext] Failed to get grandparent of menu bar of tweet");let r=M(t);if(!N(r))throw Error("[twi-ext] Failed to determine whether it is in focal mode. There may have been a change in X's specifications.");let n=(()=>{let e=[...document.querySelectorAll("body > script:not([src])")].find(e=>e.textContent?.trim().startsWith("window.__INITIAL_STATE__"));if(!e)throw Error("[twi-ext] Failed to find initial state.");let t=e.textContent?.trim().replace(/^window\.__INITIAL_STATE__=/u,"").split(";window.__META_DATA__")[0];if(!t)throw Error("[twi-ext] Failed to extract initial state.");let r=(()=>{let e=e=>"object"==typeof e.settings&&null!==e.settings&&t(e.settings),t=e=>"string"==typeof e.screen_name;return t=>{var r,n;let s;return"object"==typeof(r=t=JSON.parse(t))&&null!==r&&"object"==typeof(n=r).settings&&null!==n.settings&&"object"==typeof(s=n.settings).remote&&null!==s.remote&&e(s.remote)?t:null}})()(t);if(!r)throw Error("[twi-ext] Failed to parse initial state.");return r})().settings.remote.settings.screen_name;return{isFocalMode:r.children.props.isFocalTweet,isPostedByCurrentUser:e===n}}async clickRetweetButton(e){let t=await S("[data-testid='unretweet'], [data-testid='retweet']",this.tweetElement,e);if(!t)throw Error("[twi-ext] Failed to get retweet button of tweet");t.click()}static async clickQuoteButton(e){let t=await S("[data-testid='Dropdown'] [href='/compose/post'],[data-testid='sheetDialog'] [href='/compose/post']",document,e);if(!t)throw Error("[twi-ext] Failed to get quote button of tweet");t.click()}async quoteTweet(e,t=1e3,r=!1){let n=this.props.permalink,s=`${e} https://x.com${n}`;if(r)return void P(s);try{await this.clickRetweetButton(t),await B.clickQuoteButton(t),await T(e,t)}catch{P(s)}}}class F{OBSERVER_OPTIONS={childList:!0,subtree:!0};onNewTweetCallback=null;onNewProfileCallback=null;constructor(e){let t=`data-twi-ext-checked-${crypto.randomUUID()}`,r={timeoutMs:1e4,...e},n=new MutationObserver(()=>{if(this.onNewTweetCallback)for(let e of document.querySelectorAll(`[data-testid="tweet"]:not([${t}])`))e.setAttribute(t,""),this.onNewTweetCallback(new B(e));if(this.onNewProfileCallback){let e=document.querySelector(`:not([data-testid="tweet"]) [data-testid="UserName"]:not([${t}])`);e&&(e.setAttribute(t,""),this.onNewProfileCallback(new R(e)))}});S("main",document,r.timeoutMs).then(e=>{if(!e)throw Error("[twi-ext] Failed to get main element");n.observe(e,this.OBSERVER_OPTIONS)}),S("#layers",document,r.timeoutMs).then(e=>{if(!e)throw Error("[twi-ext] Failed to get #layers element");n.observe(e,this.OBSERVER_OPTIONS)})}onNewTweet(e){this.onNewTweetCallback=e}onNewProfile(e){this.onNewProfileCallback=e}}function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r0,isLoggedInUser:!!document.querySelector('[data-testid="editProfileButton"'),screenName:e.screen_name,sensitiveMediaInProfile:r,shadowbanned:s,withheldInCountries:n}}},L=function(e){var t,r,n=e.parse(),s=U(n.user),i=!!n.possibly_sensitive,o=!1!==n.possibly_sensitive_editable,a=i&&!o,l="searchable";return a||s.user.shadowbanned?l="unsearchable":i&&(l="possiblyUnsearchable"),t=function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r=0;a--)(s=e[a])&&(o=(i<3?s(o):i>3?s(t,r,o):s(t,r))||o);return i>3&&o&&Object.defineProperty(t,r,o),o}Object.create,Object.create;let es=e=>(t,r)=>{void 0!==r?r.addInitializer(()=>{customElements.define(e,t)}):customElements.define(e,t)},ei=globalThis,eo=ei.ShadowRoot&&(void 0===ei.ShadyCSS||ei.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ea=Symbol(),el=new WeakMap;class ec{constructor(e,t,r){if(this._$cssResult$=!0,r!==ea)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(eo&&void 0===e){let r=void 0!==t&&1===t.length;r&&(e=el.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),r&&el.set(t,e))}return e}toString(){return this.cssText}}let ed=(e,...t)=>new ec(1===e.length?e[0]:t.reduce((t,r,n)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+e[n+1],e[0]),e,ea),eu=eo?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(let r of e.cssRules)t+=r.cssText;return(e=>new ec("string"==typeof e?e:e+"",void 0,ea))(t)})(e):e,{is:eh,defineProperty:ep,getOwnPropertyDescriptor:em,getOwnPropertyNames:eg,getOwnPropertySymbols:ef,getPrototypeOf:eb}=Object,ev=globalThis,ey=ev.trustedTypes,ew=ey?ey.emptyScript:"",eA=ev.reactiveElementPolyfillSupport,ex={toAttribute(e,t){switch(t){case Boolean:e=e?ew:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let r=e;switch(t){case Boolean:r=null!==e;break;case Number:r=null===e?null:Number(e);break;case Object:case Array:try{r=JSON.parse(e)}catch(e){r=null}}return r}},e_=(e,t)=>!eh(e,t),eS={attribute:!0,type:String,converter:ex,reflect:!1,useDefault:!1,hasChanged:e_};Symbol.metadata??=Symbol("metadata"),ev.litPropertyMetadata??=new WeakMap;class eC extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=eS){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let r=Symbol(),n=this.getPropertyDescriptor(e,r,t);void 0!==n&&ep(this.prototype,e,n)}}static getPropertyDescriptor(e,t,r){let{get:n,set:s}=em(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:n,set(t){let i=n?.call(this);s?.call(this,t),this.requestUpdate(e,i,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??eS}static _$Ei(){if(this.hasOwnProperty("elementProperties"))return;let e=eb(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty("finalized"))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty("properties")){let e=this.properties;for(let t of[...eg(e),...ef(e)])this.createProperty(t,e[t])}let e=this[Symbol.metadata];if(null!==e){let t=litPropertyMetadata.get(e);if(void 0!==t)for(let[e,r]of t)this.elementProperties.set(e,r)}for(let[e,t]of(this._$Eh=new Map,this.elementProperties)){let r=this._$Eu(e,t);void 0!==r&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e))for(let r of new Set(e.flat(1/0).reverse()))t.unshift(eu(r));else void 0!==e&&t.push(eu(e));return t}static _$Eu(e,t){let r=t.attribute;return!1===r?void 0:"string"==typeof r?r:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map;for(let t of this.constructor.elementProperties.keys())this.hasOwnProperty(t)&&(e.set(t,this[t]),delete this[t]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((e,t)=>{if(eo)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let r of t){let t=document.createElement("style"),n=ei.litNonce;void 0!==n&&t.setAttribute("nonce",n),t.textContent=r.cssText,e.appendChild(t)}})(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,r){this._$AK(e,r)}_$ET(e,t){let r=this.constructor.elementProperties.get(e),n=this.constructor._$Eu(e,r);if(void 0!==n&&!0===r.reflect){let s=(void 0!==r.converter?.toAttribute?r.converter:ex).toAttribute(t,r.type);this._$Em=e,null==s?this.removeAttribute(n):this.setAttribute(n,s),this._$Em=null}}_$AK(e,t){let r=this.constructor,n=r._$Eh.get(e);if(void 0!==n&&this._$Em!==n){let e=r.getPropertyOptions(n),s="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:ex;this._$Em=n,this[n]=s.fromAttribute(t,e.type)??this._$Ej?.get(n)??null,this._$Em=null}}requestUpdate(e,t,r){if(void 0!==e){let n=this.constructor,s=this[e];if(!(((r??=n.getPropertyOptions(e)).hasChanged??e_)(s,t)||r.useDefault&&r.reflect&&s===this._$Ej?.get(e)&&!this.hasAttribute(n._$Eu(e,r))))return;this.C(e,t,r)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:r,reflect:n,wrapped:s},i){r&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,i??t??this[e]),!0!==s||void 0!==i)||(this._$AL.has(e)||(this.hasUpdated||r||(t=void 0),this._$AL.set(e,t)),!0===n&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,r]of e){let{wrapped:e}=r,n=this[t];!0!==e||this._$AL.has(t)||void 0===n||this.C(t,void 0,r,n)}}let e=!1,t=this._$AL;try{(e=this.shouldUpdate(t))?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}}eC.elementStyles=[],eC.shadowRootOptions={mode:"open"},eC.elementProperties=new Map,eC.finalized=new Map,eA?.({ReactiveElement:eC}),(ev.reactiveElementVersions??=[]).push("2.1.0");let eE={attribute:!0,type:String,converter:ex,reflect:!1,hasChanged:e_};function e$(e){return(t,r)=>"object"==typeof r?((e=eE,t,r)=>{let{kind:n,metadata:s}=r,i=globalThis.litPropertyMetadata.get(s);if(void 0===i&&globalThis.litPropertyMetadata.set(s,i=new Map),"setter"===n&&((e=Object.create(e)).wrapped=!0),i.set(r.name,e),"accessor"===n){let{name:n}=r;return{set(r){let s=t.get.call(this);t.set.call(this,r),this.requestUpdate(n,s,e)},init(t){return void 0!==t&&this.C(n,void 0,e,t),t}}}if("setter"===n){let{name:n}=r;return function(r){let s=this[n];t.call(this,r),this.requestUpdate(n,s,e)}}throw Error("Unsupported decorator location: "+n)})(e,t,r):((e,t,r)=>{let n=t.hasOwnProperty(r);return t.constructor.createProperty(r,e),n?Object.getOwnPropertyDescriptor(t,r):void 0})(e,t,r)}function ek(e){return e$({...e,state:!0,attribute:!1})}let eT=(e,t,r)=>(r.configurable=!0,r.enumerable=!0,Reflect.decorate&&"object"!=typeof t&&Object.defineProperty(e,t,r),r);function eP(e,t){return(r,n,s)=>{let i=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}="object"==typeof n?r:s??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return eT(r,n,{get(){let r=e.call(this);return void 0===r&&(null!==(r=i(this))||this.hasUpdated)&&t.call(this,r),r}})}return eT(r,n,{get(){return i(this)}})}}let eO=globalThis,eI=eO.trustedTypes,eN=eI?eI.createPolicy("lit-html",{createHTML:e=>e}):void 0,ej="$lit$",eM=`lit$${Math.random().toFixed(9).slice(2)}$`,eR="?"+eM,eB=`<${eR}>`,eF=document,eD=()=>eF.createComment(""),eU=e=>null===e||"object"!=typeof e&&"function"!=typeof e,eL=Array.isArray,ez="[ \n\f\r]",eq=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,eH=/-->/g,eW=/>/g,eV=RegExp(`>|${ez}(?:([^\\s"'>=/]+)(${ez}*=${ez}*(?:[^ \f\r"'\`<>=]|("|')|))|$)`,"g"),eK=/'/g,eG=/"/g,eX=/^(?:script|style|textarea|title)$/i,eZ=e=>(t,...r)=>({_$litType$:e,strings:t,values:r}),eJ=eZ(1),eY=(eZ(2),eZ(3),Symbol.for("lit-noChange")),eQ=Symbol.for("lit-nothing"),e0=new WeakMap,e1=eF.createTreeWalker(eF,129);function e2(e,t){if(!eL(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==eN?eN.createHTML(t):t}class e5{constructor({strings:e,_$litType$:t},r){let n;this.parts=[];let s=0,i=0,o=e.length-1,a=this.parts,[l,c]=((e,t)=>{let r=e.length-1,n=[],s,i=2===t?"":3===t?"":"",o=eq;for(let t=0;t"===l[0]?(o=s??eq,c=-1):void 0===l[1]?c=-2:(c=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?eV:'"'===l[3]?eG:eK):o===eG||o===eK?o=eV:o===eH||o===eW?o=eq:(o=eV,s=void 0);let u=o===eV&&e[t+1].startsWith("/>")?" ":"";i+=o===eq?r+eB:c>=0?(n.push(a),r.slice(0,c)+ej+r.slice(c)+eM+u):r+eM+(-2===c?t:u)}return[e2(e,i+(e[r]||"")+(2===t?"":3===t?"":"")),n]})(e,t);if(this.el=e5.createElement(l,r),e1.currentNode=this.el.content,2===t||3===t){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(n=e1.nextNode())&&a.length0){n.textContent=eI?eI.emptyScript:"";for(let r=0;r2||""!==r[0]||""!==r[1]?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=eQ}_$AI(e,t=this,r,n){let s=this.strings,i=!1;if(void 0===s)(i=!eU(e=e3(this,e,t,0))||e!==this._$AH&&e!==eY)&&(this._$AH=e);else{let n,o,a=e;for(e=s[0],n=0;n{let n=r?.renderBefore??t,s=n._$litPart$;if(void 0===s){let e=r?.renderBefore??null;n._$litPart$=s=new e8(t.insertBefore(eD(),e),e,void 0,r??{})}return s._$AI(e),s})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return eY}}ts._$litElement$=!0,ts.finalized=!0,tn.litElementHydrateSupport?.({LitElement:ts});let ti=tn.litElementPolyfillSupport;ti?.({LitElement:ts}),(tn.litElementVersions??=[]).push("4.2.0");class to extends ts{connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}render(){return eJ``}}let ta=ed`:host,.shadow,.shadow::before,.shadow::after{border-radius:inherit;inset:0;position:absolute;transition-duration:inherit;transition-property:inherit;transition-timing-function:inherit}:host{display:flex;pointer-events:none;transition-property:box-shadow,opacity}.shadow::before,.shadow::after{content:"";transition-property:box-shadow,opacity;--_level: var(--md-elevation-level, 0);--_shadow-color: var(--md-elevation-shadow-color, var(--md-sys-color-shadow, #000))}.shadow::before{box-shadow:0px calc(1px*(clamp(0,var(--_level),1) + clamp(0,var(--_level) - 3,1) + 2*clamp(0,var(--_level) - 4,1))) calc(1px*(2*clamp(0,var(--_level),1) + clamp(0,var(--_level) - 2,1) + clamp(0,var(--_level) - 4,1))) 0px var(--_shadow-color);opacity:.3}.shadow::after{box-shadow:0px calc(1px*(clamp(0,var(--_level),1) + clamp(0,var(--_level) - 1,1) + 2*clamp(0,var(--_level) - 2,3))) calc(1px*(3*clamp(0,var(--_level),2) + 2*clamp(0,var(--_level) - 2,3))) calc(1px*(clamp(0,var(--_level),4) + 2*clamp(0,var(--_level) - 4,1))) var(--_shadow-color);opacity:.15} `,tl=class extends to{};tl.styles=[ta],tl=en([es("md-elevation")],tl);let tc=Symbol("attachableController");e=new MutationObserver(e=>{for(let t of e)t.target[tc]?.hostConnected()});class td{get htmlFor(){return this.host.getAttribute("for")}set htmlFor(e){null===e?this.host.removeAttribute("for"):this.host.setAttribute("for",e)}get control(){return this.host.hasAttribute("for")?this.htmlFor&&this.host.isConnected?this.host.getRootNode().querySelector(`#${this.htmlFor}`):null:this.currentControl||this.host.parentElement}set control(e){e?this.attach(e):this.detach()}constructor(t,r){this.host=t,this.onControlChange=r,this.currentControl=null,t.addController(this),t[tc]=this,e?.observe(t,{attributeFilter:["for"]})}attach(e){e!==this.currentControl&&(this.setCurrentControl(e),this.host.removeAttribute("for"))}detach(){this.setCurrentControl(null),this.host.setAttribute("for","")}hostConnected(){this.setCurrentControl(this.control)}hostDisconnected(){this.setCurrentControl(null)}setCurrentControl(e){this.onControlChange(this.currentControl,e),this.currentControl=e}}let tu=["focusin","focusout","pointerdown"];class th extends ts{constructor(){super(...arguments),this.visible=!1,this.inward=!1,this.attachableController=new td(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}handleEvent(e){if(!e[tp]){switch(e.type){default:return;case"focusin":this.visible=this.control?.matches(":focus-visible")??!1;break;case"focusout":case"pointerdown":this.visible=!1}e[tp]=!0}}onControlChange(e,t){for(let r of tu)e?.removeEventListener(r,this),t?.addEventListener(r,this)}update(e){e.has("visible")&&this.dispatchEvent(new Event("visibility-changed")),super.update(e)}}en([e$({type:Boolean,reflect:!0})],th.prototype,"visible",void 0),en([e$({type:Boolean,reflect:!0})],th.prototype,"inward",void 0);let tp=Symbol("handledByFocusRing"),tm=ed`:host{animation-delay:0s,calc(var(--md-focus-ring-duration, 600ms)*.25);animation-duration:calc(var(--md-focus-ring-duration, 600ms)*.25),calc(var(--md-focus-ring-duration, 600ms)*.75);animation-timing-function:cubic-bezier(0.2, 0, 0, 1);box-sizing:border-box;color:var(--md-focus-ring-color, var(--md-sys-color-secondary, #625b71));display:none;pointer-events:none;position:absolute}:host([visible]){display:flex}:host(:not([inward])){animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));inset:calc(-1*var(--md-focus-ring-outward-offset, 2px));outline:var(--md-focus-ring-width, 3px) solid currentColor}:host([inward]){animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border:var(--md-focus-ring-width, 3px) solid currentColor;inset:var(--md-focus-ring-inward-offset, 0px)}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes outward-shrink{from{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-shrink{from{border-width:var(--md-focus-ring-active-width, 8px)}}@media(prefers-reduced-motion){:host{animation:none}} `,tg=class extends th{};tg.styles=[tm],tg=en([es("md-focus-ring")],tg);let tf={ATTRIBUTE:1};class tb{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,r){this._$Ct=e,this._$AM=t,this._$Ci=r}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}let tv=(t=class extends tb{constructor(e){if(super(e),e.type!==tf.ATTRIBUTE||"class"!==e.name||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return" "+Object.keys(e).filter(t=>e[t]).join(" ")+" "}update(e,[t]){if(void 0===this.st){for(let r in this.st=new Set,void 0!==e.strings&&(this.nt=new Set(e.strings.join(" ").split(/\s/).filter(e=>""!==e))),t)t[r]&&!this.nt?.has(r)&&this.st.add(r);return this.render(t)}let r=e.element.classList;for(let e of this.st)e in t||(r.remove(e),this.st.delete(e));for(let e in t){let n=!!t[e];n===this.st.has(e)||this.nt?.has(e)||(n?(r.add(e),this.st.add(e)):(r.remove(e),this.st.delete(e)))}return eY}},(...e)=>({_$litDirective$:t,values:e})),ty={STANDARD:"cubic-bezier(0.2, 0, 0, 1)"};!function(e){e[e.INACTIVE=0]="INACTIVE",e[e.TOUCH_DELAY=1]="TOUCH_DELAY",e[e.HOLDING=2]="HOLDING",e[e.WAITING_FOR_CLICK=3]="WAITING_FOR_CLICK"}(n||(n={}));let tw=["click","contextmenu","pointercancel","pointerdown","pointerenter","pointerleave","pointerup"],tA=window.matchMedia("(forced-colors: active)");class tx extends ts{constructor(){super(...arguments),this.disabled=!1,this.hovered=!1,this.pressed=!1,this.rippleSize="",this.rippleScale="",this.initialSize=0,this.state=n.INACTIVE,this.checkBoundsAfterContextMenu=!1,this.attachableController=new td(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}render(){let e={hovered:this.hovered,pressed:this.pressed};return eJ`
`}update(e){e.has("disabled")&&this.disabled&&(this.hovered=!1,this.pressed=!1),super.update(e)}handlePointerenter(e){this.shouldReactToEvent(e)&&(this.hovered=!0)}handlePointerleave(e){this.shouldReactToEvent(e)&&(this.hovered=!1,this.state!==n.INACTIVE&&this.endPressAnimation())}handlePointerup(e){if(this.shouldReactToEvent(e)){if(this.state===n.HOLDING){this.state=n.WAITING_FOR_CLICK;return}if(this.state===n.TOUCH_DELAY){this.state=n.WAITING_FOR_CLICK,this.startPressAnimation(this.rippleStartEvent);return}}}async handlePointerdown(e){if(this.shouldReactToEvent(e)){if(this.rippleStartEvent=e,!this.isTouch(e)){this.state=n.WAITING_FOR_CLICK,this.startPressAnimation(e);return}(!this.checkBoundsAfterContextMenu||this.inBounds(e))&&(this.checkBoundsAfterContextMenu=!1,this.state=n.TOUCH_DELAY,await new Promise(e=>{setTimeout(e,150)}),this.state===n.TOUCH_DELAY&&(this.state=n.HOLDING,this.startPressAnimation(e)))}}handleClick(){if(!this.disabled){if(this.state===n.WAITING_FOR_CLICK)return void this.endPressAnimation();this.state===n.INACTIVE&&(this.startPressAnimation(),this.endPressAnimation())}}handlePointercancel(e){this.shouldReactToEvent(e)&&this.endPressAnimation()}handleContextmenu(){this.disabled||(this.checkBoundsAfterContextMenu=!0,this.endPressAnimation())}determineRippleSize(){let{height:e,width:t}=this.getBoundingClientRect(),r=Math.max(e,t),n=Math.max(.35*r,75),s=Math.floor(.2*r),i=Math.sqrt(t**2+e**2);this.initialSize=s,this.rippleScale=`${(i+10+n)/s}`,this.rippleSize=`${s}px`}getNormalizedPointerEventCoords(e){let{scrollX:t,scrollY:r}=window,{left:n,top:s}=this.getBoundingClientRect(),{pageX:i,pageY:o}=e;return{x:i-(t+n),y:o-(r+s)}}getTranslationCoordinates(e){let t,{height:r,width:n}=this.getBoundingClientRect(),s={x:(n-this.initialSize)/2,y:(r-this.initialSize)/2};return{startPoint:t={x:(t=e instanceof PointerEvent?this.getNormalizedPointerEventCoords(e):{x:n/2,y:r/2}).x-this.initialSize/2,y:t.y-this.initialSize/2},endPoint:s}}startPressAnimation(e){if(!this.mdRoot)return;this.pressed=!0,this.growAnimation?.cancel(),this.determineRippleSize();let{startPoint:t,endPoint:r}=this.getTranslationCoordinates(e),n=`${t.x}px, ${t.y}px`,s=`${r.x}px, ${r.y}px`;this.growAnimation=this.mdRoot.animate({top:[0,0],left:[0,0],height:[this.rippleSize,this.rippleSize],width:[this.rippleSize,this.rippleSize],transform:[`translate(${n}) scale(1)`,`translate(${s}) scale(${this.rippleScale})`]},{pseudoElement:"::after",duration:450,easing:ty.STANDARD,fill:"forwards"})}async endPressAnimation(){this.rippleStartEvent=void 0,this.state=n.INACTIVE;let e=this.growAnimation,t=1/0;if("number"==typeof e?.currentTime?t=e.currentTime:e?.currentTime&&(t=e.currentTime.to("ms").value),t>=225){this.pressed=!1;return}await new Promise(e=>{setTimeout(e,225-t)}),this.growAnimation===e&&(this.pressed=!1)}shouldReactToEvent(e){if(this.disabled||!e.isPrimary||this.rippleStartEvent&&this.rippleStartEvent.pointerId!==e.pointerId)return!1;if("pointerenter"===e.type||"pointerleave"===e.type)return!this.isTouch(e);let t=1===e.buttons;return this.isTouch(e)||t}inBounds({x:e,y:t}){let{top:r,left:n,bottom:s,right:i}=this.getBoundingClientRect();return e>=n&&e<=i&&t>=r&&t<=s}isTouch({pointerType:e}){return"touch"===e}async handleEvent(e){if(!tA?.matches)switch(e.type){case"click":this.handleClick();break;case"contextmenu":this.handleContextmenu();break;case"pointercancel":this.handlePointercancel(e);break;case"pointerdown":await this.handlePointerdown(e);break;case"pointerenter":this.handlePointerenter(e);break;case"pointerleave":this.handlePointerleave(e);break;case"pointerup":this.handlePointerup(e)}}onControlChange(e,t){for(let r of tw)e?.removeEventListener(r,this),t?.addEventListener(r,this)}}en([e$({type:Boolean,reflect:!0})],tx.prototype,"disabled",void 0),en([ek()],tx.prototype,"hovered",void 0),en([ek()],tx.prototype,"pressed",void 0),en([eP(".surface")],tx.prototype,"mdRoot",void 0);let t_=ed`:host{display:flex;margin:auto;pointer-events:none}:host([disabled]){display:none}@media(forced-colors: active){:host{display:none}}:host,.surface{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.surface{-webkit-tap-highlight-color:rgba(0,0,0,0)}.surface::before,.surface::after{content:"";opacity:0;position:absolute}.surface::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));inset:0;transition:opacity 15ms linear,background-color 15ms linear}.surface::after{background:radial-gradient(closest-side, var(--md-ripple-pressed-color, var(--md-sys-color-on-surface, #1d1b20)) max(100% - 70px, 65%), transparent 100%);transform-origin:center center;transition:opacity 375ms linear}.hovered::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-ripple-hover-opacity, 0.08)}.pressed::after{opacity:var(--md-ripple-pressed-opacity, 0.12);transition-duration:105ms} `,tS=class extends tx{};tS.styles=[t_],tS=en([es("md-ripple")],tS);let tC=["role","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaCurrent","ariaDisabled","ariaExpanded","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText"],tE=tC.map(tk);function t$(e){return tE.includes(e)}function tk(e){return e.replace("aria","aria-").replace(/Elements?/g,"").toLowerCase()}let tT=Symbol("privateIgnoreAttributeChangesFor");function tP(e){return`data-${e}`}function tO(e){return e.replace(/-\w/,e=>e[1].toUpperCase())}let tI=Symbol("internals"),tN=Symbol("privateInternals"),tj=!1;async function tM(){tj=!0,await null,tj=!1}let tR=function(e){var t;class r extends e{constructor(){super(...arguments),this[t]=new Set}attributeChangedCallback(e,t,r){if(!t$(e))return void super.attributeChangedCallback(e,t,r);if(this[tT].has(e))return;this[tT].add(e),this.removeAttribute(e),this[tT].delete(e);let n=tO(e);null===r?delete this.dataset[n]:this.dataset[n]=r,this.requestUpdate(tO(e),t)}getAttribute(e){return t$(e)?super.getAttribute(tP(e)):super.getAttribute(e)}removeAttribute(e){super.removeAttribute(e),t$(e)&&(super.removeAttribute(tP(e)),this.requestUpdate())}}return t=tT,function(e){for(let t of tC){let r=tk(t),n=tP(r),s=tO(r);e.createProperty(t,{attribute:r,noAccessor:!0}),e.createProperty(Symbol(n),{attribute:n,noAccessor:!0}),Object.defineProperty(e.prototype,t,{configurable:!0,enumerable:!0,get(){return this.dataset[s]??null},set(e){let r=this.dataset[s]??null;e!==r&&(null===e?delete this.dataset[s]:this.dataset[s]=e,this.requestUpdate(t,r))}})}}(r),r}(function(e){return class extends e{get[tI](){return this[tN]||(this[tN]=this.attachInternals()),this[tN]}}}(ts));class tB extends tR{get name(){return this.getAttribute("name")??""}set name(e){this.setAttribute("name",e)}get form(){return this[tI].form}constructor(){super(),this.disabled=!1,this.softDisabled=!1,this.href="",this.download="",this.target="",this.trailingIcon=!1,this.hasIcon=!1,this.type="submit",this.value="",this.addEventListener("click",this.handleClick.bind(this))}focus(){this.buttonElement?.focus()}blur(){this.buttonElement?.blur()}render(){let e=!this.href&&(this.disabled||this.softDisabled),t=this.href?this.renderLink():this.renderButton(),r=this.href?"link":"button";return eJ` ${this.renderElevationOrOutline?.()}
${t} `}renderButton(){let{ariaLabel:e,ariaHasPopup:t,ariaExpanded:r}=this;return eJ``}renderLink(){let{ariaLabel:e,ariaHasPopup:t,ariaExpanded:r}=this;return eJ`${this.renderContent()} `}renderContent(){let e=eJ``;return eJ` ${this.trailingIcon?eQ:e} ${this.trailingIcon?e:eQ} `}handleClick(e){if(!this.href&&this.softDisabled){e.stopImmediatePropagation(),e.preventDefault();return}e.currentTarget===e.target&&e.composedPath()[0]===e.target&&!e.target.disabled&&!function(e){let t=tj;return t&&(e.preventDefault(),e.stopImmediatePropagation()),tM(),t}(e)&&this.buttonElement&&(this.focus(),function(e){let t=new MouseEvent("click",{bubbles:!0});e.dispatchEvent(t)}(this.buttonElement))}handleSlotChange(){this.hasIcon=this.assignedIcons.length>0}}(()=>{tB.addInitializer(e=>{e.addEventListener("click",async t=>{let{type:r,[tI]:n}=e,{form:s}=n;if(s&&"button"!==r&&(await new Promise(e=>{setTimeout(e)}),!t.defaultPrevented)){if("reset"===r)return void s.reset();s.addEventListener("submit",t=>{Object.defineProperty(t,"submitter",{configurable:!0,enumerable:!0,get:()=>e})},{capture:!0,once:!0}),n.setFormValue(e.value),s.requestSubmit()}})})})(),tB.formAssociated=!0,tB.shadowRootOptions={mode:"open",delegatesFocus:!0},en([e$({type:Boolean,reflect:!0})],tB.prototype,"disabled",void 0),en([e$({type:Boolean,attribute:"soft-disabled",reflect:!0})],tB.prototype,"softDisabled",void 0),en([e$()],tB.prototype,"href",void 0),en([e$()],tB.prototype,"download",void 0),en([e$()],tB.prototype,"target",void 0),en([e$({type:Boolean,attribute:"trailing-icon",reflect:!0})],tB.prototype,"trailingIcon",void 0),en([e$({type:Boolean,attribute:"has-icon",reflect:!0})],tB.prototype,"hasIcon",void 0),en([e$()],tB.prototype,"type",void 0),en([e$({reflect:!0})],tB.prototype,"value",void 0),en([eP(".button")],tB.prototype,"buttonElement",void 0),en([function(e){return(t,r)=>{let{slot:n,selector:s}=e??{},i="slot"+(n?`[name=${n}]`:":not([name])");return eT(t,r,{get(){let t=this.renderRoot?.querySelector(i),r=t?.assignedElements(e)??[];return void 0===s?r:r.filter(e=>e.matches(s))}})}}({slot:"icon",flatten:!0})],tB.prototype,"assignedIcons",void 0);class tF extends tB{renderElevationOrOutline(){return eJ``}}let tD=ed`:host{--_container-color: var(--md-filled-button-container-color, var(--md-sys-color-primary, #6750a4));--_container-elevation: var(--md-filled-button-container-elevation, 0);--_container-height: var(--md-filled-button-container-height, 40px);--_container-shadow-color: var(--md-filled-button-container-shadow-color, var(--md-sys-color-shadow, #000));--_disabled-container-color: var(--md-filled-button-disabled-container-color, var(--md-sys-color-on-surface, #1d1b20));--_disabled-container-elevation: var(--md-filled-button-disabled-container-elevation, 0);--_disabled-container-opacity: var(--md-filled-button-disabled-container-opacity, 0.12);--_disabled-label-text-color: var(--md-filled-button-disabled-label-text-color, var(--md-sys-color-on-surface, #1d1b20));--_disabled-label-text-opacity: var(--md-filled-button-disabled-label-text-opacity, 0.38);--_focus-container-elevation: var(--md-filled-button-focus-container-elevation, 0);--_focus-label-text-color: var(--md-filled-button-focus-label-text-color, var(--md-sys-color-on-primary, #fff));--_hover-container-elevation: var(--md-filled-button-hover-container-elevation, 1);--_hover-label-text-color: var(--md-filled-button-hover-label-text-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-color: var(--md-filled-button-hover-state-layer-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-opacity: var(--md-filled-button-hover-state-layer-opacity, 0.08);--_label-text-color: var(--md-filled-button-label-text-color, var(--md-sys-color-on-primary, #fff));--_label-text-font: var(--md-filled-button-label-text-font, var(--md-sys-typescale-label-large-font, var(--md-ref-typeface-plain, Roboto)));--_label-text-line-height: var(--md-filled-button-label-text-line-height, var(--md-sys-typescale-label-large-line-height, 1.25rem));--_label-text-size: var(--md-filled-button-label-text-size, var(--md-sys-typescale-label-large-size, 0.875rem));--_label-text-weight: var(--md-filled-button-label-text-weight, var(--md-sys-typescale-label-large-weight, var(--md-ref-typeface-weight-medium, 500)));--_pressed-container-elevation: var(--md-filled-button-pressed-container-elevation, 0);--_pressed-label-text-color: var(--md-filled-button-pressed-label-text-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-color: var(--md-filled-button-pressed-state-layer-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-opacity: var(--md-filled-button-pressed-state-layer-opacity, 0.12);--_disabled-icon-color: var(--md-filled-button-disabled-icon-color, var(--md-sys-color-on-surface, #1d1b20));--_disabled-icon-opacity: var(--md-filled-button-disabled-icon-opacity, 0.38);--_focus-icon-color: var(--md-filled-button-focus-icon-color, var(--md-sys-color-on-primary, #fff));--_hover-icon-color: var(--md-filled-button-hover-icon-color, var(--md-sys-color-on-primary, #fff));--_icon-color: var(--md-filled-button-icon-color, var(--md-sys-color-on-primary, #fff));--_icon-size: var(--md-filled-button-icon-size, 18px);--_pressed-icon-color: var(--md-filled-button-pressed-icon-color, var(--md-sys-color-on-primary, #fff));--_container-shape-start-start: var(--md-filled-button-container-shape-start-start, var(--md-filled-button-container-shape, var(--md-sys-shape-corner-full, 9999px)));--_container-shape-start-end: var(--md-filled-button-container-shape-start-end, var(--md-filled-button-container-shape, var(--md-sys-shape-corner-full, 9999px)));--_container-shape-end-end: var(--md-filled-button-container-shape-end-end, var(--md-filled-button-container-shape, var(--md-sys-shape-corner-full, 9999px)));--_container-shape-end-start: var(--md-filled-button-container-shape-end-start, var(--md-filled-button-container-shape, var(--md-sys-shape-corner-full, 9999px)));--_leading-space: var(--md-filled-button-leading-space, 24px);--_trailing-space: var(--md-filled-button-trailing-space, 24px);--_with-leading-icon-leading-space: var(--md-filled-button-with-leading-icon-leading-space, 16px);--_with-leading-icon-trailing-space: var(--md-filled-button-with-leading-icon-trailing-space, 24px);--_with-trailing-icon-leading-space: var(--md-filled-button-with-trailing-icon-leading-space, 24px);--_with-trailing-icon-trailing-space: var(--md-filled-button-with-trailing-icon-trailing-space, 16px)} `,tU=ed`md-elevation{transition-duration:280ms}:host(:is([disabled],[soft-disabled])) md-elevation{transition:none}md-elevation{--md-elevation-level: var(--_container-elevation);--md-elevation-shadow-color: var(--_container-shadow-color)}:host(:focus-within) md-elevation{--md-elevation-level: var(--_focus-container-elevation)}:host(:hover) md-elevation{--md-elevation-level: var(--_hover-container-elevation)}:host(:active) md-elevation{--md-elevation-level: var(--_pressed-container-elevation)}:host(:is([disabled],[soft-disabled])) md-elevation{--md-elevation-level: var(--_disabled-container-elevation)} `,tL=ed`:host{border-start-start-radius:var(--_container-shape-start-start);border-start-end-radius:var(--_container-shape-start-end);border-end-start-radius:var(--_container-shape-end-start);border-end-end-radius:var(--_container-shape-end-end);box-sizing:border-box;cursor:pointer;display:inline-flex;gap:8px;min-height:var(--_container-height);outline:none;padding-block:calc((var(--_container-height) - max(var(--_label-text-line-height),var(--_icon-size)))/2);padding-inline-start:var(--_leading-space);padding-inline-end:var(--_trailing-space);place-content:center;place-items:center;position:relative;font-family:var(--_label-text-font);font-size:var(--_label-text-size);line-height:var(--_label-text-line-height);font-weight:var(--_label-text-weight);text-overflow:ellipsis;text-wrap:nowrap;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);vertical-align:top;--md-ripple-hover-color: var(--_hover-state-layer-color);--md-ripple-pressed-color: var(--_pressed-state-layer-color);--md-ripple-hover-opacity: var(--_hover-state-layer-opacity);--md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity)}md-focus-ring{--md-focus-ring-shape-start-start: var(--_container-shape-start-start);--md-focus-ring-shape-start-end: var(--_container-shape-start-end);--md-focus-ring-shape-end-end: var(--_container-shape-end-end);--md-focus-ring-shape-end-start: var(--_container-shape-end-start)}:host(:is([disabled],[soft-disabled])){cursor:default;pointer-events:none}.button{border-radius:inherit;cursor:inherit;display:inline-flex;align-items:center;justify-content:center;border:none;outline:none;-webkit-appearance:none;vertical-align:middle;background:rgba(0,0,0,0);text-decoration:none;min-width:calc(64px - var(--_leading-space) - var(--_trailing-space));width:100%;z-index:0;height:100%;font:inherit;color:var(--_label-text-color);padding:0;gap:inherit;text-transform:inherit}.button::-moz-focus-inner{padding:0;border:0}:host(:hover) .button{color:var(--_hover-label-text-color)}:host(:focus-within) .button{color:var(--_focus-label-text-color)}:host(:active) .button{color:var(--_pressed-label-text-color)}.background{background-color:var(--_container-color);border-radius:inherit;inset:0;position:absolute}.label{overflow:hidden}:is(.button,.label,.label slot),.label ::slotted(*){text-overflow:inherit}:host(:is([disabled],[soft-disabled])) .label{color:var(--_disabled-label-text-color);opacity:var(--_disabled-label-text-opacity)}:host(:is([disabled],[soft-disabled])) .background{background-color:var(--_disabled-container-color);opacity:var(--_disabled-container-opacity)}@media(forced-colors: active){.background{border:1px solid CanvasText}:host(:is([disabled],[soft-disabled])){--_disabled-icon-color: GrayText;--_disabled-icon-opacity: 1;--_disabled-container-opacity: 1;--_disabled-label-text-color: GrayText;--_disabled-label-text-opacity: 1}}:host([has-icon]:not([trailing-icon])){padding-inline-start:var(--_with-leading-icon-leading-space);padding-inline-end:var(--_with-leading-icon-trailing-space)}:host([has-icon][trailing-icon]){padding-inline-start:var(--_with-trailing-icon-leading-space);padding-inline-end:var(--_with-trailing-icon-trailing-space)}::slotted([slot=icon]){display:inline-flex;position:relative;writing-mode:horizontal-tb;fill:currentColor;flex-shrink:0;color:var(--_icon-color);font-size:var(--_icon-size);inline-size:var(--_icon-size);block-size:var(--_icon-size)}:host(:hover) ::slotted([slot=icon]){color:var(--_hover-icon-color)}:host(:focus-within) ::slotted([slot=icon]){color:var(--_focus-icon-color)}:host(:active) ::slotted([slot=icon]){color:var(--_pressed-icon-color)}:host(:is([disabled],[soft-disabled])) ::slotted([slot=icon]){color:var(--_disabled-icon-color);opacity:var(--_disabled-icon-opacity)}.touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}:host([touch-target=wrapper]){margin:max(0px,(48px - var(--_container-height))/2) 0}:host([touch-target=none]) .touch{display:none} `,tz=class extends tF{};function tq(e,t,r){return(tq="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=tH(e)););return e}(e,t);if(n){var s=Object.getOwnPropertyDescriptor(n,t);return s.get?s.get.call(r||e):s.value}})(e,t,r||e)}function tH(e){return(tH=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function tW(e,t){return(tW=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function tV(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function tK(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(tK=function(){return!!e})()}function tG(e,t,r,n){var s,i=arguments.length,o=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(o=(i<3?s(o):i>3?s(t,r,o):s(t,r))||o);return i>3&&o&&Object.defineProperty(t,r,o),o}function tX(){var e=tV(["']);return tX=function(){return e},e}function tZ(){var e=tV(["
  • "]);return tZ=function(){return e},e}function tJ(){var e=tV(["\n \n "]);return tJ=function(){return e},e}function tY(){var e=tV(['
      \n ',"\n
    "]);return tY=function(){return e},e}function tQ(){var e=tV(["
    "]);return tQ=function(){return e},e}function t0(){var e=tV(["']);return t0=function(){return e},e}function t1(){var e=tV(["\n div");if(!t)throw Error("Failed to get the tombstone's grandchild element.");var r=t6(t);if(!t4(r))throw Error("Type of grandchild props is invalid.");return[e,r]},e}(),re=function(){function e(t){if(!(this instanceof e))throw TypeError("Cannot call a class as a function");this.tweet=t}return e.prototype.parse=function(){return this.tweet.props},e}(),rt=function(){function e(t,r){let n;var s,i=this;if(!(this instanceof e))throw TypeError("Cannot call a class as a function");this.settings=t,this.onMessageCallback=r;var o=new F;o.onNewTweet(function(e){i.checkTweet(e),i.timelineObserverCallback()}),o.onNewProfile(function(e){i.checkProfile(e)});var a=$();e.updateColorScheme(a),s=e.updateColorScheme.bind(this),n=$(),new MutationObserver(()=>{let e=$();e!==n&&(n=e,s(e))}).observe(document.body,{attributeFilter:["style"],attributes:!0})}var t=e.prototype;return t.checkProfile=function(e){if(document.querySelector("[data-testid='editProfileButton']")||this.settings.enableForOtherUsersProfiles){var t,r=U(e.props);if(r.user.hasAnyProblem||this.settings.showMessagesInUnproblematicProfiles){var n=new t3(et(r,this.onMessageCallback,this.settings)),s=null!=(t=document.querySelector("[data-testid='UserDescription']"))?t:document.querySelector("[data-testid='UserName']");if(!s)throw Error("Failed to get user description of profile");n.insertAdjacentElement(s,"afterend")}}},t.checkTweet=function(e){var t,r,n,s=L(new re(e));if((e.metadata.isPostedByCurrentUser||this.settings.enableForOtherUsersTweets)&&(s.tweet.hasAnyProblem||this.settings.showMessagesInUnproblematicTweets)){if(!e.metadata.isFocalMode&&this.settings.enableCompactMode){e.element.dataset.sbCompactMode=s.tweet.hasAnyProblem?"red":"green";return}var i=new t3(er(e,s,this.onMessageCallback,this.settings)),o=e.metadata.isFocalMode?null==(n=e.element.querySelector("div[dir]:has(a[href^='/'])"))||null==(r=n.parentElement)||null==(t=r.parentElement)?void 0:t.parentElement:e.element.querySelector("div[role='group'][id]");if(!o)throw Error("Failed to get landmark element of tweet");var a=e.metadata.isFocalMode?"afterend":"beforebegin";i.insertAdjacentElement(o,a)}},t.necromancer=function(e){e.setAttribute(v,"true");var t=z(new t7(e).parse());if(t){var r=document.createElement("a");r.href="https://twitter.com/i/status/".concat(t),r.target="_blank",r.setAttribute(y,"viewTweet"),r.classList.add("shadowban-scanner-tombstone-necromancer");var n=e.querySelector("a");if(!n)throw Error("Failed to get help link");r.style.color=getComputedStyle(n).color,n.insertAdjacentElement("afterend",r),this.onMessageCallback()}},t.timelineObserverCallback=function(){var e=document.querySelectorAll("[data-testid='cellInnerDiv']:not([".concat(v,"])")),t=!0,r=!1,n=void 0;try{for(var s,i=e[Symbol.iterator]();!(t=(s=i.next()).done);t=!0){var o=s.value;o.setAttribute(v,"true"),o.querySelector("a[href='https://help.twitter.com/rules-and-policies/notices-on-twitter']")&&this.necromancer(o)}}catch(e){r=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(r)throw n}}},e.updateColorScheme=function(e){document.body.setAttribute("data-color-scheme","light"===e?"light":"dark")},e}();r(150);var rr={alwaysDetailedView:!1,enableColorAccessibilityMode:!1,enableCompactMode:!1,enableForOtherUsersProfiles:!0,enableForOtherUsersTweets:!0,enableOnXPro:!0,showMessagesInUnproblematicProfiles:!0,showMessagesInUnproblematicTweets:!1,showNotesInMessages:!0,showReleaseNotes:!0,showTweetButton:!0};function rn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r');t=t.replaceAll(a,d)}}catch(e){n=!0,s=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw s}}return t},t.translateElements=function(){var e=this,t=rs(document.querySelectorAll("[".concat(y,"]"))),r=document.querySelectorAll("sbs-message[".concat(w,"]")),n=!0,s=!1,i=void 0;try{for(var o,a=r[Symbol.iterator]();!(n=(o=a.next()).done);n=!0){var l=o.value,c=l.shadowRoot;if(!c)return;var d=c.querySelectorAll("[".concat(y,"]"));t.push.apply(t,rs(d)),d.length&&l.removeAttribute(w)}}catch(e){s=!0,i=e}finally{try{n||null==a.return||a.return()}finally{if(s)throw i}}t.forEach(function(t){var r=t.getAttribute(y),n=t.getAttribute("data-sb-translation-substitutions"),s=n?JSON.parse(n):null,i=null!==s&&(void 0===s||"string"==typeof s||Array.isArray(s)&&s.every(function(e){return"string"==typeof e}))?e.translationFunction(r,s):e.translationFunction(r);t.hasAttribute("data-sb-enable-twemoji")?t.innerHTML=e.convertEmojiToTwemoji(i):t.innerHTML=i,t.removeAttribute(y)})},e}();function ro(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r详细说明)。"},"accountIsWithheldInCountries":{"message":"\uD83D\uDEAB此账户被以下国家/地区屏蔽(详细说明):$1"},"tweetIsNotFlaggedAsSensitive":{"message":"✅此推文没有标记为敏感内容。"},"tweetIsFlaggedAsSensitive":{"message":"\uD83D\uDEAB此推文已被标记为敏感内容。"},"tweetIsNotAgeRestricted":{"message":"✅此推文没有年龄限制。"},"tweetIsAgeRestricted":{"message":"\uD83D\uDEAB此推文有年龄限制。"},"tweetIsSearchable":{"message":"✅此推文会显示在搜索结果中。"},"tweetMayNotBeSearchable":{"message":"⚠️根据查看者的设置,此推文可能不会显示在搜索结果中。"},"tweetIsNotSearchable":{"message":"\uD83D\uDEAB此推文可能不会显示在搜索结果中。"},"falsePositivesAndFalseNegativesOccur":{"message":"Shadowban Scanner 和其他类似功能的工具一样,可能会产生误判的情况。有关扩展运作方式的详细信息,请参考这里。"},"translatedByAI":{"message":"","description":"This field is used if the translation was done by AI. Otherwise, set this field to an empty string. Example sentence: \\"Translated from Japanese to by AI. Please notify @keita_roboin\'s DM or GitHub repository if there are any unnatural points.\\""},"showMore":{"message":"▶显示更多"},"tweetTheResults":{"message":"分享结果"},"viewTweet":{"message":"查看推文"},"settingsWhereToDisplayCheckResults":{"message":"显示检查结果的位置"},"settingsAlwaysShowMessagesIfYourAccountShadowbanned":{"message":"如果你的账号被 shadowban,消息会一直显示。"},"settingsShowMessagesInUnproblematicTweets":{"message":"在没有问题的推文中显示"},"settingsShowMessagesInUnproblematicProfiles":{"message":"在没有问题的账户的个人资料中显示"},"settingsEnableForOtherUsersTweets":{"message":"在其他账户的推文中显示"},"settingsEnableForOtherUsersProfiles":{"message":"在其他账户的个人资料中显示"},"settingsOtherSettings":{"message":"其他设置"},"settingsEnableCompactMode":{"message":"启用精简模式"},"settingsAlwaysDetailedView":{"message":"始终显示详细信息"},"settingsShowNotesInMessages":{"message":"在消息底部显示注释"},"settingsShowTweetButton":{"message":"显示分享按钮"},"settingsEnableOnXPro":{"message":"在 X Pro 上执行"},"settingsShowReleaseNotes":{"message":"更新后显示发行说明"},"settingsEnableColorAccessibilityMode":{"message":"启用色盲模式"},"settingsPleaseReload":{"message":"如果更改过扩展设置,请重新加载 Twitter/X 页面"},"settingsPrivacyPolicy":{"message":"隐私政策"},"settingsOpenSourceLicenses":{"message":"开放源代码许可"},"settingsSupportDevelopment":{"message":"支持开发"},"settingsFollowTheDeveloper":{"message":"关注开发者"},"privacyPolicyPageTitle":{"message":"隐私政策 - Shadowban Scanner"},"privacyPolicy":{"message":"隐私政策"},"privacyPolicyText":{"message":"此扩展原则上会在用户的电脑上处理所有数据,不会将数据发送到外部服务器,此扩展亦不会在未经用户许可的情况下使用登录凭证访问 Twitter/X 的内部 API。对于此扩展没有对应处理的网页,将适用各自的使用条款和隐私政策。"},"initialSetup":{"message":"初始设置 - Shadowban Scanner"},"letsStartWithASimpleInitialSetup":{"message":"先从简单的初始设置开始吧"},"pleaseSelectOneOfThem":{"message":"请选择其中一个,这个设置之后可以再更改。"},"displayForAllTweetsAndAccounts":{"message":"显示所有推文和账户的检查结果"},"displayOnlyForProblematicTweets":{"message":"仅显示问题推文和问题账户的检查结果"},"displayOnlyInYourOwnTweets":{"message":"仅显示我自己的推文的检查结果"},"displayInAllUsersTweets":{"message":"显示所有账户发布的推文的检查结果"},"back":{"message":"返回"},"next":{"message":"下一步"},"initialSetupCompleted":{"message":"已完成初始设置!是否要打开使用说明?"},"open":{"message":"打开"},"exitWithoutOpening":{"message":"不需要并关闭"}}'))})()})();